/* Minification failed. Returning unminified contents.
(53639,13-14): run-time error JS1005: Expected '(': {
(53641,9-15): run-time error JS1009: Expected '}': return
(53641,9-15): run-time error JS1006: Expected ')': return
(53641,9-15): run-time error JS1008: Expected '{': return
(54039,27-35): run-time error JS1006: Expected ')': function
(54039,42): run-time error JS1004: Expected ';'
(54296,26): run-time error JS1004: Expected ';'
(54343,26): run-time error JS1004: Expected ';'
(54344,26): run-time error JS1004: Expected ';'
(54345,26): run-time error JS1004: Expected ';'
(54441,30): run-time error JS1004: Expected ';'
(54444,30): run-time error JS1004: Expected ';'
(54447,30): run-time error JS1004: Expected ';'
(54450,30): run-time error JS1004: Expected ';'
(54453,30): run-time error JS1004: Expected ';'
(54456,30): run-time error JS1004: Expected ';'
(54459,26): run-time error JS1004: Expected ';'
(54653,14-15): run-time error JS1195: Expected expression: )
(54792,33-41): run-time error JS1006: Expected ')': function
(54792,71): run-time error JS1004: Expected ';'
(54798,25): run-time error JS1004: Expected ';'
(54849,14-15): run-time error JS1195: Expected expression: )
(54849,15-16): run-time error JS1195: Expected expression: .
(54979,28-36): run-time error JS1006: Expected ')': function
(54979,43): run-time error JS1004: Expected ';'
(55689,22): run-time error JS1004: Expected ';'
(55692,10-11): run-time error JS1195: Expected expression: )
(56243,90-98): run-time error JS1006: Expected ')': function
(56243,101): run-time error JS1004: Expected ';'
(56244,14): run-time error JS1004: Expected ';'
(56252,6-7): run-time error JS1195: Expected expression: )
(57098,6): run-time error JS1004: Expected ';'
(57102,29): run-time error JS1004: Expected ';'
(57125,6): run-time error JS1004: Expected ';'
(57130,21): run-time error JS1004: Expected ';'
(57139,6): run-time error JS1004: Expected ';'
(57141,27): run-time error JS1004: Expected ';'
(57181,42-50): run-time error JS1006: Expected ')': function
(57181,57): run-time error JS1004: Expected ';'
(57218,49): run-time error JS1004: Expected ';'
(57308,49): run-time error JS1004: Expected ';'
(57341,49): run-time error JS1004: Expected ';'
(57421,18-19): run-time error JS1195: Expected expression: )
(58142,72-80): run-time error JS1006: Expected ')': function
(58142,84): run-time error JS1004: Expected ';'
(58155,18): run-time error JS1004: Expected ';'
(58158,6-7): run-time error JS1195: Expected expression: )
(58161,6): run-time error JS1004: Expected ';'
(58399,14): run-time error JS1004: Expected ';'
(58928,89-97): run-time error JS1006: Expected ')': function
(58928,100): run-time error JS1004: Expected ';'
(58929,14): run-time error JS1004: Expected ';'
(58936,6-7): run-time error JS1195: Expected expression: )
(59065,6): run-time error JS1004: Expected ';'
(59078,22): run-time error JS1004: Expected ';'
(59392,94-102): run-time error JS1006: Expected ')': function
(59392,105): run-time error JS1004: Expected ';'
(59424,26): run-time error JS1004: Expected ';'
(59432,26): run-time error JS1004: Expected ';'
(59438,26): run-time error JS1004: Expected ';'
(59450,26): run-time error JS1004: Expected ';'
(59458,26): run-time error JS1004: Expected ';'
(59471,26): run-time error JS1004: Expected ';'
(59475,26): run-time error JS1004: Expected ';'
(59565,6-7): run-time error JS1195: Expected expression: )
(59600,6): run-time error JS1004: Expected ';'
(59617,25): run-time error JS1004: Expected ';'
(59832,92-100): run-time error JS1006: Expected ')': function
(59832,103): run-time error JS1004: Expected ';'
(59847,18): run-time error JS1004: Expected ';'
(59848,18): run-time error JS1004: Expected ';'
(59912,6-7): run-time error JS1195: Expected expression: )
(59941,91-99): run-time error JS1006: Expected ')': function
(59941,102): run-time error JS1004: Expected ';'
(59953,18): run-time error JS1004: Expected ';'
(59973,6-7): run-time error JS1195: Expected expression: )
(60166,6): run-time error JS1004: Expected ';'
(60187,37): run-time error JS1004: Expected ';'
(60416,6): run-time error JS1004: Expected ';'
(60512,37): run-time error JS1004: Expected ';'
(60627,38): run-time error JS1004: Expected ';'
(60822,37): run-time error JS1004: Expected ';'
(60864,34): run-time error JS1004: Expected ';'
(61074,6): run-time error JS1004: Expected ';'
(61079,29): run-time error JS1004: Expected ';'
(61240,76-84): run-time error JS1006: Expected ')': function
(61240,92): run-time error JS1004: Expected ';'
(61244,14): run-time error JS1004: Expected ';'
(61245,6-7): run-time error JS1195: Expected expression: )
(61246,69-77): run-time error JS1006: Expected ')': function
(61246,85): run-time error JS1004: Expected ';'
(61290,40): run-time error JS1004: Expected ';'
(61292,30): run-time error JS1004: Expected ';'
(61297,26): run-time error JS1004: Expected ';'
(61305,22): run-time error JS1004: Expected ';'
(61337,48): run-time error JS1004: Expected ';'
(61339,34): run-time error JS1004: Expected ';'
(61345,30): run-time error JS1004: Expected ';'
(61355,26): run-time error JS1004: Expected ';'
(61407,6-7): run-time error JS1195: Expected expression: )
(61410,89-97): run-time error JS1006: Expected ')': function
(61410,100): run-time error JS1004: Expected ';'
(61417,18): run-time error JS1004: Expected ';'
(61418,18): run-time error JS1004: Expected ';'
(61421,22): run-time error JS1004: Expected ';'
(61423,22): run-time error JS1004: Expected ';'
(61426,6-7): run-time error JS1195: Expected expression: )
(61428,70-78): run-time error JS1006: Expected ')': function
(61428,81): run-time error JS1004: Expected ';'
(61444,22): run-time error JS1004: Expected ';'
(61448,22): run-time error JS1004: Expected ';'
(61472,26): run-time error JS1004: Expected ';'
(61476,26): run-time error JS1004: Expected ';'
(61488,6-7): run-time error JS1195: Expected expression: )
(61851,6): run-time error JS1004: Expected ';'
(64205,81-89): run-time error JS1006: Expected ')': function
(64205,92): run-time error JS1004: Expected ';'
(64711,18): run-time error JS1004: Expected ';'
(64720,6-7): run-time error JS1195: Expected expression: )
(64721,94-102): run-time error JS1006: Expected ')': function
(64721,105): run-time error JS1004: Expected ';'
(64725,6-7): run-time error JS1195: Expected expression: )
(64769,6): run-time error JS1004: Expected ';'
(64867,30): run-time error JS1004: Expected ';'
(65079,6): run-time error JS1004: Expected ';'
(65081,27): run-time error JS1004: Expected ';'
(65082,23): run-time error JS1004: Expected ';'
(65454,100-108): run-time error JS1006: Expected ')': function
(65454,111): run-time error JS1004: Expected ';'
(65467,26): run-time error JS1004: Expected ';'
(65485,22): run-time error JS1004: Expected ';'
(65491,10-11): run-time error JS1195: Expected expression: )
(67198,64-72): run-time error JS1006: Expected ')': function
(67198,75): run-time error JS1004: Expected ';'
(67210,22): run-time error JS1004: Expected ';'
(67255,10-11): run-time error JS1195: Expected expression: )
(68597,6): run-time error JS1004: Expected ';'
(68603,34): run-time error JS1004: Expected ';'
(68649,6): run-time error JS1004: Expected ';'
(68678,42): run-time error JS1004: Expected ';'
(69522,6): run-time error JS1004: Expected ';'
(69790,14): run-time error JS1004: Expected ';'
(69846,14): run-time error JS1004: Expected ';'
(69847,14): run-time error JS1004: Expected ';'
(69848,14): run-time error JS1004: Expected ';'
(69944,18): run-time error JS1004: Expected ';'
(69947,18): run-time error JS1004: Expected ';'
(69950,18): run-time error JS1004: Expected ';'
(69953,18): run-time error JS1004: Expected ';'
(69956,18): run-time error JS1004: Expected ';'
(69959,18): run-time error JS1004: Expected ';'
(69962,14): run-time error JS1004: Expected ';'
(80298,30-33): run-time error JS1009: Expected '}': ...
(80298,29): run-time error JS1004: Expected ';'
(80298,46): run-time error JS1004: Expected ';'
(80298,46-47): run-time error JS1195: Expected expression: :
(80301,5-6): run-time error JS1006: Expected ')': }
(80300,10): run-time error JS1004: Expected ';'
(80301,6-7): run-time error JS1195: Expected expression: )
 */
var xhrSessionVars = [];
var sessionVarsStatus = 0;
var USE_NEW_VERIFICATION_CODE_FLOW = 1;

$(document).ready(function () {
    set_llamapi_environment();
    set_info_sharing_portal_plus_page();
    load_activation_sharing_portal_settings();
    setImagesForAlerts();
    event_for_open_modals();
    validate_cookie_changes();
    load_locale_for_numbers();

});

function escapeRegExp(str) {
    return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}


function load_locale_for_numbers() {
    window.digitGroupSeparator = ',';
    window.decimalCharacter = '.';

    if ($('body').find('input[name="NumberDecimalSeparator"]').length>0) {
        window.decimalCharacter = $('body').find('input[name="NumberDecimalSeparator"]').val();
    }

    if ($('body').find('input[name="NumberGroupSeparator"]').length > 0) {
        window.digitGroupSeparator = $('body').find('input[name="NumberGroupSeparator"]').val();
    }
    
}



function initiate_jquery_validate_reveal(formToValidate, idForm) {

    let formValidate = formToValidate.validate();
    if (formValidate !== null && formValidate !== undefined) {
        formValidate.resetForm();
    }


    jQuery.validator.addMethod("noSpaces", function (value, element) {
        return $.trim(value).length > 0;
    }, window.translation.field_required);

    var objValidate = {
        rules: {
        },
        messages: {
        }
    };
    //Push all inputs to objValidate
    formToValidate.find("input, select, textarea").each(function (item) {
        if ($(this).attr("data-required") === "true") {

            var name = $(this).attr("name");
            var type = $(this).attr("data-type");
            var equalTo = $(this).attr("data-equal-to");
            var labelName = $(this).parents(".row").first().find('label').first().text();
            var messageRequired = (labelName.length > 25) ? window.translation.field_required : labelName + ' ' + window.translation.is_required;

            objValidate.rules[name] = "noSpaces";
            objValidate.messages[name] = messageRequired;
            if (type) {
                if (type === 'email' || type === 'date') {
                    objValidate.rules[name] = {
                        "required": true
                    }
                    objValidate.messages[name] = {
                        "required": messageRequired
                    }
                    objValidate.rules[name][type] = true;

                    if (type === 'email') {
                        objValidate.messages[name][type] = translation.please_complete_valid_email;
                    }
                    else {
                        objValidate.messages[name][type] = translation.please_complete_valid_date;
                    }
                }
            }
            if ($(this).attr("data-val-range-specific") === "true") {
                rules["rangeorspecific"] = true;
                messages["rangeorspecific"] = window.translation.currency_format_message + " 16 " + window.translation.or_word + " 50-65";
            }
            if (equalTo) {
                var labelFieldEqual = $("#" + equalTo).parent().parent().find('label').first().text();

                if ($(this).attr('type') === 'password') {
                    var pwmsg = translation.password_form_error_msg;
                    objValidate.rules[name] = {
                        "required": true,
                        "equalTo": "#" + equalTo,
                        "regex": /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&-_+=])[A-Za-z\d$@$!%*#?&]{10,}$/
                    }

                    objValidate.messages[name] = {
                        "required": messageRequired,
                        "equalTo": translation.field_must_be_equal + " " + labelFieldEqual,
                        "regex": pwmsg
                    }
                } else {
                    objValidate.rules[name] = {
                        "required": true,
                        "equalTo": "#" + equalTo
                    }

                    objValidate.messages[name] = {
                        "required": messageRequired,
                        "equalTo": translation.field_must_be_equal + " " + labelFieldEqual
                    }
                }
            }
            if ($(this).hasClass('regex_url')) {
                var pwmsg = translation.characters_not_allowed + ': " < > # % { } | \ ^ ~ [ ] `';
                objValidate.rules[name] = {
                    "required": true,
                    "regex": /^[^"#%|\\^~`<>\{\}\[\]]+$/
                }

                objValidate.messages[name] = {
                    "regex": pwmsg,
                    "required": messageRequired
                }
            }
        }
    });

    //On change event to checkbox, radios and multiselect
    var selector = 'form#' + idForm + ' input[type="checkbox"][data-required="true"], form#' + idForm + ' input[type="radio"][data-required="true"], form#' + idForm + ' select[multiple="multiple"][data-required="true"]';

    $(document).on('change', selector, function () {
        if ($(this).val()) {
            if ($(this).parents(".row").first().find('label.error-custom').length) {
                $(this).parents(".row").first().find('label.error-custom').parent().remove();
            }
        }
    });

    formToValidate.validate(objValidate);

}


function returnCookieValue() {
    var cookieValue = getCookie('current-data-selected');
    if (cookieValue !== '') {
        try {
            var stringValue = atob(cookieValue);
            var data = JSON.parse(stringValue);
            return data;
        } catch (e) {
            console.log(e);
        }
    }
    return null;
}

function updateSessionStorageValueForSession(dataObject) {
    var values = JSON.stringify(dataObject);
    sessionStorage.setItem('current-data-selected', values);
}

function retrieveSessionStorageValueForSession() {
    var values = sessionStorage.getItem('current-data-selected');
    if (values !== null && values !== undefined && values !== '') {
        var dataObject = JSON.parse(values);
        return dataObject;
    }
    return null;
}

function validate_cookie_changes() {
    var dataCookie = returnCookieValue();
    if (dataCookie !== null) {
        updateSessionStorageValueForSession(dataCookie);
    }

    document.addEventListener('visibilitychange', function () {
        if (document.visibilityState === 'visible') {
            var isCmsSession = false;
            var isGlobal = false;
            var isLogged = false;

            var currentData = returnCookieValue();
            if (currentData !== null) {
                isCmsSession = (currentData.isCMSAdmin === '1' ? true : false);
                isGlobal = (currentData.isGlobal === '1' ? true : false);
                isLogged = (currentData.isLogged === '1' ? true : false);
            } else {
                currentData = {
                    isCMSAdmin: "0",
                    isGlobal: "0",
                    isLogged: "0"
                };
            }

            var isCmsSessionOld = false;
            var isGlobalOld = false;
            var isLoggedOld = false;

            var oldData = retrieveSessionStorageValueForSession();
            if (oldData !== null) {
                isCmsSessionOld = (oldData.isCMSAdmin === '1' ? true : false);
                isGlobalOld = (oldData.isGlobal === '1' ? true : false);
                isLoggedOld = (oldData.isLogged === '1' ? true : false);
            }

            if (isCmsSession != isCmsSessionOld || isGlobal != isGlobalOld || isLogged != isLoggedOld) {
                updateSessionStorageValueForSession(dataCookie);
                window.location.reload();
            }
        }
    });

}

function event_for_open_modals() {
    $('a[data-element-reveal]').on('click', function () {
        window.scroll_current_pos_y = 0;
    });
}

function validateHtml(value) {
    var text = $(value);
    var response = { valid: true, message: '' };
    var message = '';
    var valid = true;
    //images
    var dataUrlRegex = /^\s*data:([a-z]+\/[a-z]+(;[a-z\-]+\=[a-z\-]+)?)?(;base64)?,[a-z0-9\!\$\&\'\,\(\)\*\+\,\;\=\-\.\_\~\:\@\/\?\%\s]*\s*$/i;
    $(text).find('img').each(function () {
        var src = $(this).attr('src');
        if (src !== undefined && src !== null) {
            if (!!src.match(dataUrlRegex)) {
                valid = false;
                message = 'Base64 format is not allowed.';
                return false;
            } else if (src.length > 2047) {
                valid = false;
                message = 'URLs longer than 2048 are not allowed';
                return false;
            }
        }
    });
    if (valid === true) {
        $(text).find('a').each(function () {
            var src = $(this).attr('href');
            if (src !== undefined && src !== null) {
                if (src.length > 2047) {
                    valid = false;
                    message = 'URLs longer than 2048 are not allowed';
                    return false;
                }
            }
        });
    }
    response.valid = valid;
    response.message = message;
    return response;
}
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}


function setCookie(cname, cvalue, exdays,availableForAllSite) {

    var isForAllSite = availableForAllSite === undefined ? false : availableForAllSite;

    if (exdays === undefined || exdays === null)
    {
        if (isForAllSite)
            document.cookie = cname + "=" + cvalue + ";path =/";
        else
            document.cookie = cname + "=" + cvalue;

    }else
    {
        var d = new Date();
        d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
        var expires = "expires=" + d.toUTCString();

        if (isForAllSite)
            document.cookie = cname + "=" + cvalue + "; " + expires + ";path =/";
        else
            document.cookie = cname + "=" + cvalue + "; " + expires;
    }
}

function setImagesForAlerts() {
    window.sad_face_image = '/img/sad-face.png';
    window.think_face_image = '/img/thinking.png';
}

function set_llamapi_environment() {
    window.alert_missing_changes = true;
    window.is_llamapi = false;
    window.instance_prefix = "HOC__";
    window.instance_prefix_hybrid = "none";
    if ($('body').hasClass('llamapi-system')) {
        window.is_llamapi = true;
        window.instance_prefix = "LlamaPi__";
        if ($('body').hasClass('hoc-volunteer-system') && $('body').hasClass('hoc-volunteer-system-hybrid') && $('body').find('input[name="hybrid-instance-prefix"]').length > 0) {
            var hybridInstance = $('body').find('input[name="hybrid-instance-prefix"]').val();
            if (hybridInstance !== null && hybridInstance !== undefined && hybridInstance !== '') {
                window.instance_prefix_hybrid = hybridInstance;
            }
        }
        //validate urls
        var valuePath = getUrlParameterforLlamaPi("pathParam");
        if (valuePath != null && valuePath != undefined && valuePath.trim() != '') {
            window.history.pushState("", "", valuePath);
        }
    }
}

function isHybridIntegration() {
    if ($('body').hasClass('llamapi-system') && $('body').hasClass('hoc-volunteer-system') && $('body').hasClass('hoc-volunteer-system-hybrid'))
        return true;
    return false;
}

function getUrlParameterforLlamaPi(name) {
    name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
    var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
    var results = regex.exec(window.location.search);
    return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
};


function set_info_sharing_portal_plus_page() {
  window.sharingPortalPlusPath = '/';

  if($('input[name="sharingportalplus-path"]').length > 0) {
    var sp_path = $('input[name="sharingportalplus-path"]').val();
    var hostname = window.location.hostname;

    //Remove hostname of sp_path
    sp_path = sp_path.replaceAll(hostname, '');

    //Assign to global variable
    window.sharingPortalPlusPath = sp_path;
  }
}

function is_new_cms_active() {
    if ($('body').hasClass('use-new-cms-feature'))
        return true;
    return false;
}

function is_backend_page() {
    if ($('body').hasClass('backend-page'))
        return true;
    return false;
}

function load_activation_sharing_portal_settings() {
    if ($('body.main-site').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        if (window.location.hash) {
            if (window.location.hash.indexOf('pseudo-domain-sites-settings') !== -1 && $('#sharing-portal-plus-settings').length > 0) {
                $("#sharing-portal-plus-settings").foundation('open');
                var urlToCall = urlSite + 'SharingPortalPlus/GetSettingsInformation';
                
                $.ajax({
                    url: urlToCall,
                    method: "GET",
                    beforeSend: function () {
                        $('#sharing-portal-plus-settings').find('.processing_screen').show();
                    },
                    success: function (data) {
                        data = JSON.parse(data);
                        if (data.code === "200") {
                            var parentSiteName = data.ParentSiteName;
                            var parentSiteId = data.ParentSiteID;
                            var src_html = get_title_sharing_portal_form(parentSiteName);
                            $('form#sharing-portal-setting-management #body-form-section').append(src_html);
                            $('form#sharing-portal-setting-management input#parent-site-id').val(parentSiteId);
                            if (data.siteInfo != null && data.siteInfo !== undefined) {
                                var ids = [];
                                var table_text = '<table id="pseudo-domain-setting-table">';
                                src_html = get_header_section_form();
                                table_text += src_html;
                                table_text += '<tbody>';
                                data.siteInfo.forEach(function (item) {
                                    src_html = get_item_section_form(item);
                                    ids.push(item.ID);
                                    table_text += src_html;
                                });
                                table_text += '</tbody><table>';
                                $('form#sharing-portal-setting-management #body-form-section').append(table_text);
                                var valuesText = ids.join(',');
                                $('form#sharing-portal-setting-management input#id-list-values').val(valuesText);
                            }

                            if ($('form#sharing-portal-setting-management button.save-sharing-settings').length > 0) {
                                $('body').on('click', 'form#sharing-portal-setting-management input.save-sharing-settings', function (e) {
                                    $('#sharing-portal-plus-settings').find('.processing_screen').show();
                                });
                            }
                            $('#sharing-portal-plus-settings').find('.processing_screen').hide();
                        } else  {
                            Swal.fire({
                                title: "",
                                icon: "error",
                                text: data.message,
                                confirmButtonText: "Ok"
                            });
                        }
                    },
                    completed: function (jqXHR, textStatus) {
                        $('#sharing-portal-plus-settings').find('.processing_screen').hide();
                    }
                });
            }
        }
    }
}

function get_title_sharing_portal_form(value) {
    return '<h3>Mini Sites Settings</h3>';
}

function get_item_section_form(item) {
    var html_text = '<tr>';
    html_text += '<td class="level-1"><label>' + item.SiteName + '</label></td>';
    html_text += '<td class="level-2">';
    html_text += '<input type="text" id="org-item-' + item.ID + '" name="org-item-' + item.ID + '" data-setting-id="' + item.ID + '" value="' + (item.Organizations !== null && item.Organizations !== undefined && item.Organizations.trim() !== '' ? item.Organizations : '') + '" />';
    html_text += '<input type="hidden" id="site-item-' + item.ID + '" name="site-item-' + item.ID + '" value="' + item.SiteID + '">';
    html_text += '</td>';
    html_text += '<td class="level-3"><a target="_blank" href="' + item.UrlSite + '">' + item.UrlSite + '</a></td>';
    html_text += '</tr>';
    return html_text;
}

function get_header_section_form() {
    var html_text = '<thead><tr>';
    html_text += '<th class="level-1">Site Name</th>';
    html_text += '<th class="level-2">Account ID</th>';
    html_text += '<th class="level-3">Site Url</th>';
    html_text += '</tr></thead>';
    return html_text;

}

function checkbox_validate(self) {
    var checkboxInput = self.find('.left').find('input[type="checkbox"]');

    var classess = self.attr('class');

    //Remove margin top if content is major than 18px
    if (self.find('p').css('height') > '20px') {
        self.find('p').css('margin-top', 0);
    }

    //Event click of content
    self.find('.content').find('.right').click(function () {
        //Toggle checkbox
        var clickedCheckbox = $(this).parent('.content').find('.left input[type="checkbox"]');
        var checkboxValue = clickedCheckbox.prop('checked');
        clickedCheckbox.prop('checked', !checkboxValue);

        if (classess.indexOf("formBlock") >= 0) {
            checkboxInput.change();
            form_checkbox_error(checkboxInput);
        }
        else {
            //Validating the is checkbox is checked or not for "Associated with Empower Sioux Falls"
            _validate_help_center_waiver_change(self, checkboxInput);
        }
    });

    //Event to capture if the waiver for "Associated with Empower Sioux Falls" is checked
    checkboxInput.on("change", function () {
        if (classess.indexOf("formBlock") < 0) {
            _validate_help_center_waiver_change(self, checkboxInput);
        }
    });
}


function _validate_help_center_waiver_change(self, checkboxInput) {
    var leftParent = checkboxInput.closest('.left');
    var rightSibling = leftParent.next('.right');
    var isHelpCenter = rightSibling.find('p').hasClass('help-center');

    if (isHelpCenter) {
        self.find('label.validation-message').css('color', 'grey');
        //Validate if checkbox is checked to display validation message for "Associated with Empower Sioux Falls"
        if (checkboxInput.prop('checked') === true) {
            self.find('label.validation-message').css('display', 'block');
        }
        else {
            self.find('label.validation-message').css('display', 'none');
        }
    }
}


function validate_honeypot_security(FormId) {
    if (FormId != "") {
        if ($("form#" + FormId).length > 0) {
            var honeypotSecurity = $("form#" + FormId + " input[name='honeypot_security']").val();
            if (honeypotSecurity != "") {
                $.growl.error({
                    title: "Form Errors",
                    message: "Only humans please",
                });
                return false;
            } else {
                return true;
            }
        }
        else {
            return true;
        }
    } else {
        return true;
    }
}

function retrieveDialPhoneFromTheForm(fieldId, self) {
    var dialCode = null;
    var flagSelected = self.closest('.formBlock').find('.field-section-' + fieldId + ' ul.iti__country-list li.iti__country.iti__active');
    if (flagSelected !== null && flagSelected !== undefined && flagSelected.attr('data-dial-code')) {
        var valueDialCode = flagSelected.attr('data-dial-code');
        if (valueDialCode !== null && valueDialCode != undefined && valueDialCode !== '') {
            dialCode = "+" + flagSelected.attr('data-dial-code');
        } else {
            dialCode = "";
        }
        
    }
    return dialCode;
}

function updateDialCodeInFormBuilder(self) {
    self.find('input[type="tel"]').each(function () {
        var name = $(this).attr('name');
        var fieldId = name.replaceAll('[value]', '');
        var selectorDialCode = 'input[name="' + fieldId + '[phoneDial]"]';
        if (self.find(selectorDialCode).length > 0) {
            var dialCode = retrieveDialPhoneFromTheForm(fieldId, $(this));
            self.find(selectorDialCode).val(dialCode);
        }
    });
}


function validateFormBeforeSend(formData) {
    var newFormData = {};
    for (const prop in formData) {
        if (Array.isArray(formData[prop])) {
            var valueF = '';
            var posF = '';
            formData[prop].forEach(function (value, index) {
                if (value !== '') {
                    valueF = value;
                    posF = index;
                }
            });
            if (valueF !== '' && posF !== '') {
                newFormData[prop + '_' + posF] = valueF;
            }
        } else {
            newFormData[prop] = formData[prop];
        }
    }

    return newFormData;
}

function validate_url_fields_backend(elementReveal, selectorVisibleTo, selectorUrlFields) {
    if ($(elementReveal).find(selectorVisibleTo).length > 0 && $(elementReveal).find(selectorUrlFields).length > 0) {
        selectorVisibleTo = selectorVisibleTo + ':checked';
        var valueVisibleTo = $(elementReveal).find(selectorVisibleTo).val();
        if (valueVisibleTo == '1' || valueVisibleTo == '2' || valueVisibleTo == 1 || valueVisibleTo == 2) {
            var valueUrl = $(elementReveal).find(selectorUrlFields).val();
            if (valueUrl == null || valueUrl === undefined || valueUrl === '') {
                Swal.fire({

                    title: window.translation.error_in_visibility_block,
                    icon: "error",
                    html: window.translation.url_visibility_not_defined,
                    confirmButtonText: "Ok",
                });
                return false;
            }
            
        }
    }
    return true;
}

function get_data_for_autocomplete_filter_field_formbuilder(customSessionVar, fromGroups, fromService, includeParameters) {
    var items = [];
    customSessionVar.forEach(function (item, index) {
        if (fromGroups === true) {
            if (item.group !== null && item.group !== undefined && item.group === 'sessiontoken') {
                items.push(item.field);
            }
        } else if (fromService === true) {
            if (item.Token !== null && item.Token !== undefined && item.Token !== '') {
                items.push(item.Token);
            }

        } else {
            if (item.apiName !== null && item.apiName !== undefined && item.apiName !== '') {
                items.push(item.apiName);
            }

        }
    });
    if (includeParameters === true) {
        items.push('p:urlParameter(1)');
        items.push('p:urlParameter(2)');
        items.push('p:urlParameter(3)');
        items.push('p:urlParameter(4)');

    }
    return items;
}

function get_data_for_autocomplete_filter_field(customSessionVar, skipConstanst, skipDates) {
    var items = [];
    if (!skipConstanst) {
        items.push("s:currentUserID");
        items.push("s:currentAccountID");
        items.push("s:currentContactAccountID");
        items.push("s:currentDateTime");
        items.push("s:currentBrowserSessionID");
    }
    if (!skipDates) {
        items.push("s:thisMonth");
        items.push("s:thisWeek");
        items.push("s:thisYear");
        items.push("s:today");
    }
    if (IS_LLAMAPI_ENABLED && isHybridIntegration()) {
        items.push("s:currentManagingOrg");
    }



    if (customSessionVar !== null && customSessionVar !== undefined && customSessionVar.length > 0) {
        customSessionVar.forEach(function (item, index) {
            if (item.Token !== null && item.Token !== undefined && item.Token !== '') {
                items.push(item.Token);
            }
        });
    }


    items.push('p:urlParameter(1)');
    items.push('p:urlParameter(2)');
    items.push('p:urlParameter(3)');
    items.push('p:urlParameter(4)');
    return items;
}


function apply_autocomplete_to_field(self,field,availableTags, maskValue) {
    $.widget( "custom.catcomplete", $.ui.autocomplete, {
        options : {
          clearButton: true,
          clearButtonHtml: '&times;',
          clearButtonPosition: {
            my: "right center",
            at: "right center"
        }
    },
    _create: function() {
      var self_this = this;
      self_this._super();
      self_this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" );
      if ( self_this.options.clearButton ) {self_this._createClearButton(); }

  },
  _renderMenu: function( ul, items ) {
    var that = this,
    currentCategory = "";
    $.each( items, function( index, item ) {
      var li;
      if ( item.category != currentCategory ) {
        ul.append( "<li class='ui-autocomplete-category'>" + item.category + "</li>" );
        currentCategory = item.category;
    }
    li = that._renderItemData( ul, item );
    if ( item.category ) { li.attr( "aria-label", item.category + " : " + item.label ); }
    });
    },
    _createClearButton: function() {
      var self_this = this;
      self_this.clearElement = $("<span>").attr( "tabindex", "-1" ).addClass( "custom-ui-autocomplete-clear" ).html( self_this.options.clearButtonHtml ).insertAfter( self_this.element );
      if ( self_this.options.clearButtonPosition !== false && typeof self_this.options.clearButtonPosition === 'object' ) {
        if ( typeof self_this.options.clearButtonPosition.of === 'undefined' ) {
            self_this.options.clearButtonPosition.of = self_this.element;
        }    
        self_this.clearElement.position( self_this.options.clearButtonPosition); 
    }                       
    self_this._on( self_this.clearElement, {
        click: function() {
          self_this.element.val('').focus();
          self_this._hideClearButton();
      }
    });
    self_this.element.addClass('ui-autocomplete-input-has-clear');
    self_this._on( self_this.element, {
        input: function() {
          if ( self_this.element.val()!=="" ) {
            self_this._showClearButton();
        } else {
            self_this._hideClearButton();
        }
    }
    });
    self_this._on( self_this.menu.element, {
        menuselect: function() {
          self_this._showClearButton();
      }
    });
    if( self_this.element.val()!=="" ) {self_this._showClearButton(); } else {self_this._hideClearButton();}
    },
    _showClearButton: function() {
      this.clearElement.css({'display': 'inline-block'});
    },
    _hideClearButton: function() {
      this.clearElement.css({'display': 'none'});
    }
    });
    self.find(field).catcomplete({
        source: availableTags,
        delay: 0,
        clearButton: true,
        minLength: 0,
        select://fires off when you make a selection
            function (event, ui) {
                //event.preventDefault();

                if (maskValue) {

                    $(this).val(ui.item.label);//show masked value, aka: label

                    let idUnmaskedValue = $(this).attr('id') + '-unmasked-value';
                    let unmaskedInput = $('#' + idUnmaskedValue);
                    if (unmaskedInput) {
                        $('#' + idUnmaskedValue).val(ui.item.value);
                    }

                } else {
                    $(this).val(ui.item.value);

                }
                return false;
            },
    }).focus(function () {
        $(this).catcomplete("search");
    }).click(function () {
        $(this).catcomplete("search");
    });
}


function GetCurrentDay() {
    var nowTemp = new Date();
    return nowTemp;

}

function AddDaysToday(days) {
    var nowTemp = new Date();
    nowTemp.setHours(0, 0, 0, 0);
    nowTemp.setDate(nowTemp.getDate() + parseInt(days));
    return nowTemp;
}

function AddDaysTodayOnlyFuture() {
    var nowTemp = new Date();
    nowTemp.setHours(0, 0, 0, 0);
    return nowTemp;

}

function AddDaysTodayOnlyPast() {
    var nowTemp = new Date();
    nowTemp.setHours(23, 59, 59, 0);
    return nowTemp;
}

function AddDays(date, days) {
    var result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
}

function AddDaysForRestrict(date, days) {
    var result = new Date(date);
    result.setDate(result.getDate() + days);
    result.setHours(0, 0, 0, 0);
    return result;
}

function getCustomDateFormatForCustomDatePicker() {
    return 'dd/mm/yyyy';
}

function getCustomDateFormatForCustomDatePickerMoment() {
    return 'DD/MM/YYYY';
}

function getCustomDateFormatForCustomDateTimePickerMoment() {
    return 'DD/MM/YYYY h:mm';
}


function customDateConfiguration(FieldId) {
    var language_ISO = window.translation.language_iso;
    var date_language = language_ISO.split('-')[0];
    if (date_language === undefined || date_language === null || date_language === '')
        date_language = 'en';
    if (date_language === 'zh')
        date_language = 'zh-TW';
    var dateFormat = window.DatePickerDateFormat;
    switch (window.IsoPhone) {
        case 'us':
            dateFormat = 'm/d/yyyy';
            break;
        case 'nl':
            dateFormat = 'd-m-yyyy';
            break;
    }

    var starDatePicker = null;
    var endDatePicker = null;
    var targetDatePicker = null;
    var dataTargetDateVal = null;
    var currentDate = GetCurrentDay();
    var currenttimezoneOffset = currentDate.getTimezoneOffset();
    var msgStartDate = null;
    var msgSEndDate = null;
    var msgSTargetDate = null;
    var fromRule = false;
    var fromRelated = false;
    let includePastDays = false;
    if ($("input[name='" + FieldId + "[validatorDateField]']").length > 0 && $("input[name='" + FieldId + "[ruleToValidate]']").length > 0 &&
        $("input[name='" + FieldId + "[validatorDateField]']").val() != '' && $("input[name='" + FieldId + "[ruleToValidate]']").val() != '') {


        includePastDays = $("input[name='" + FieldId + "[onlyPast]']").length > 0;

        var fieldRelatedValidator = $("input[name='" + FieldId + "[validatorDateField]']").val();
        var ruleToValidate = $("input[name='" + FieldId + "[ruleToValidate]']").val();
        if ($('input[name="' + fieldRelatedValidator + '[value]"]').length > 0 && $('input[name="' + fieldRelatedValidator + '[value]"]').val() != '') {


            var getDatepickerDate = $('input[name="' + fieldRelatedValidator + '[value]"]').fdatepicker().data('datepicker');
            var DatepickerDate = getDatepickerDate.date;

            var value_dfate = $('input[name="' + fieldRelatedValidator + '[value]"]').val();
            var dateformat = window.MomentDateFormat;
            var momentDate = moment(value_dfate, dateformat);
            var getdateValue = momentDate.toDate();
            dateValue = getdateValue;

            fromRule = true;


            switch (ruleToValidate) {
                case "GREATER_THAN":
                    fromRelated = true;
                    var timezoneOffset = dateValue.getTimezoneOffset();
                    if (timezoneOffset < 0) {
                        starDatePicker = dateValue;

                    }
                        
                    else
                        starDatePicker = AddDays(dateValue, 1);
                    msgStartDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_greater_than + " " + $('input[name="' + fieldRelatedValidator + '[value]"]').data('label-display');
                    break;
                case "GREATER_THAN_OR_EQUAL":
                    fromRelated = true;
                    var timezoneOffset = dateValue.getTimezoneOffset();
                    if (timezoneOffset < 0) {
                        starDatePicker = AddDays(dateValue, -1);
                        //starDatePicker = dateValue;
                    }
                    else
                        starDatePicker = dateValue;
                    msgStartDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_greater_than_or_equal + " " + $('input[name="' + fieldRelatedValidator + '[value]"]').data('label-display');
                    break;
                case "LESS_THAN":
                    fromRelated = true;
                    endDatePicker = AddDays(dateValue, -1);
                    msgSEndDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_less_than + " " + $('input[name="' + fieldRelatedValidator + '[value]"]').data('label-display');
                    break;
                case "LESS_THAN_OR_EQUAL":
                    fromRelated = true;
                    endDatePicker = dateValue;
                    msgSEndDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_less_than_or_equal + " " + $('input[name="' + fieldRelatedValidator + '[value]"]').data('label-display');
                    break;
                case "EQUAL":
                    targetDatePicker = DatepickerDate;
                    dataTargetDateVal = dateValue;
                    msgSTargetDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_equal + " " + $('input[name="' + fieldRelatedValidator + '[value]"]').data('label-display');
                    break;
            }
        }

    }
    var allowCurrentDate = $("input[name='" + FieldId + "[allowCurrentDate]']").val() === "true";
    var setCurrentDate = $("input[name='" + FieldId + "[value]_default_date_time']").val() === "true";
    if (starDatePicker == null && $("input[name='" + FieldId + "[onlyFuture]']").length > 0 && $("input[name='" + FieldId + "[onlyFuture]']").val() === "true" && fromRelated === false) {
        if (allowCurrentDate) {
            starDatePicker = AddDaysTodayOnlyFuture();
            msgStartDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_greater_than_or_equal + " " + castFormatDate(starDatePicker);
        } else {
            starDatePicker = AddDaysToday(1);
            msgStartDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_greater_than + " " + castFormatDate(starDatePicker);
        }
    }
    else if (endDatePicker == null && $("input[name='" + FieldId + "[onlyPast]']").length > 0 && $("input[name='" + FieldId + "[onlyPast]']").val() === "true" && fromRelated === false) {
        if (allowCurrentDate) {
            endDatePicker = AddDaysTodayOnlyPast();
            msgSEndDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_less_than_or_equal + " " + castFormatDate(endDatePicker);
        } else {
            endDatePicker = AddDaysToday(-1);
            msgSEndDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_less_than + " " + castFormatDate(endDatePicker);
        }
    }

    if (fromRelated === true && includePastDays === true && $("input[name='" + FieldId + "[onlyPast]']").length > 0) {
        if (allowCurrentDate) {
            endDatePicker = AddDaysTodayOnlyPast();
            msgSEndDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_less_than_or_equal + " " + castFormatDate(endDatePicker);
        } else {
            endDatePicker = AddDaysToday(-1);
            msgSEndDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_less_than + " " + castFormatDate(endDatePicker);
        }

    }

    if (starDatePicker == null && $("input[name='" + FieldId + "[maxDaysInPast]']").length > 0 &&
        ($("input[name='" + FieldId + "[maxDaysInPast]']").val() != null && $("input[name='" + FieldId + "[maxDaysInPast]']").val() != undefined && $("input[name='" + FieldId + "[maxDaysInPast]']").val() != '')) {
        var maxDaysInPast = $("input[name='" + FieldId + "[maxDaysInPast]']").val();
        starDatePicker = AddDaysToday(-maxDaysInPast - 1);

        msgStartDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_greater_than_or_equal + " " + castFormatDate(starDatePicker);
    }
    if (endDatePicker == null &&
        $("input[name='" + FieldId + "[maxDaysInFuture]']").length > 0 &&
        ($("input[name='" + FieldId + "[maxDaysInFuture]']").val() != null && $("input[name='" + FieldId + "[maxDaysInFuture]']").val() != undefined && $("input[name='" + FieldId + "[maxDaysInFuture]']").val() != '')) {
        var maxDaysInFuture = $("input[name='" + FieldId + "[maxDaysInFuture]']").val();
        endDatePicker = AddDaysToday(maxDaysInFuture);
        msgSEndDate = $('input[name="' + FieldId + '[value]"]').data('label-display') + " " + window.translation.must_be_less_than_or_equal + " " + castFormatDate(endDatePicker);
    }

    if (msgSEndDate != null && endDatePicker != null) {
        $('input[name="' + FieldId + '[value]"]').attr('data-end-date-msg', msgSEndDate);
        $('input[name="' + FieldId + '[value]"]').attr('data-end-date', endDatePicker.valueOf());
    }
    if (msgStartDate != null && starDatePicker != null) {
        $('input[name="' + FieldId + '[value]"]').attr('data-start-date-msg', msgStartDate);
        $('input[name="' + FieldId + '[value]"]').attr('data-start-date', starDatePicker.valueOf());
    }
    if (msgSTargetDate != null && dataTargetDateVal != null) {
        $('input[name="' + FieldId + '[value]"]').attr('data-target-date-msg', msgSTargetDate);
        $('input[name="' + FieldId + '[value]"]').attr('data-target-date', dataTargetDateVal.valueOf());
    }

    var initialDate = new Date();
    var setInitialDate = false;


    if (starDatePicker != null) {
        initialDate = starDatePicker;
    } else if (endDatePicker != null) {
        initialDate = endDatePicker;
    }



    var optionsDatePicker = {
        format: dateFormat,
        disableDblClickSelection: true,
        language: date_language,
        weekStart: get_start_day_of_week_from_locale(),
        onRender: function (date) {

            var styleDisplay = '';
            if (targetDatePicker != null && targetDatePicker != undefined) {
                if (!equalDates(date, targetDatePicker))
                    styleDisplay = 'disabled';
            }
            return styleDisplay;
        }

    };


    if (starDatePicker !== null && starDatePicker !== undefined) {
        optionsDatePicker.startDate = starDatePicker;
        if (setCurrentDate === false) {
            setInitialDate = true;
            initialDate = starDatePicker;
        }
    }

    if (endDatePicker !== null && endDatePicker !== undefined) {
        optionsDatePicker.endDate = endDatePicker;
        if (setCurrentDate === false) {
            setInitialDate = true;
            initialDate = endDatePicker;
        }
    }

    if (setCurrentDate === true) {
        setInitialDate = true;
        initialDate = currentDate;
    }

    if (fromRule === true) {
        if(starDatePicker !== null){
            setInitialDate = true;
            initialDate = AddDays(starDatePicker, 1);

        }
        if(endDatePicker !== null){
            setInitialDate = true;
            initialDate = AddDays(endDatePicker, 1);
        }
    }


    if (setInitialDate == true)
        optionsDatePicker.initialDate = initialDate;

    if(setCurrentDate === true ){
        optionsDatePicker.initialDate = initialDate;
    }else{
        optionsDatePicker.initialDate = "";
    }
    $('input[name="' + FieldId + '[value]"]').fdatepicker('remove');
    $('input[name="' + FieldId + '[value]"]').fdatepicker(
        optionsDatePicker
    ).on('changeDate', function (ev) {
        var valDateCurrent = null;
        if ($('input[name="' + FieldId + '[value]"]').fdatepicker().data('datepicker').date != null && $('input[name="' + FieldId + '[value]"]').fdatepicker().data('datepicker').date != undefined)
            valDateCurrent = $('input[name="' + FieldId + '[value]"]').fdatepicker().data('datepicker').date.valueOf();
        if ($('input[name="' + FieldId + '[value]"]').parent().find('label.error').length > 0) {

            var doRemove = true;

            var cEndDatePicker = null;
            var cStarDatePicker = null;
            var cTargetDatePicker = null;

            if ($(this).data('end-date')) cEndDatePicker = $(this).data('end-date');
            if ($(this).data('start-date')) cStarDatePicker = $(this).data('start-date');
            if ($(this).data('target-date')) cTargetDatePicker = $(this).data('target-date');

            if (cEndDatePicker != null && valDateCurrent != null && cEndDatePicker < valDateCurrent) {
                doRemove = false;
            }
            if (cStarDatePicker != null && valDateCurrent != null && cStarDatePicker > valDateCurrent) {
                doRemove = false;
            }
            if (cTargetDatePicker != null && valDateCurrent != null && !equalDates(new Date(cTargetDatePicker), new Date(valDateCurrent))) {
                doRemove = false;
            }
            if (doRemove) {
                $('input[name="' + FieldId + '[value]"]').parent().find('label.error').remove();
            }
        }


        if ($(this).val() != '' && $(this).data('minimum-age') && $(this).data('min-age')) {

            var nowTemp = new Date();
            var minAge = Number($(this).data('minimum-age'));

            var dateAllowed = new Date(nowTemp.getFullYear() - minAge, nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0).valueOf();

            if (valDateCurrent > dateAllowed) {
                $('input[name="' + FieldId + '[value]"]').parent().append('<label class="error error-datefield error-custom error-min-age">' + $(this).data('min-age') + '</label>');
            }
            else {
                $('input[name="' + FieldId + '[value]"]').parent().find('label.error-min-age').remove();
            }
        }


        $("input.related-" + FieldId).each(function (item) {
            var fieldDateId = $(this).data('field-id');
            var currentFieldDateId = FieldId;
            var valDate = $('input[name="' + fieldDateId + '[value]"]').fdatepicker().data('datepicker').date.valueOf();
            var nameDate = $('input[name="' + fieldDateId + '[value]"]').data('label-display');
            var isRequired = $("input[name='" + fieldDateId + "[value]']").data('required');
            var innerRuleToValidate = $("input[name='" + fieldDateId + "[ruleToValidate]']").val();

            var nameDateCurrent = $('input[name="' + currentFieldDateId + '[value]"]').data('label-display');
            var displayError = false;
            var msgError = false;

            switch (innerRuleToValidate) {
                case "GREATER_THAN":
                    displayError = !(valDate > valDateCurrent);
                    msgError = nameDate + " " + window.translation.must_be_greater_than + " " + nameDateCurrent;
                    break;
                case "GREATER_THAN_OR_EQUAL":
                    displayError = !(valDate > valDateCurrent || equalDates(new Date(valDate), new Date(valDateCurrent)));
                    msgError = nameDate + " " + window.translation.must_be_greater_than_or_equal + " " + nameDateCurrent;
                    break;
                case "LESS_THAN":
                    displayError = !(valDate < valDateCurrent);
                    msgError = nameDate + " " + window.translation.must_be_less_than + " " + nameDateCurrent;
                    break;
                case "LESS_THAN_OR_EQUAL":
                    displayError = !(valDate < valDateCurrent || equalDates(new Date(valDate), new Date(valDateCurrent)));
                    msgError = nameDate + " " + window.translation.must_be_less_than_or_equal + " " + nameDateCurrent;
                    break;
                case "EQUAL":
                    displayError = !(equalDates(new Date(valDate), new Date(valDateCurrent)));
                    msgError = nameDate + " " + window.translation.must_be_equal + " " + nameDateCurrent;
                    break;
            }
            if(displayError){
                var isInputValue = $('input[name="' + fieldDateId + '[value]"]').val() != '';
                if(!isInputValue){
                    if(!isRequired){
                        displayError = false;
                    }
                }
            }
            //remove plugin features
            $('input[name="' + fieldDateId + '[value]"]').fdatepicker('remove');
            //remove events
            $('input[name="' + fieldDateId + '[value]"]').replaceWith($('input[name="' + fieldDateId + '[value]"]').clone());
            customDateConfiguration(fieldDateId);
            if (displayError) {
                if ($('input[name="' + fieldDateId + '[value]"]').parent().find('label.error').length > 0) {
                    $('input[name="' + fieldDateId + '[value]"]').parent().find('label.error').remove();
                }

                if ($('input[name="' + fieldDateId + '[value]"]').parents('.field-section-' + fieldDateId).find('label.error').length > 0) {
                    $('input[name="' + fieldDateId + '[value]"]').parents('.field-section-' + fieldDateId).find('label.error').remove();
                }
                $('input[name="' + fieldDateId + '[value]"]').parent().append('<label class="error error-datefield error-custom">' + msgError + '</label>');
            }
            else {
                if ($('input[name="' + fieldDateId + '[value]"]').parent().find('label.error').length > 0) {
                    $('input[name="' + fieldDateId + '[value]"]').parent().find('label.error').remove();
                }

                if ($('input[name="' + fieldDateId + '[value]"]').parents('.field-section-' + fieldDateId).find('label.error').length > 0) {
                    $('input[name="' + fieldDateId + '[value]"]').parents('.field-section-' + fieldDateId).find('label.error').remove();
                }
            }
            if($('input[name="' + fieldDateId + '[value]"]').parent().find('label.error').length > 1){
                $('input[name="' + fieldDateId + '[value]"]').parent().find('label.error').hide();
                $('input[name="' + fieldDateId + '[value]"]').parent().find('label.error-custom').show();
            }

        })
    });

}


function verifyDateTimeRules(idField, self) {
    var _formId = self.closest('.formBlock').data('form-id');
    var _form = self.closest('.formBlock').find('form#form-custom-' + _formId);

    var ruleValidate = _form.find('input[name="' + idField + '[ruleToValidate]"]');

    if (ruleValidate !== null && ruleValidate !== undefined) {
        if (_form.find('input.inclusive-dates__input').length > 0) {
            var name = self.attr('name');
            validateDatesWithCompareCustomDatePicker(ruleValidate, idField, _form, name);
        } else {
            validateDatesWithCompare(ruleValidate, idField, _form);
        }
        
    }
}

function validateDatesWithCompare(ruleValidate, idField, _form) {
    //verifying values.
    var valid = true;

    var idFieldToCompare = ruleValidate.attr('class');
    if (idFieldToCompare !== null && idFieldToCompare !== undefined) {
        idFieldToCompare = idFieldToCompare.replace('rule-', '');
        var operator = ruleValidate.val();
        var error_operator_message = '';

        var currentName = idField + "[value]";
        var isInputValue = $('input[name="' + currentName + '"]').val() != ''; 
        var currentDateFieldValue = ($('input[name="' + currentName + '"]').length > 0)
            ? $('input[name="' + currentName + '"]').fdatepicker().data('datepicker').date
            : null;
        var compareName = idFieldToCompare + "[value]";
        var compareDateFieldValue = ($('input[name="' + compareName + '"]').length > 0)
            ? $('input[name="' + compareName + '"]').fdatepicker().data('datepicker').date
            : null;

        if (currentDateFieldValue !== null && compareDateFieldValue !== null && isInputValue) {
            //retrieve the hours
            if (_form.find('input[name="' + idField + '[timeValue]"]').length > 0) {
                var timeSelected = _form.find('input[name="' + idField + '[timeValue]"]').val();
                if (timeSelected !== null && timeSelected !== undefined) {
                    currentDateFieldValue = getDateFromFields(currentDateFieldValue, timeSelected);
                }
            }
            currentDateFieldValue = currentDateFieldValue.valueOf();
            if (_form.find('input[name="' + idFieldToCompare + '[timeValue]"]').length > 0) {

                var timeSelected = _form.find('input[name="' + idFieldToCompare + '[timeValue]"]').val();
                if (timeSelected !== null && timeSelected !== undefined) {
                    compareDateFieldValue = getDateFromFields(compareDateFieldValue, timeSelected);
                }

            }
            compareDateFieldValue = compareDateFieldValue.valueOf();
            var labelValue = _form.find('label[for="' + idFieldToCompare + '[value]"]').text();
            var currentLabelValue = _form.find('label[for="' + idField + '[value]"]').text();


            if (operator === "GREATER_THAN_OR_EQUAL") {
                if (currentDateFieldValue < compareDateFieldValue) {
                    valid = false;
                    error_operator_message = ' ' + translation.form_validation_greather_equal + ' ';
                }

            } else if (operator === "GREATER_THAN") {
                if (currentDateFieldValue <= compareDateFieldValue) {
                    valid = false;
                    error_operator_message = ' ' + translation.form_validation_greather + ' ';
                }

            } else if (operator === "LESS_THAN") {
                if (currentDateFieldValue >= compareDateFieldValue) {
                    valid = false;
                    error_operator_message = ' ' + translation.form_validation_less_than + ' ';
                }

            } else if (operator === "LESS_THAN_OR_EQUAL") {
                if (currentDateFieldValue > compareDateFieldValue) {
                    valid = false;
                    error_operator_message = ' ' + translation.form_validation_less_equal + ' ';
                }
            } else if (operator === "EQUAL") {
                if (currentDateFieldValue != compareDateFieldValue) {
                    valid = false;
                    error_operator_message = ' ' + translation.form_validation_equal + ' ';
                }
            }

            if (valid === true && _form.find('.field-section-' + idField + ' label.error').length > 0) {
                try {
                    _form.find('.field-section-' + idField + ' label.error').remove();
                } catch (e) {
                    console.log(e);
                }
            } else if (valid === false && _form.find('.field-section-' + idField + ' label.error').length === 0) {
                var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + currentLabelValue + error_operator_message + labelValue + '</label>';
                _form.find('.field-section-' + idField).append(label);
            }
        }
    }
    return valid;
}

function getDateFromFields(dateSelected, timeSelected) {
    timeSelected = timeSelected.toLowerCase();
    var hours = 0;
    var minutes = 0;
    var format24h = true;
    var isAfteernoon = false;

    if (timeSelected.includes('am') || timeSelected.includes('pm') || timeSelected.includes('a.m.') || timeSelected.includes('p.m.')) {
        format24h = false;
        if (timeSelected.includes('pm') || timeSelected.includes('p.m.'))
            isAfteernoon = true;

        timeSelected = timeSelected.replace('am');
        timeSelected = timeSelected.replace('pm');
        timeSelected = timeSelected.replace('a.m.');
        timeSelected = timeSelected.replace('p.m.');
    }
    timeSelected = timeSelected.trim();
    var values = timeSelected.split(':');
    hours = parseInt(values[0]);
    minutes = parseInt(values[1]);

    if (format24h === false && isAfteernoon === false) {
        if (hours === 12)
            hours = 0;
    } else if (format24h == false && isAfteernoon === true) {
        if (hours >= 1 && hours <12)
            hours = 12 + hours;
    }
    if ($('body').find('.formBlock input.inclusive-dates__input').length > 0) {
        dateSelected = dateSelected + " " + hours + ":" + minutes;
    } else {
        dateSelected.setHours(hours, minutes, 0, 0);
    }
    return dateSelected;

}




function fix_validate_phone_field_after_country_change(telInput, field, validateChange, validateValue, form, nameInput) {

    var iti = window.intlTelInputGlobals.getInstance(telInput);

    if (validateValue === true) {

        if ($.trim(field.val())) {

            if (iti.isValidNumber()) {
                if (field.parents(".row").first().find('label.error-custom').length !== 0) {
                    field.parents(".row").first().find('label.error-custom').remove();
                }
                if (form.find("input[name='international_" + nameInput + "']").length > 0) {
                    form.find("input[name='international_" + nameInput + "']").val(iti.getNumber());
                };
            } else {
                var spanRequired = "<label class='error-custom'>" + translation.please_complete_valid_phone + "</label>";

                if (field.parents(".row").first().find('label.error-custom').length === 0) {
                    field.parents(".intl-tel-input").first().append(spanRequired);
                }
                if (form.find("input[name='international_" + nameInput + "']").length > 0) {
                    form.find("input[name='international_" + nameInput + "']").val("");
                }
                if (form.find("input[name='" + nameInput + "']").length > 0) {
                    form.find("input[name='" + nameInput + "']").removeClass("valid");
                    form.find("input[name='" + nameInput + "']").addClass("error");
                }
                return false;
            }
        } else {
            if (field.parents(".row").first().find('label.error-custom').length !== 0) {
                field.parents(".row").first().find('label.error-custom').remove();
            }
            if (form.find("input[name='international_" + nameInput + "']").length > 0) {
                form.find("input[name='international_" + nameInput + "']").val(iti.getNumber());
            }
            var value = $.trim(telInput.val());
            if (value === "") {
                var data_required = field.attr('data-val-required');
                var spanRequired = "";
                if (data_required !== null && data_required !== undefined && data_required !== "") {
                    spanRequired = "<label class='error-custom'>" + translation.please_complete_valid_phone + "</label>";
                }
                if (field.parents(".row").first().find('label.error-custom').length === 0) {
                    if (spanRequired !== "")
                        field.parents(".intl-tel-input").first().append(spanRequired);
                    form.find("input[name='" + nameInput + "']").val("");
                }
                if (form.find("input[name='international_" + nameInput + "']").length > 0) {
                    form.find("input[name='international_" + nameInput + "']").val("");
                }
                return false;

            }
        }
    }

    if (validateChange === true) {
        field.on('change', function () {
            if ($.trim(field.val())) {
                if (iti.isValidNumber()) {
                    if (field.parents(".row").first().find('label.error-custom').length !== 0) {
                        field.parents(".row").first().find('label.error-custom').remove();
                    }
                    if (form.find("input[name='international_" + nameInput + "']").length > 0) {
                        form.find("input[name='international_" + nameInput + "']").val(iti.getNumber());
                    };

                } else {
                    var spanRequired = "<label class='error-custom'>" + translation.please_complete_valid_phone + "</label>";

                    if (field.parents(".row").first().find('label.error-custom').length === 0) {
                        field.parents(".iti").first().append(spanRequired);
                    }
                    if (form.find("input[name='international_" + nameInput + "']").length > 0) {
                        form.find("input[name='international_" + nameInput + "']").val("");
                    }
                    return false;
                }
            } else {
                if (field.parents(".row").first().find('label.error-custom').length !== 0) {
                    field.parents(".row").first().find('label.error-custom').css('display', 'none');
                }
                if (form.find("input[name='international_" + nameInput + "']").length > 0) {
                    form.find("input[name='international_" + nameInput + "']").val(iti.getNumber());
                }
                var value = $.trim(field.val());
                if (value === "") {
                    var data_required = field.attr('data-required');
                    var spanRequired = "";
                    if (data_required !== null && data_required === "true") {
                        spanRequired = "<label class='error-custom'>" + translation.please_complete_valid_phone + "</label>";
                    }

                    if (field.parents(".row").first().find('label.error-custom').length === 0) {
                        if (spanRequired !== "")
                            field.parents(".iti").first().append(spanRequired);
                        form.find("input[name='" + nameInput + "']").val("");
                    }
                    if (form.find("input[name='international_" + nameInput + "']").length > 0) {
                        form.find("input[name='international_" + nameInput + "']").val("");
                    }
                    return false;

                }

            }
        });
    }

    telInput.addEventListener("countrychange", function (e) {
        var value = field.val();
        var spanRequired = "<label class='error-custom'>" + translation.please_complete_valid_phone + "</label>";
        if (value === undefined || value === null || value === '')
            return;
        if (iti.isValidNumber()) {
            if (field.parents(".row").first().find('label.error-custom').length !== 0) {
                field.parents(".iti").first().find('label.error-custom').remove();
            }
        } else {
            if (field.parents(".row").first().find('label.error-custom').length === 0) {
                field.parents(".iti").first().append(spanRequired);
            }
        }
    });
}

function validate_variable_query_string(parameterToEvaluate, isForLogged, urlToRedirect) {

    if ((parameterToEvaluate !== null && parameterToEvaluate !== undefined && parameterToEvaluate !== '') &&
        (urlToRedirect !== null && urlToRedirect !== undefined && urlToRedirect !== '')) {
        
        var currentUrl = window.location.pathname;
        if (currentUrl !== urlToRedirect) {
            var myQs = getQueryString();
            if (myQs[parameterToEvaluate] !== null && myQs[parameterToEvaluate] !== undefined && myQs[parameterToEvaluate] !== '') {
                if (isForLogged === true) {
                    if ($('body').hasClass('logged')) {
                        window.location = urlToRedirect;
                    }
                } else {
                    window.location = urlToRedirect;
                }
            }
        }
    }

}


function getQueryString(customQueryString) {
    var query_string = {};
    var query = window.location.search.substring(1);
    if (customQueryString && customQueryString != '') {
        query = customQueryString;
    }

    var vars = (query) ? query.split("&") : "";
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        // If first entry with this name
        if (typeof query_string[pair[0]] === "undefined") {
            query_string[pair[0]] = decodeURIComponent(pair[1]);
            // If second entry with this name
        } else if (typeof query_string[pair[0]] === "string") {
            var arr = [query_string[pair[0]], decodeURIComponent(pair[1])];
            query_string[pair[0]] = arr;
            // If third or later entry with this name
        } else {
            query_string[pair[0]].push(decodeURIComponent(pair[1]));
        }
    }
    var parameterSeparator = $('input[name="parameterSeparator"]').val();
    var pathname = window.location.pathname;
    if (customQueryString && customQueryString != '') {
        pathname = customQueryString;
        if (customQueryString[0] != '/')
            pathname = '/' + customQueryString;
    }

    var containsSeparator = pathname.indexOf('/' + parameterSeparator + '/') != -1;

    if (containsSeparator) {
        var parametersInUrl = pathname.substring(pathname.indexOf('/' + parameterSeparator + '/') + ('/' + parameterSeparator + '/').length).split('/');
        if (parametersInUrl && parametersInUrl.length > 0) {
            for (var i = 0; i < parametersInUrl.length; i++) {
                query_string['urlParameter(' + (i + 1) + ')'] = removeQueryStringValues(parametersInUrl[i]);
            }
        }
    }
    return query_string;
}

function removeQueryStringValues(currentValue) {
    if (currentValue && currentValue.indexOf('?') != 0) {
        return currentValue.split('?')[0];
    }
    return currentValue;
}

$.fn.serializeJSON = function (options) {
    var counters = {},
        serialized = {};

    options = $.extend({
        excludeEmpty: false
    }, options || {});

    this.find(':not(.is-hidden)').serializeArray().forEach(function (input) {
        if (options.excludeEmpty && !$.trim(input.value)) {
            return;
        }
        var ob = serialized;
        // Split name into tokens, fixing numeric indexes where neccessary
        input.name.split('[').map(function (token) {
            token = token.replace(']', '');
            if (token === '') {
                if (typeof counters[input.name] === 'undefined') {
                    counters[input.name] = 0;
                }
                token = counters[input.name]++;
            }
            else if (token.match(/^[0-9]+$/)) {
                token = parseInt(token, 10);
            }
            return token;
        }).
            // Add to serialized object
            forEach(function (value, index, arr) {
                var type = $('[name="' + input.name + '"]').attr('type');

                if (index === arr.length - 1) {
                    if (type === 'checkbox') {
                        var checked = $('[name="' + input.name + '"]').prop('checked');

                        if (checked == true) {
                            ob[value] = "true";
                        }
                        else {
                            ob[value] = "false";
                        }
                    }
                    else {
                        ob[value] = input.value;
                    }
                    return;
                }
                if (typeof ob[value] === 'undefined') {
                    ob[value] = (typeof arr[index + 1] === 'number' ? [] : {});
                }
                ob = ob[value];
            });
    });

    return serialized;
};


$.fn.serializeObject = function () {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function () {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};


Date.prototype.addDays = function (days) {
    var dat = new Date(this.valueOf());
    dat.setDate(dat.getDate() + days);
    return dat;
};

String.prototype.replaceAll = function (target, replacement) {
    return this.split(target).join(replacement);
};

String.prototype.toCamelCase = function (str) {
    return str
        .replace(/\s(.)/g, function ($1) { return $1.toUpperCase(); })
        .replace(/\s/g, '')
        .replace(/^(.)/, function ($1) { return $1.toLowerCase(); });
}

String.prototype.capitalizeFirstLetter = function () {
    var getWords = this.split(' ');
    return getWords.map(function (value) { return value.charAt(0).toUpperCase() + value.slice(1); }).join(' ');
}

if (!String.prototype.startsWith) { // Support for IE
    String.prototype.startsWith = function (searchString, position) {
        position = position || 0;
        return this.indexOf(searchString, position) === position;
    };
}

String.prototype.stripHtml = function () {
    var tmp = document.createElement("DIV");
    tmp.innerHTML = this;
    return tmp.textContent || tmp.innerText || "";
}

String.prototype.replaceAllIgnoreCase = function (strReplace, strWith) {
    var esc = strReplace.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
    var reg = new RegExp(esc, 'ig');
    return this.replace(reg, strWith);
};

function split(val) {
    return val.split(/,\s*/);
}

function extractLast(term) {
    return split(term).pop();
}

function createColorPickerField(element, itemPreview) {
    if (element !== null && element !== undefined) {
        var legend = element.attr('name') + "-legend";
        var fields = element.attr("data-field-depending");

        var options = generateOptions(itemPreview, legend, fields, element);
        var nameElement = element.attr('name');
        var idTag = "clear-" + nameElement.replace('.', '_');
        var new_link = generateClearLink(nameElement, idTag);
        if (element.parent().find("a.color-picker-clear").length === 0) {
            element.parent().append(new_link);
            element.parent().css("text-align", "right");
        }
        element.colorPicker(options);
        element.css("margin-bottom", "0px");
        $('#' + idTag).on('click', function (e) {
            e.preventDefault();
            var self = $(this);
            var name = self.attr('data-element-name');
            $('input[name="' + name + '"]').val("");
            $('input[name="' + name + '"]').css("background-color", "");
            $('input[name="' + name + '"]').css("color", "");
            if (itemPreview !== null && itemPreview !== undefined) {
                $(itemPreview).css("color", "");
            }
            return false;
        });
    }
}

function generateOptions(itemPreview, legend, fields, element) {
    'use strict';
    var options = {
        buildCallback: function ($elm) {
            var that = this;
            var currentRGB = '';
            var $currentSlider = $();
            var currentOffset = {};
            var $window = $(window);
            var mouseMove = function (e) { // don't render sliders here. Just setColor;
                var color = {}; // new calculated color

                color[currentRGB] = (e.pageX - currentOffset.left) / that.currentWidth * 255;
                that.color.setColor(color, 'rgb'); // set calculated value
                that.render(); // tell colorPicker to render
            };

            $elm.append( // render extra sliders and patch
                '<div class="cp-rgb-r"><div class="cp-rgb-r-cursor"></div></div>' +
                '<div class="cp-rgb-g"><div class="cp-rgb-g-cursor"></div></div>' +
                '<div class="cp-rgb-b"><div class="cp-rgb-b-cursor"></div></div>' +
                '<div class="cp-patch"><div></div></div><div class="cp-disp"></div>');

            this.$sliders = $elm.find('.cp-rgb-r, .cp-rgb-g, .cp-rgb-b');
            this.cursorRStyle = this.$sliders.find('.cp-rgb-r-cursor')[0].style; // caching for faster render renderCallback
            this.cursorGStyle = this.$sliders.find('.cp-rgb-g-cursor')[0].style;
            this.cursorBStyle = this.$sliders.find('.cp-rgb-b-cursor')[0].style;

            this.patchStyle = $('.cp-patch div')[0].style;
            this.$display = $('.cp-disp');
            this.$alpha = $elm.find('.cp-alpha');

            $elm.on('mousedown', '.cp-rgb-r, .cp-rgb-g, .cp-rgb-b', function (e) { // event delegation
                $currentSlider = $(this); // well ;o)
                currentRGB = this.className.replace(/cp-rgb-(\D){1}/, "$1"); // cp-rgb-r -> r
                currentOffset = $currentSlider.offset(); // for later calculations
                that.currentWidth = $currentSlider.width(); // ... also here
                $window.on('mousemove.rgb', mouseMove); // install mousemove listener
                e.preventDefault && e.preventDefault(); // prevent selecting text
                mouseMove(e); // render color picker the first time
                return false; // for IE
            });

            $window.on('mouseup', function (e) {
                $window.off('mousemove.rgb'); // turn off mousemove event handler
            });

            $('#colorPickerMod').appendTo('head');

        },
        positionCallback: function ($elm) {
            var _$UI = this.$UI, // this is the instance; this.$UI is the colorPicker DOMElement
                position = $elm.offset(), // $elm is the current trigger / element that opened the colorPicker
                $window = $(window),
                gap = this.color.options.gap; // this.color.options stores all options

            var currentWPosY = window.scroll_current_pos_y

            // _$UI.appendTo($elm.closest('.wrapper').eq(0)); // demonstration only
            var left = position.left;
            var top = position.top + $elm.outerHeight() + currentWPosY;
            return {
                'left': left,
                'top': top
            }

        },
        renderCallback: function ($elm, toggled) {
            var colors = this.color.colors;
            var text = this.color.toString();
            var rgb2 = '#' + colors.HEX;
            var rgb = colors.RND.rgb;
            var oldValue = '';
            var currentValue = '';
            if (toggled === true) {
                $(".cp-color-picker").css("z-index", "10005");
            } else if (toggled === false) {
                if (itemPreview !== null && itemPreview !== undefined && itemPreview !== "")
                    $(itemPreview).css('color', rgb2);
                if (legend !== null && legend !== undefined && legend !== "") {
                    if ($('#' + legend).length > 0)
                        $('#' + legend).text(rgb2);
                }
                var colorSelected = "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")";
                var newColor = getColorBasedTo(colorSelected);
                if (element !== null && element !== undefined)
                    element.trigger('change');
                if (newColor !== "") {
                    var newColorRgb = 'rgb(';
                    if (newColor == '#ffffff')
                        newColorRgb += '255, 255, 255)';
                    else
                        newColorRgb += '0, 0, 0)';
                    if (fields != null && fields != undefined) {
                        var listFields = fields.split(',');
                        listFields.forEach(function (item) {
                            var inputCurrentValue = $('input[name="' + item + '"]').val();
                            if ((inputCurrentValue == '' || inputCurrentValue == '#ffffff' || inputCurrentValue == '#000000') && inputCurrentValue != newColorRgb) {
                                $('input[name="' + item + '"]').val(newColorRgb);
                                if (newColor == "#000000") {
                                    $('input[name="' + item + '"]').css('background-color', '#000000');
                                    $('input[name="' + item + '"]').css('color', 'rgb(221, 221, 221)');
                                } else {
                                    $('input[name="' + item + '"]').css('background-color', '#ffffff');
                                    $('input[name="' + item + '"]').css('color', 'rgb(34, 34, 34)');

                                }
                            }
                        });

                    }
                }
            }
            this.patchStyle.backgroundColor = this.color.toString(); // no DOM access
            this.$display.text(rgb2); // ...and text aside

            this.currentWidth = this.currentWidth || this.$UI.find('.cp-rgb-r')[0].clientWidth; // first time
            this.cursorRStyle.left = (rgb.r / 255 * this.currentWidth) + 'px'; // render sliders
            this.cursorGStyle.left = (rgb.g / 255 * this.currentWidth) + 'px'; // faster than with $().css
            this.cursorBStyle.left = (rgb.b / 255 * this.currentWidth) + 'px';


        }

    };
    return options;
}


function generateClearLink(nameElement, idTag) {
    var tag = "<a href='#' id='" + idTag + "' class='color-picker-clear' data-element-name='" + nameElement + "'>" + window.translation.clear + "</a>";
    return tag;
}

function is_recaptcha_active() {

    return getClientSecurityKey() !== undefined;
}


function validate_content_page_block() {
    if ($('body').find('#content-page.blockContainer').length > 0) {
        var contentPageHasContent = ($('#content-page.blockContainer').find('.content').children().length > 0
            || $('#content-page.blockContainer').find('.content').text().trim() !== '') ? true : false;

        if (!contentPageHasContent) {
            if ($('body').hasClass('backend-page')) {
                var textHelp = '<h2>' + window.translation.layout_preview_text + '</h2>';

                $('#content-page.blockContainer').find('.content').empty().append(textHelp);
            }
            else {
                //$('#content-page.blockContainer').parent().remove();
            }
        }
    }

    return false;
}


function hasCheckBoxField(currentText) {
    const hasCheckbox = /<input\b[^>]*type=["']?checkbox["']?/i.test(currentText);
    return hasCheckbox;
}

function hasAnchorField(currentText) {
    const hasAnchor = /<a\b[^>]*>/i.test(currentText);
    return hasAnchor;
}

function isEmptyData(currentItem) {
    let data = $(currentItem);
    data.find('strong').remove();
    data.find('span.filter-value').remove();
    if (data.children().length === 0) {
        //verifying text
        let innerContent = data.text();
        if (innerContent === '')
            return true;
    }
    return false;
}

function validateTextForDataTable(currentText) {
    const hasAnchor = hasAnchorField(currentText);
    const hasCheckbox = hasCheckBoxField(currentText);
    return hasAnchor || hasCheckbox;
}

function adding_styles_in_region() {
    $('div.container').each(function () {
        var item = $(this);
        var overrideColors = item.attr('data-override-colors');
        var menuBackgroundColor = item.attr('data-background-color');
        if (menuBackgroundColor != null && menuBackgroundColor != undefined && menuBackgroundColor.trim() != "") {
            item.find('.login-block').css('background-color', menuBackgroundColor);
        }
        if (overrideColors != null && overrideColors != undefined && overrideColors == "true") {
            var titleColor = item.attr('data-title-color');
            var textColor = item.attr('data-text-color');
            var linkColor = item.attr('data-link-color');
            var linkHoverColor = item.attr('data-link-hover-color');
            var formLabelColor = item.attr('data-form-label-color');

            if (titleColor != null && titleColor != undefined && titleColor.trim() != "") {
                item.find('h1').css('color', titleColor);
                item.find('h2').css('color', titleColor);
                item.find('h3').css('color', titleColor);
                item.find('h4').css('color', titleColor);
                item.find('h5').css('color', titleColor);
                item.find('h6').css('color', titleColor);
            }
            if (textColor != null && textColor != undefined && textColor.trim() != "") {
                item.find('p').css('color', textColor);
                item.find('li').css('color', textColor);
            }
            if (linkColor != null && linkColor != undefined && linkColor.trim() != "") {
                item.find('a').each(function () {
                    if (!$(this).hasClass('button')) {
                        $(this).css('color', linkColor);
                    }
                });
            }
            if (linkHoverColor != null && linkHoverColor != undefined && linkHoverColor.trim() != "") {
                item.find('a').each(function () {
                    var link = $(this);
                    if (!link.hasClass('button')) {
                        link.hover(function (e) {
                            if (e.type === "mouseenter") {
                                $(this).css('color', linkHoverColor);
                            } else {
                                $(this).css('color', linkColor);
                            }

                        });
                    }
                });
            }
            if (formLabelColor != null && formLabelColor != undefined && formLabelColor.trim() != "") {
                item.find('label').each(function () {
                    if (!$(this).hasClass('key-already-filled') && !$(this).hasClass('blue-key') && !$(this).hasClass('black-key') && !$(this).hasClass('light-gray-key') && !$(this).hasClass('green-key')) {
                        $(this).css('color', formLabelColor);
                    }
                });

            }

        }

    });
}
function open_profiles_management() {
    if (!is_backend_page()) return;
    $('#profiles-management .profiles-list').empty();
    $('#profiles-management .processing_screen').show();
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $.ajax({
        url: urlSite + "admin/GetProfiles",
        dataType: "json",
        success: function (data) {
            if ('Profiles' in data && 'Permissions' in data) {
                data.Profiles.forEach(function (Profile) {
                    var container = $('<div>');
                    container.append('<h4 class="profile-name">' + Profile.Name + '</h4>');
                    var table_container = $('<div class="profile-table-container">');
                    var table = $('<table>').append(
                        $('<thead>').append(
                            $('<tr>').append(
                                $('<td>').text(window.translation.permission),
                                $('<td>').text(window.translation.read),
                                $('<td>').text(window.translation.create),
                                $('<td>').text(window.translation.edit),
                                $('<td>').text(window.translation.delete)
                            )
                        ),
                        $('<tbody>')
                    );
                    data.Permissions.forEach(function (Permission) {
                        var can_read = $('<input>', { type: 'checkbox', 'data-profile': Profile.Name, 'data-permission': Permission, name: 'CanRead', class: 'profile_permission_checkbox' });
                        var can_create = $('<input>', { type: 'checkbox', 'data-profile': Profile.Name, 'data-permission': Permission, name: 'CanCreate', class: 'profile_permission_checkbox' });
                        var can_edit = $('<input>', { type: 'checkbox', 'data-profile': Profile.Name, 'data-permission': Permission, name: 'CanEdit', class: 'profile_permission_checkbox' });
                        var can_delete = $('<input>', { type: 'checkbox', 'data-profile': Profile.Name, 'data-permission': Permission, name: 'CanDelete', class: 'profile_permission_checkbox', disabled: true });
                        if (Permission in Profile.ProfilePermissions) {
                            if (Profile.ProfilePermissions[Permission].CanRead) {
                                can_read.prop('checked', true);
                            }
                            if (Profile.ProfilePermissions[Permission].CanCreate) {
                                can_create.prop('checked', true);
                            }
                            if (Profile.ProfilePermissions[Permission].CanEdit) {
                                can_edit.prop('checked', true);
                            }
                            if (Profile.ProfilePermissions[Permission].CanDelete) {
                                can_delete.prop('checked', true);
                            }
                        }
                        var permission_text = Permission;
                        switch (Permission) {
                            case "Attendance":
                                permission_text = window.translation.attendance;
                                can_create.prop('disabled', true);
                                break;
                            case "Connection":
                                permission_text = window.translation.connection;
                                break;
                            case "Contact Communication":
                                permission_text = window.translation.contact_communication;
                                can_read.prop('disabled', true);
                                can_edit.prop('disabled', true);
                                break;
                            case "Occurrence":
                                permission_text = window.translation.occurrence;
                                break;
                            case "Recurrence":
                                permission_text = window.translation.recurrence;
                                can_read.prop('disabled', true);
                                can_edit.prop('disabled', true);
                                can_create.prop('disabled', true);
                                break;
                            case "Volunteer Opportunity":
                                permission_text = window.translation.volunteer_opportunity;
                                if (Profile.Name == "Volunteer Leader") {
                                    can_create.prop('disabled', true);
                                }
                                break;
                            case "Contact":
                                permission_text = window.translation.contact;
                                break;
                            case "My Organization Contact":
                                permission_text = window.translation.staff_contacts;
                                break;
                            case "My Organization":
                                permission_text = window.translation.myorganization;
                                can_create.prop('disabled', true);
                                break;
                            case "Reports":
                                permission_text = window.translation.reports;
                                can_edit.prop('disabled', true);
                                can_read.prop('disabled', true);
                                break;
                            case "Skills":
                                permission_text = window.translation.skills;
                                can_edit.prop('disabled', true);
                                can_delete.prop('disabled', false);
                                break;
                            case "Location":
                                permission_text = window.translation.location + " (" + window.translation.not_affect_opportunity + ")";
                                break;
                        }
                        var row = $('<tr>').append(
                            $('<td>').text(permission_text),
                            $('<td>').append(can_read),
                            $('<td>').append(can_create),
                            $('<td>').append(can_edit),
                            $('<td>').append(can_delete)
                        );
                        if (Profile.Name != "Volunteer Leader" || Permission != "My Organization Contact")
                            table.find('tbody').append(row);
                    });

                    try {
                        var voCreate = table.find('input[data-permission="Volunteer Opportunity"][name="CanCreate"]').is(':checked');
                        var occCreate = table.find('input[data-permission="Occurrence"][name="CanCreate"]').is(':checked');

                        table.find('input[data-permission="Recurrence"][name="CanCreate"]').prop("disabled", (voCreate === true || occCreate === true) ? false : true)
                    } catch (e) {
                        console.log(e.message);
                    }

                    //can_create.prop('disabled', voCreate === true ? false : true);
                    table_container.append(table);
                    container.append(table_container);
                    $('#profiles-management .profiles-list').append(container);
                });
            }
        },
        complete: function (jqXHR, textStatus) {
            $('#profiles-management .processing_screen').hide();
        }
    });
};
/* 
 * ARS - Workflow
 */

/*
	Custom events and methods to implement on project
*/
var called_open_activation = false;

var MAX_MENU_ITEMS = 16;

var IS_LLAMAPI_ENABLED = false;

//--------------------------------------------------
// Start: Packaging Manager Constants
const CMS_GALLERY_PKG_ITEM_SOURCE = '0';
const CURRENT_PUBLIC_SITE_PKG_ITEM_SOURCE = '1';
const SALESFORCE_TYPE_PKG_ITEM_SOURCE = '2';
// End: Packaging Manager Constants
//--------------------------------------------------

$(document).ready(function () {

    if (is_new_cms_active()) return;

    IS_LLAMAPI_ENABLED = (window.is_llamapi !== undefined && window.is_llamapi !== null ? window.is_llamapi : false);


    // to set the global variable related to the sharing portal plus
    set_info_sharing_portal_plus_page();

    validate_redirection_to_new_open_activation_module();

    //Event for Image Block
    validate_image_form();
    validate_corporate_image_form();
    validate_sponsors_form();

    // Event to delelte blocks
    delete_block();

    //Delet block image
    delete_block_image();

    //Edit meta tag
    edit_meta_tag();

    //Event to set the CKEditor filemanager
    get_ckeditor_file();

    //Initialize drag & drop library
    initiate_dragula();

    //Event to show link "Edit Page" in sticky top bar.
    populate_link_to_edit_page();

    //Radio Button Change
    radio_button_change();

    //Reset metatags section
    reset_modals();

    //Remove meta tag
    remove_meta_tag();

    //Save meta tag
    save_meta_tag();

    //Method to show tip message
    show_help_tip();

    //Validate menu save
    validate_save_menu();

    //Validate volunteer setting
    validate_submit_forms();

    //Remove ARS Rule
    ars_remove_rule();

    //Remove ARS Page
    ars_remove_page();

    //Remove Condition
    ars_remove_condition();

    //Method to capture the click on save button for Volunteer SignUp fields management
    vol_fields_management_save_page();

    //Method to modal of code injection
    backend_code_injection_settings();

    //Method to multiselect widget in modal to manage blocks
    backend_multiselect_widget();

    // Method to add dependences between the location name field and the city/state and distance field
    calendar_form_settings_add_dependences_event();


    backend_custom_session_var();

    adv_checkbox_rules();

});

function authorized_for_in_advance_section(formSelector) {

    $(formSelector).find('.authorized-for-role').addClass("hide");

    $(formSelector + ' select#advance-setting-authorized-for').change(function () {
        let parentElement = $(this).parents('.authorized-for-role-section');
        if ($(this).val() != 1) {
            parentElement.find('.authorized-for-role').addClass("hide");
        } else {
            parentElement.find('.authorized-for-role').removeClass("hide");
        }
    });
}

function methods_with_resources_backend() {
    if (!is_backend_page()) return;

    if (is_new_cms_active()) return;

    if (window.translation) {

        //Create Page
        ars_create_or_update_page();

        //Add meta tags
        add_meta_tags();

        //Add slide
        add_slide();

        //Event of Basic Search Block Reveal
        backend_basic_search_edit_events();

        //Event of Basic Search Block Reveal
        backend_advanced_search_edit_events();

        //Event for Corporate Image Block
        backend_corporate_image_block();

        // Backend Wysiwyg Settings
        backend_wysiwyg_block();

        //Events of imageBlock
        backend_image_block();

        //Events to reporting modal
        backend_reporting_settings_modal();

        //CC email setting modal
        backend_cc_email();

        // URL Redirects modal
        backend_url_redirects();

        //Check In Settings
        checkin_settings_redirects();

        // Backend For Invitation Code
        backend_invitation_code();

        //Event for social network block
        backend_social_network_block();

        //Event of RSS Block Reveal
        backend_rss_block_edit_events();

        //Event for video Block
        backend_video_block();

        //Sponsors Events
        add_sponsor();
        delete_sponsor();

        //  Save Menu Item
        ajax_save_menu_item();

        //Events to add new ARS Condition Rule
        ars_add_rule_condition();

        //Events to allow conditions
        ars_allow_conditions();

        //Events of ars page reveal
        ars_page_events();
        add_update_ars_wysiwyg_block();
        add_update_ars_waiver_block();
        events_setting_donation_block();
        delete_ars_block();

        //Volunteer Reg/SignUp Workflow Page
        ars_workflow_config();

        //Branch Logic Config
        ars_branch_config();

        //Event to capture the change of the fields DD
        ars_branch_field_change();

        //Event to capture the close button of the Workflow modal
        ars_close_workflow_modals();

        //Event to capture the close button of the ARS page modal
        ars_confirm_page_changes();

        //Add links to edit elements
        append_link_edit_backend();

        //Event to manage calendar form settings
        backend_calendar_form_settings();

        //Event of menu editting reveal
        backend_menu_edit_events();

        //Event for Slider Block
        backend_slider_block();
        validate_sliderimage_form();

        //Event for sponsor block
        backend_sponsor_block();

        //Event to manage volunteer form settings
        backend_volunteer_form_settings();

        //Delete slide
        delete_slide();

        //Load Admin Menus of the site
        load_admin_menus();

        //Load Admin Menus for SignUp Workflows
        load_addons_section_menus();

        //Recycle bin events
        recycle_bin_events();

        // RollBack events 
        rollback_event();

        //Retrieve Page by url
        page_config();

        //Retrieve Pages list
        page_list();

        //Events to theme view link
        theme_view_events();

        //Toggle of container
        toggle_component();

        //Events of page reveal
        validate_save_page();

        //Save ARS Page
        ars_save_page();

        //Save ARS Workflow
        ars_save_workflow();

        //Delete ARS Workflow
        ars_delete_workflow();

        //Save ARS Rules
        ars_save_rules();

        //Events for rules toogle
        ars_rule_see_all_event();

        //Event to manage personal information form settings
        backend_personal_information_form_settings();
        backend_organization_form_settings();

        //Event to manage First Step Volunteer Opportunity form settings
        backend_first_step_vol_opp_form_settings();

        //Activation Module Management
        /*activation_module_management();*/

        //Open profiles Management
        profiles_management();

        //Method to open invitation code settings
        open_invitation_code();

        //Method to open opportunity details settings
        manage_opportunity_details_setting();

        //Contac Page settings
        backend_contact_page_form_settings();

        //Team Page settings
        backend_team_page_form_settings();

        //Connection Page Settings
        backend_connection_page_form_settings();

        //Columns List Settings
        backend_columns_list_settings();

        //Standard Form Settings
        backend_standard_form_settings();

        //Backend For GA Analytics Settings
        backend_ga_analytics_settings();

        //Overview Settings
        backend_overview_form_settings();

        //selfReport page Settings
        selfreport_page_settings();

        //Skill Documentation page Settings
        skill_document_settings();

        //Skill page Settings
        skill_settings();

        backend_gallery_settings();

        //Packaging Manager
        packaging_manager_settings();

        //Browse organization
        browse_organization_settings();

        //Connection Page Settings
        backend_emailing_contacts_templates_settings();

        backend_custom_system_pages();



        // cookie consent settings
        backend_cookie_consent_settings();

        //validate changes to Save.
        validate_changes_to_save();

        //backend for change default theme
        if (IS_LLAMAPI_ENABLED == true) {
            backendChangeDefaultTheme();
        }

        eventsDependenceLocationType();

        //Event for login Block
        backend_login_block();

        //Event for sitewide
        validate_custom_tag();

        mobile_app_settings();


        load_organization_detail_modal();

        load_special_event_modal();


        verification_code_settings();

        EvemtEvalueateRunInServerCondition();

        //Export Pages CSV
        Export_pages_to_scv();
    }
}

function _assign_value_session_storage(storageName, property, value, elementIdArs, replace) {
    var dataLocalStorage = sessionStorage.getItem(storageName);
    var dataJson = JSON.parse(dataLocalStorage);

    if (replace === true) {
        dataJson = value;
    }
    else if (elementIdArs == '') {
        dataJson[property] = value;
    }
    else {
        for (var i = 0; i < dataJson.length; i++) {
            if (dataJson[i].idElement === elementIdArs) {
                dataJson[i][property] = value;
            }
        }
    }

    //Assign again value to sessionStorage
    var dataSetLocalStorage = JSON.stringify(dataJson);
    sessionStorage.setItem(storageName, dataSetLocalStorage);
}

function _assign_value_local_storage(localStorageName, property, value, elementIdArs, replace) {
    var dataLocalStorage = localStorage.getItem(localStorageName);
    var dataJson = JSON.parse(dataLocalStorage);

    if (replace === true) {
        dataJson = value;
    }
    else if (elementIdArs == '') {
        dataJson[property] = value;
    }
    else {
        for (var i = 0; i < dataJson.length; i++) {
            if (dataJson[i].idElement === elementIdArs) {
                dataJson[i][property] = value;
            }
        }
    }

    //Assign again value to localStorage
    var dataSetLocalStorage = JSON.stringify(dataJson);
    localStorage.setItem(localStorageName, dataSetLocalStorage);
}

function ars_add_rule_condition() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a.add-condition', function () {
        ars_add_condition();
    });
}

function ars_add_condition() {
    var formId = parseInt($('input[name="formId"]').val());
    var formType = parseInt($('input[name="formType"]').val());
    var pageId = parseInt($('#ars-branch-logic input[name="page-id"]').val());
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var arsType = $('input[name="workflow-type"]').val();
    var elementReveal = 'ars-branch-logic';
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';

    if ($('body').hasClass('llamapi-system') && arsType === '0') {
        formId = parseInt($('select[name="ars-registration-block-id"]').val());
    }

    $.ajax({
        method: "POST",
        url: urlSite + "ARS/GetFormFields",
        data: { formId: formId, formType: formType, arsType: arsType, pageId: pageId },
        beforeSend: function () {
            $('#' + elementReveal + ' .processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        var sufix = parseInt($('input[name="cond_sufix"]').val());
        if (jsonResult.length === 0) {
            var not_conditions_available = window.translation.not_conditions_available;
            $('.rule-conditions').html('<div class="row desc"><div class="columns small-12 text-left"><i class="text-left middle inline">' + not_conditions_available + '</i></div></div>');
            $('#' + elementReveal + ' .processing_screen').hide();
        } else {
            ars_display_branch_rules_conditions(jsonResult, null, null, null, null, null, sufix, formId, null);
            sufix++;
            $('input[name="cond_sufix"]').val(sufix);
            $('#' + elementReveal + ' .processing_screen').hide();
        }

    });
}

function get_ars_form_fields(fData){
    var formId = parseInt($('input[name="formId"]').val());
    var formType = parseInt($('input[name="formType"]').val());
    var pageId = parseInt($('#ars-branch-logic input[name="page-id"]').val());
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var arsType = $('input[name="workflow-type"]').val();
    var elementReveal = 'ars-branch-logic';
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';

    if ($('body').hasClass('llamapi-system') && arsType === '0') {
        formId = parseInt($('select[name="ars-registration-block-id"]').val());
    }
     $.ajax({
        method: "POST",
        url: urlSite + "ARS/GetFormFields",
        data: { formId: formId, formType: formType, arsType: arsType, pageId: pageId },
        beforeSend: function () {
            $('#' + elementReveal + ' .processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        process_autocomplete_for_branch_logic(jsonResult, fData,null,false, false);//TODO:check if last param must be false
        $('#' + elementReveal + ' .processing_screen').hide();
    });
}



function ars_allow_conditions() {
    if (!is_backend_page()) return;
    $(document).on('change', '#ars-branch-logic #allow-cond', function () {
        if ($(this).prop('checked')) {
            ars_add_condition();
            $('input[name="cond_sufix"]').val(1);
            $('#ars-branch-logic .branch-cond').removeClass('is-hidden');
        } else {
            $('#ars-branch-logic .branch-cond').addClass('is-hidden');
            $('.conditions').empty();
        }
    });
}

function ars_branch_config() {
    if (!is_backend_page()) return;
    var IS_LlamaPi = window.is_llamapi;
    var instancePrefix = (window.instance_prefix !== undefined) ? window.instance_prefix : 'HOC__';
    $(document).on('click', 'a[data-element-reveal="ars-branch-logic"]', function () {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        if (!$(this).hasClass('disabled')) {
            var elementReveal = $(this).data('element-reveal');
            var op = $(this).data('from');
            var ruleId = $(this).data('rule-id');
            var pageId = $(this).data('page-id');
            var type = $(this).data('type');
            var forTitle = $(this).closest('.step-page').find('.step-title').text();

            var formId = 0;
            if (IS_LlamaPi == true && $(this).parents('form').find('select[name="ars-registration-block-id"]').length > 0) {
                formId = $(this).parents('form').find('select[name="ars-registration-block-id"]').val();
            }
            $('.rule-conditions').removeClass('is-hidden');
            $('#allow-cond').attr('disabled', false);
            $('.allow-cond-switch .switch-paddle').removeClass('disabled');
            $('.external-url').hide();

            $('#' + elementReveal + ' select[name=goto]').empty();

            //var varJson = localStorage.getItem("vol-workflow-pages");
            var varJson = sessionStorage.getItem("vol-workflow-pages");

            if (varJson != null && varJson != '') {
                var pages = JSON.parse(varJson);

                pages.forEach(function (item) {
                    if (item.pageId != pageId) {
                        $('#' + elementReveal + ' select[name=goto]').append($("<option></option>")
                            .attr("value", item.pageId)
                            .text(item.pageName));
                    }
                });
            }

            if (type == '4') {

                $('#' + elementReveal + ' select[name=goto]').addClass('for-login');
                if (IS_LlamaPi) {
                    $('#' + elementReveal + ' select[name=goto]').append($("<option></option>")
                        .attr("value", 0)
                        .text("Account Overview"));

                } else {
                    $('#' + elementReveal + ' select[name=goto]').append($("<option></option>")
                        .attr("value", 0)
                        .text("Volunteer Account Overview"));

                }

                $('#' + elementReveal + ' select[name=goto]').append($("<option></option>")
                    .attr("value", -1)
                    .text("Specific Url"));


            } else if (type == '0' || type == '1') {
                $('#' + elementReveal + ' select[name=goto]').addClass('for-login');
                $('#' + elementReveal + ' select[name=goto]').append($("<option></option>")
                    .attr("value", 0)
                    .text("Success"));
                $('#' + elementReveal + ' select[name=goto]').append($("<option></option>")
                    .attr("value", -1)
                    .text("Specific Url"));
            } else {
                $('#' + elementReveal + ' select[name=goto]').removeClass('for-login');
                $('#' + elementReveal + ' select[name=goto]').append($("<option></option>")
                    .attr("value", 0)
                    .text("Success"));

            }

            validate_go_to_select(type, elementReveal);

            $('#' + elementReveal + ' input[name=page-id]').val(pageId);
            $('#' + elementReveal + ' input[name=type]').val(type);
            $('#' + elementReveal + ' input[name=rule-id]').val(ruleId);

            $('#' + elementReveal + ' .conditions').empty();

            $('input[name="formId"]').val(0);
            if (type == "3" || type == 3) {
                $('input[name="formType"]').val(2);
            } else {
                $('input[name="formType"]').val(0);
            }

            if (op === 'edit') {
                $('#ars-branch-logic .branch-cond').addClass('is-hidden');
                $('.conditions').empty();
                var arsType = $('input[name="workflow-type"]').val();

                var formIdToSend = 0;
                if (arsType == 0 && formId > 0)
                    formIdToSend = formId;

                $.ajax({
                    method: "POST",
                    url: urlSite + "ARS/GetRuleInfo",
                    data: { ruleId: ruleId, arsType: arsType, formId: formIdToSend },
                    beforeSend: function () {
                        $('#' + elementReveal).find('.processing_screen').show();
                        $('#' + elementReveal).foundation('open');
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.status == '200') {
                        if (jsonResult.any_all != null)
                            $('select[name="and_or"]').val(jsonResult.any_all);
                        $('select[name="goto"]').val(jsonResult.redirectTo);
                        if (jsonResult.type != null && jsonResult.type != undefined && (jsonResult.type == '4' || jsonResult.type == '0' || jsonResult.type == '1')) {
                            if (jsonResult.redirectTo == '-1' && jsonResult.urlToRedirect != null) {
                                $('input#gotourl').val(jsonResult.urlToRedirect);
                                $('.external-url').show();
                            } else {
                                $('.external-url').hide();
                            }
                        }
                        if (jsonResult.formId != null)
                            $('input[name="formId"]').val(jsonResult.formId);
                        if (jsonResult.formType != null)
                            $('input[name="formType"]').val(jsonResult.formType);
                        if (jsonResult.condition != null) {
                            var jsonResult_condition = jsonResult.condition;
                            var formType = $('input[name="formType"]').val();
                            
                            if (jsonResult.condition != undefined && jsonResult.condition != null && jsonResult.condition.length > 0) {
                                $.ajax({
                                    method: "POST",
                                    url: urlSite + "ARS/GetSelectedFields",
                                    data: { conditions: JSON.stringify(jsonResult.condition), pageId: jsonResult.pageId, formType: formType, arsType: arsType, formId: (jsonResult.formId != undefined ? jsonResult.formId : 0) },
                                }).done(function (dataInner) {
                                    var jsonInnerResult = JSON.parse(dataInner);
                                    var sufix = 1;
                                    var formId = parseInt($('input[name="formId"]').val());
                                    jsonInnerResult.forEach(function (item) {
                                        if (item.type === null || item.type === undefined || item.type === '') {
                                            //we need to find the type
                                            jsonResult.fields.forEach(function (f) {
                                                if (f.field == item.field) {
                                                    item.type = f.type;
                                                }
                                            });
                                        }

                                        let llamaSiteRoles = jsonResult.llamaSiteRoles ? JSON.parse(jsonResult.llamaSiteRoles) : null;
                                        ars_display_branch_rules_conditions(jsonResult.fields, item.field, item.op, item.data, item.dataOptions, item.type, sufix, formId, llamaSiteRoles);
                                        sufix++;
                                    });
                                    $('input[name="cond_sufix"]').val(sufix);
                                    $('#ars-branch-logic #allow-cond').prop('checked', true);
                                    $('#ars-branch-logic .branch-cond').removeClass('is-hidden');
                                    $('#' + elementReveal + ' .processing_screen').hide();
                                });
                            }
                            else {
                                $('#' + elementReveal + ' .processing_screen').hide();
                            }
                        }
                        else {
                            $('#' + elementReveal + ' .processing_screen').hide();
                        }
                    }
                    else {
                        $('#' + elementReveal + ' .processing_screen').hide();
                    }
                    $('#' + elementReveal + ' .for-title').text(forTitle);
                });
            }
            else if (op == 'create') {

                var formId = 0;
                $('#' + elementReveal).foundation('open');

                if (pageId != '0') {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "ARS/ExistFormBlock",
                        data: { pageId: pageId },
                        beforeSend: function () {
                            $('#' + elementReveal).find('.processing_screen').show();

                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status === 200) {
                            formId = jsonResult.formId;
                            formType = jsonResult.formType;
                            $('input[name="formId"]').val(formId);
                            $('input[name="formType"]').val(formType);
                        }
                        else {
                            $('input[name="formId"]').val(0);
                            $('input[name="formType"]').val(0);
                        }

                        if (pageId != '0' && parseInt(formId) == 0) {
                            //    $('#allow-cond').attr('disabled', true);
                            //    $('.allow-cond-switch .switch-paddle').addClass('disabled');
                            //    $('.rule-conditions').addClass('is-hidden');

                        }

                        $('#' + elementReveal).find('.processing_screen').hide();
                    });
                }

                $('#ars-branch-logic .branch-cond').addClass('is-hidden');
                $('.conditions').empty();
                $('input[name="cond_sufix"]').val(1);

                $('#' + elementReveal + ' .for-title').text(forTitle);
            }
        }
    });
}

function ars_close_workflow_modals() {
    if (!is_backend_page()) return;
    $(document).on('click', 'button.workflow-close', function () {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var wId = $('#ars-vol-reg-workflow').find("input[name=workflow-id]").val();
        $.ajax({
            method: "POST",
            url: urlSite + "ARS/WorkflowPendingChanges",
            //data: { pages: localStorage.getItem("vol-workflow-pages"), rules: localStorage.getItem("vol-workflow-rules") },
            data: { pages: sessionStorage.getItem("vol-workflow-pages"), rules: sessionStorage.getItem("vol-workflow-rules") },
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (jsonResult.status == 200) {

                Swal.fire({
                    title: window.translation.discard,
                    text: window.translation.discard_changes,
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true

                }).then(function (result) {

                    if (result.isConfirmed) {
                        if (wId != 0) {
                            $.ajax({
                                method: "POST",
                                url: urlSite + "ARS/RemovingWorkflowPending",
                                //data: { pages: localStorage.getItem("vol-workflow-pages"), rules: localStorage.getItem("vol-workflow-rules") },
                                data: { pages: sessionStorage.getItem("vol-workflow-pages"), rules: sessionStorage.getItem("vol-workflow-rules") },
                            }).done(function (dataInner) {
                                var jsonResultInner = JSON.parse(dataInner);

                                if (jsonResultInner.status == 200) {
                                    $('#ars-vol-reg-workflow').foundation('close');
                                }
                            });
                        }
                        else {
                            $('#ars-vol-reg-workflow').foundation('close');
                        }
                    }

                });

            }
            else if (jsonResult.status == 500) {
                $('#ars-vol-reg-workflow').foundation('close');
            }


            if ($('.delete-workflow').length > 0) {
                $('.delete-workflow').remove();
            }
        });
    });
}

function ars_add_arrows_after_step() {
    if (!is_backend_page()) return;
    if ($('div.step-page').length > 0) {
        //Add arrows after each step
        var labelArrow = '<label class="arrow_down"></label>';

        $('label.arrow_down').remove();
        $('div.step-page').each(function () {
            if ($(this).is(':visible')) {
                $(this).after(labelArrow);
            }
        });

        //Remore of last child
        $('label.arrow_down').last().remove();
    }

    if ($("#vol-workflow-form div.custom-steps .step-page").length > 0) {
        $("#vol-workflow-form").find(".settings-builder-form-clone").show();
    }

}

function ars_display_workflow_success_pages(pageId, pageName, type, subsiteName, multiple, friendlyUrl) {
    var subsiteObj = getSubsiteDataCookie();
    var subsiteLabel = '';
    if (subsiteObj.enable) {
        if (multiple === true || multiple === 'true') {
            subsiteLabel = ' - <span class="exclamation-triangle"></span>' + '<span class="subsite-label">' + window.translation.page_associated_with_multiple_subsites + '</span>';
        } else if (subsiteName === '') {
            subsiteLabel = ' - <span class="exclamation-triangle"></span>' + '<span class="subsite-label">' + window.translation.page_associated_with_main_site + '</span>';
        } else if (subsiteName === subsiteObj.data.Name) {
            subsiteLabel = '';
        } else if (subsiteName !== '') {
            subsiteLabel = ' - <span class="exclamation-triangle"></span>' + '<span class="subsite-label">' + window.translation.page_associated_with_subsite + subsiteName + '</span>';
        }
    } else {
        if (multiple === true || multiple === 'true') {
            subsiteLabel = ' - <span class="exclamation-triangle"></span>' + '<span class="subsite-label">' + window.translation.page_associated_with_multiple_subsites + '</span>';

        } else if (subsiteName !== "") {
            subsiteLabel = ' - <span class="exclamation-triangle"></span>' + '<span class="subsite-label">' + window.translation.page_associated_with_subsite + subsiteName + '</span>';
        }
    }
    var item = '<li class="success-page-custom" data-page-id="' + pageId + '">'
        + '<span>' + pageName + subsiteLabel + '</span>'
        + '<i class="ars-page-url" style="font-size:13px;">' + window.translation.friendly_url + ': ' + friendlyUrl + '</i>'
        + '<div class="actions">'
        + '<a data-element-reveal="ars-page-conf" data-page-id="' + pageId + '" title="' + translation.configure_page + '" data-url="" data-page-id="" data-type="' + type + '" class="edit-success-page"></a>'
        + '<a data-element-reveal="ars-page-delete" data-page-id="' + pageId + '" title="' + translation.remove_page + '" data-url="" data-page-id="" class="delete-success-page"></a>'
        + '</div>'
        + '</li>';
    var object = $(item);
    $('#vol-workflow-form .container-pages.custom-pages ul').append(object);
    $('#vol-workflow-form .container-pages.custom-pages .legend-text span').hide();
}

function ars_display_workflow_pages(pageId, pageName, type, subsiteName, multiple, friendlyUrl) {

    var subsiteObj = getSubsiteDataCookie();
    var subsiteLabelSection = '';
    var subsiteLabel = window.translation.page_associated_with_subsite;
    if (subsiteObj.enable) {
        if (multiple === true || multiple === 'true') {
            
            subsiteLabelSection = '<div class="row subsite-label">'
                + '<span class="exclamation-triangle"></span>'
                + "<i>" + window.translation.page_associated_with_multiple_subsites + '</i>'
                + '<span class="gray">' + window.translation.page_be_careful + '</span>'
                + '</div>';

        }
        else if (subsiteName === '') {
            subsiteLabel = window.translation.page_associated_with_main_site;
            subsiteLabelSection = '<div class="row subsite-label">'
                + '<span class="exclamation-triangle"></span>'
                + "<i>" + subsiteLabel + '</i>'
                + '<span class="gray">' + window.translation.page_be_careful + '</span>'
                + '</div>';
        } else if (subsiteName === subsiteObj.data.Name) {
                subsiteLabelSection = '';
        } else if (subsiteName !== "") {
               subsiteLabelSection = '<div class="row subsite-label">'
                    + '<span class="exclamation-triangle"></span>'
                    + "<i>" + subsiteLabel + subsiteName + '</i>'
                    + '<span class="gray">' + window.translation.page_be_careful + '</span>'
                    + '</div>';
        }
    } else {
        if (multiple === true || multiple === 'true') {
            subsiteLabelSection = '<div class="row subsite-label">'
                + '<span class="exclamation-triangle"></span>'
                + "<i>" + window.translation.page_associated_with_multiple_subsites + '</i>'
                + '<span class="gray">' + window.translation.page_be_careful + '</span>'
                + '</div>';

        } else if (subsiteName !== "") {
            subsiteLabelSection = '<div class="row subsite-label">'
                + '<span class="exclamation-triangle"></span>'
                + "<i>" + subsiteLabel + subsiteName + '</i>'
                + '<span class="gray">' + window.translation.page_be_careful + '</span>'
                + '</div>';
        }
    }

    var item = '<div class="step-page" data-page-id="' + pageId + '" >'
        + '<div class="row">'
        + '<div class="medium-6 columns">'
        + '<h3 class="step-title" style="margin-bottom:0;padding:0;">' + pageName + '</h3>'
        + '<i class="ars-page-url" style="font-size:13px;">' + window.translation.friendly_url + ': ' + friendlyUrl + '</i>'
        + '</div>'
        + '<div class="medium-6 columns page-buttons">'
        + '<a data-element-reveal="ars-branch-logic" data-from="create" data-page-id="' + pageId + '" data-rule-id="0" data-type="' + type + '" title="' + translation.add_branch_logic + '" class="button custom-button">' + translation.add_branch_logic + '</a>'
        + '<a data-element-reveal="ars-page-conf" data-page-id="' + pageId + '" data-modal-from="' + ars_map_workflow_type_to_data_workflow(type) + '" title="' + translation.configure_page + '" data-url="" data-page-id="" data-type="' + type + '" class="button configure-page-ars ars-secondary-btn">' + translation.configure_page + '</a>'
        + '<a data-element-reveal="ars-page-delete" data-page-id="' + pageId + '" title="' + translation.remove_page + '" data-url="" data-page-id="" class="button ars-secondary-btn remove_button">' + translation.remove_page + '</a>'
        + '</div>'
        + '</div>'
        + '<div class="row step-rules-title" style="margin-top:10px;">'
        + '<div class="columns small-10 text-left">'
        + '<i>' + translation.branch_logic_rules + '</i>'
        + '</div>'
        + '<div class="columns small-2 text-right see_all_less is-hidden">'
        + '<a class="link-open">' + translation.see_all + '</a>'
        + '<a class="link-close is-hidden">' + translation.see_less + '</a>'
        + '</div>'
        + '</div>'
        + '<div class="row step-rules">'
        + '</div>'
        + subsiteLabelSection;
    var object = $(item);
    $('.custom-steps').append(object);
}

function ars_map_workflow_type_to_data_workflow(type) {
    var r = '';

    switch (type) {
        case 0:
            r = 'create-page-vol';
            break;

        case 1:
            r = 'create-page-signup';
            break;

        case 2:
            r = 'create-page-compliance';
            break;

        case 3:
            r = 'create-page-partner';
            break;

        case 4:
            r = 'create-page-log-in';
            break;
    }

    return r;
}

function ars_display_branch_rules(pageId, type, ruleId, conditions, redirectTo, condCount, isDefault, exists,RedirectToUrl) {

    if (!exists) {
        var condClass = (condCount > 1) ? ' multiple-rules' : '';
        var editTitle = translation.edit_rule;
        var editClass = '';

        if (isDefault) {
            conditions = '<i>' + translation.default_rule + '</i>';
            editTitle = translation.rule_not_allowed_edit;
            editClass = ' disabled';
        }
        else if (conditions == null) {
            conditions = '<i>' + translation.next_page + '</i>';
        }


        if (redirectTo == translation.success_page) {
            redirectTo = "<i>" + redirectTo + "</i>";
        }
        var classPR = '';
        if (isDefault == false) {
            classPR = 'has-special-rule';
        }
        if (redirectTo !== null && redirectTo !== undefined && redirectTo.toLowerCase() == 'specific url') {
            classPR += ' specific-url-rule';
        }

        var item = '<div class="row rule ' + classPR + '" data-page-id="' + pageId + '" data-rule-id="' + ruleId + '" data-is-default="' + isDefault + '">'
            + '<div class="large-5 medium-5 small-12 columns">'
            + '<div class="row' + condClass + '">' + conditions + '</div>'
            + '</div>'
            + '<div class="large-5 medium-5 small-12 columns">'
            + '<div class="row redirect-to"><strong>' + translation.go_to + ':</strong> ' + redirectTo + ' <i class="fa-solid fa-arrow-right"></i> <span class="redirect-url">'+ RedirectToUrl +'</span></div>'
            + '</div>'
            + '<div class="large-2 medium-2 small-12 columns">';
        if (!isDefault && conditions.indexOf(translation.home_zip_form) === -1) {
            item = item + '<a data-element-reveal="ars-branch-logic" title="' + editTitle + '" class="edit-rule' + editClass + '" data-from="edit" data-page-id="' + pageId + '" data-type="' + type + '" data-rule-id="' + ruleId + '"></a>';
            item = item + '<a data-element-reveal="" title="Remove Rule" class="remove-rule" data-page-id="' + pageId + '" data-rule-id="' + ruleId + '"></a>';
        }

        item = item + '</div>'
            + '</div>';
        var object = $(item);
        if (pageId != 0) {
            if (isDefault) {
                $('.step-page[data-page-id="' + pageId + '"]').find('.step-rules').append(object);
            }
            else {
                var defaultO = $('.step-page[data-page-id="' + pageId + '"] .step-rules').find('.rule[data-is-default="true"]');
                if (defaultO.length) {
                    object.insertBefore(defaultO);
                }
                else {
                    $('.step-page[data-page-id="' + pageId + '"]').find('.step-rules').append(object);
                }
            }
        }
        else {


            if (isDefault) {
                $('.step-page[data-page-id="' + pageId + '"][data-type="' + type + '"]').find('.step-rules').append(object);
            }
            else {
                var defaultO = $('.step-page[data-page-id="' + pageId + '"][data-type="' + type + '"] .step-rules').find('.rule[data-is-default="true"]');
                if (defaultO.length) {
                    object.insertBefore(defaultO);
                }
                else {
                    $('.step-page[data-page-id="' + pageId + '"][data-type="' + type + '"]').find('.step-rules').append(object);
                }
            }
        }
    }
    else {
        var row = $('.rule[data-rule-id="' + ruleId + '"]').find('.row').first();
        row.html(conditions);
        if (condCount > 1 && !row.hasClass('multiple-rules')) {
            row.addClass('multiple-rules');
        }
        else if (condCount <= 1) {
            row.removeClass('multiple-rules');
        }

        var rowRedirect = $('.rule[data-rule-id="' + ruleId + '"]').find('.row.redirect-to').first();

        if (rowRedirect == translation.success_page) {
            rowRedirect = "<i>" + rowRedirect + "</i>";
        }
        rowRedirect.html('<strong>' + translation.go_to + ':</strong> ' + redirectTo+'<i class="fa-solid fa-arrow-right"></i> <span class="redirect-url">'+ RedirectToUrl +'</span>');
    }
}

function ars_select_values_array(expanded_values_ars,jsonFields){
    if (expanded_values_ars) {
        var textInfo = $('input[name="standard-session-var-list"]').val();
        var jsonResult = (textInfo) ? textInfo.split(";") : [];
        jsonResult.forEach(function (item) {
            var itemToInsert = {};
                itemToInsert.key = item;
                itemToInsert.value = item;
                itemToInsert.group = "sessiontoken";
                itemToInsert.groupName = window.translation.session_variables;
            jsonFields.push(itemToInsert);
        });
    }
    return jsonFields;
}

function ars_multiselect_inner_options(jsonFields) {
    var cad = '';

    if (jsonFields !== null) {
        var textInfo = $('input[name="standard-session-var-list"]').val();
        var jsonResult = (textInfo) ? textInfo.split(";") : [];
        jsonResult.forEach(function (item) {
            var itemToInsert = {};
            itemToInsert.key = item;
            itemToInsert.value = item;
            itemToInsert.group = "sessiontoken";
            itemToInsert.groupName = window.translation.session_variables;
            jsonFields.push(itemToInsert);
        });

        jsonFields.forEach(function (entry) {
            cad += '<option value="' + entry.key + '">' + entry.value + '</option>';
        });
    }
    return cad;

}

function ars_select_inner_options(expanded_values_ars, jsonFields) {
    
    if (expanded_values_ars) {
        var textInfo = $('input[name="standard-session-var-list"]').val();
        var jsonResult = (textInfo) ? textInfo.split(";") : [];
        jsonResult.forEach(function (item) {
            var itemToInsert = {};
                itemToInsert.key = item;
                itemToInsert.value = item;
                itemToInsert.group = "sessiontoken";
                itemToInsert.groupName = window.translation.session_variables;
            jsonFields.push(itemToInsert);
        });

        var cad = ' <option value = \"\" >' + translation.select_one + ' </option >';

        var flagGroup = {
            'static': false
        };
        var groupNames = {
            'static': window.translation.static_variables
        };
        jsonFields.forEach(function (item) {
            if (item.group && (flagGroup[item.group] == null || flagGroup[item.group] == undefined)) {
                flagGroup[item.group] = false;
                groupNames[item.group] = item.groupName;
            }
        });
        var closeGroup = false;
        jsonFields.forEach(function (item) {
            var group = item.group;
            if (!item.group)
                group = 'static';
            if (!flagGroup[group]) {
                if (closeGroup) cad += '</optgroup>';

                cad += '<optgroup label="' + groupNames[group] + '">';
                flagGroup[group] = true;
                closeGroup = true;
            }
            cad += ' <option value = \"' + item.key + '\" >' + item.value + ' </option>';
        });

        if (closeGroup) cad += '</optgroup>';
    }
    else {
        cad = '<option value="">' + translation.select_one + '</option>';
        if (jsonFields !== null) {
            jsonFields.forEach(function (entry) {
                cad += '<option value="' + entry.key + '">' + entry.value + '</option>';
            });
        }
    }
    return cad;
}
function ars_select_values_array_getSession(expanded_values_ars, jsonFields, searchVariable){
    var textInfo = $('input[name="custom-session-var-list"]').val();
    var jsonResult = (textInfo) ? textInfo.split(";") : [];
    if (expanded_values_ars) {
        jsonResult.forEach(function (item) {
            
            var itemToInsert = {};
            itemToInsert.key = item;
            itemToInsert.value = item;
            itemToInsert.group = "sessiontoken";
            itemToInsert.groupName = window.translation.session_variables;
            jsonFields.push(itemToInsert);
        });
    }
    jsonFields = ars_select_values_array(expanded_values_ars, jsonFields);
    return jsonFields;
}

function ars_select_inner_options_getSession(expanded_values_ars, jsonFields, searchVariable) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var cad = '';

    
    var textInfo = $('input[name="custom-session-var-list"]').val();
    var jsonResult = (textInfo) ? textInfo.split(";") : [];
    if (expanded_values_ars) {
        jsonResult.forEach(function (item) {
            
            var itemToInsert = {};
            itemToInsert.key = item;
            itemToInsert.value = item;
            itemToInsert.group = "sessiontoken";
            itemToInsert.groupName = window.translation.session_variables;
            jsonFields.push(itemToInsert);
        });
    }
    cad = ars_select_inner_options(expanded_values_ars, jsonFields);
    return cad;

}

function ars_values_options(jsonFields, sufix, classSelect) {

    var expanded_values_ars = false;

    if (jsonFields != null && jsonFields!=undefined)
        jsonFields.forEach(function (item) {
            if (item.group) {
                expanded_values_ars = true;
            }
        });

    var cad = '<select name="rule_data_' + sufix + '" data-sufix="' + sufix + '" data-required="true" class="inline rule_data ' + classSelect + ' " aria-invalid="false">';

    cad += ars_select_inner_options(expanded_values_ars, jsonFields);
    cad += '</select>';
    cad += '<select name="rule_data_multiselect_' + sufix + '" multiple="multiple" data-sufix="' + sufix + '" data-required="true" class="inline rule_data rule_data_multiselect ' + classSelect +'" aria-invalid="false">';
    cad += ars_multiselect_inner_options(jsonFields);
    cad += '</select>';
    return cad;
}

function process_autocomplete_for_branch_logic(jsonFields, fieldToAdd, dataOptions, IsSelect, isLlamaSiteProfile) {
    var data = '';
    let availableTags = [];
    if (IsSelect && dataOptions && dataOptions.length > 0) {
        for (var i = 0; i < dataOptions.length; i++) {
            if (dataOptions[i].groupName) {
                availableTags.push({category: dataOptions[i].groupName, label:dataOptions[i].value, value:dataOptions[i].key});
            }else{
                availableTags.push({category: "Static Values", label:dataOptions[i].value, value:dataOptions[i].key});
            }
        }
    }else{
        if (jsonFields!=null) {
            data = get_data_for_autocomplete_filter_field_formbuilder(jsonFields, true, false, false);
            for (var i = 0; i < data.length; i++) {
                availableTags.push({category: "Session Variables", label:data[i], value:data[i]});
            }
        }
    }

    let self = $('#ars-branch-logic');
    apply_autocomplete_to_field(self, fieldToAdd, availableTags, isLlamaSiteProfile);
}

function ars_display_branch_rules_conditions(jsonFields, def_field, def_op, def_data, dataOptions, dataType, sufix, formId, llamaSiteRoles) {

    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
    var classSelect = 'is-hidden';
    //var classSelect = (dataType === 4 || dataType === 0 || dataType === 7 || def_field === 'date_of_birth' || dataType === 10 || def_field === 'wrs_code' || def_field === instancePrefix +'Profile_Name__c' || def_field === 'contact_email_contains') ?'is-hidden' : '';
    var IsSelect = (dataType === 4 || dataType === 0 || dataType === 7 || def_field === 'date_of_birth' || dataType === 10 || def_field === 'wrs_code' || def_field === instancePrefix +'Profile_Name__c' || def_field === 'contact_email_contains') ? false : true;
    var classInput = (dataType === 7 || def_field === 'date_of_birth' || dataType === 10) ? '' : 'is-hidden';
    var classInputText = (dataType === 7 || def_field === 'date_of_birth' || dataType === 10) ? 'is-hidden' : '';
    var hpClass = (dataType === 7 || def_field === 'date_of_birth') ? '' : 'is-hidden';

    let fieldContactProfile = instancePrefix + "Profile_Name__c";
    let isLlamaSiteProfile = def_field !== null && def_field !== undefined && def_field.includes(fieldContactProfile);

    if (def_op !== null && def_op !== undefined && (def_op === '_equal_empty_' || def_op === '_not_equal_empty_')) {
        classSelect = 'is-hidden';
        classInput = 'is-hidden';
        classInputText = 'is-hidden';
        hpClass = 'is-hidden';

    }
    var min = 1;
    var item = '<div class="row condition">'
        + '<div class="small-11 columns">'
        + '<div class="row">'
        + '<div class="columns small-4">'
        + '<div class="row">'
        + '<select name="rule_fields_' + sufix + '" data-sufix="'+sufix+'" data-required="true" data-form-id="' + formId + '" class="inline rule_fields jc branch-field" aria-invalid="false">'
        + ars_dynamyc_fields_option(jsonFields, formId)
        + '</select>'
        + '</div>'
        + '</div>'
        + '<div class="columns small-4">'
        + '<div class="row">'
        + '<select name="rule_operator_' + sufix + '" data-sufix="' + sufix + '" data-required="true" class="inline rule_operator" aria-invalid="false">';
    if (dataType === 7 || def_field === 'date_of_birth' || dataType === 10) {
        if (dataType !== 10) {
            item += '<option value="<">' + translation.less_than + '</option>'
                + '<option value=">">' + translation.more_than + '</option>';
        } else {
            min = 0;
            item += '<option value="==">' + window.translation.equals_to + '</option>';
            item += '<option value="!=">' + window.translation.not_equals_to + '</option>';
            item += '<option value=">">' + window.translation.more_than + '</option>';
            item += '<option value="<">' + window.translation.less_than + '</option>';
            item += '<option value=">=">' + window.translation.greater_than_or_equal_to + '</option>';
            item += '<option value="<=">' + window.translation.less_than_or_equal_to + '</option>';
        }
        item += '<option value="_equal_empty_">' + window.translation.is_equal_to_empty + '</option>';
        item += '<option value="_not_equal_empty_">' + window.translation.is_equal_not_empty + '</option>';

    } else if (def_field === 'contact_email_contains' || def_field === 'validate_query_string' || dataType === 4) {
        item += '<option value="_contain_">' + translation.contains + '</option>';
        item += '<option value="_not_contain_">' + translation.not_contains + '</option>';
        item += '<option value="_equal_empty_">' + window.translation.is_equal_to_empty + '</option>';
        item += '<option value="_not_equal_empty_">' + window.translation.is_equal_not_empty + '</option>';
    } else if (def_field === 'wrs_code' || def_field === (instancePrefix + "Profile_Name__c") || dataType === 0) {
        item += '<option value="==">' + translation.equals_to + '</option>';
        item += '<option value="!=">' + translation.not_equals_to + '</option>';
        item += '<option value="_equal_empty_">' + window.translation.is_equal_to_empty + '</option>';
        item += '<option value="_not_equal_empty_">' + window.translation.is_equal_not_empty + '</option>';
    } else if (dataType === '11' || def_field === 'subsite_path') {
        item += '<option value="==">' + translation.equals_to + '</option>';
        item += '<option value="!=">' + translation.not_equals_to + '</option>';
    } 
    else {
        item += '<option value="==">' + translation.equals_to + '</option>';
        item += '<option value="!=">' + translation.not_equals_to + '</option>';
        item += '<option value="_equal_empty_">' + window.translation.is_equal_to_empty + '</option>';
        item += '<option value="_not_equal_empty_">' + window.translation.is_equal_not_empty + '</option>';
    }
    if (dataType === 3) {
        item += '<option value="_multicheck_include_">' + translation.contains + '</option>';
        item += '<option value="_multicheck_notinclude_">' + translation.not_contains + '</options>';
        
    }
    

    item += '</select>'
        + '</div>'
        + '</div>'
        + '<div class="columns small-4">'
        + '<div class="row row-condition-val">'
        + '<input type="text" id="rule_data_text_' + sufix + '" data-required="true" class="rule_data ' + classInputText + '"  name="rule_data_text_' + sufix + '" />'
        + '<input type="hidden" id="rule_data_text_' + sufix + '-unmasked-value"  name="rule_data_text_' + sufix + '-unmasked-value" />'
        //-----------------------------------
        + ars_values_options(dataOptions, sufix, classSelect)
        //-------------------------------------
        + '<input type="number" id="rule_data_number_' + sufix + '" data-required="true" class="rule_data ' + classInput + '" min=' + min + ' name="rule_data_number_' + sufix + '" />'
        + '<input type="hidden" id="server_' + sufix + '" name="server_' + sufix + '" />'
        + '<p class="rule_data_help_text help-text ' + hpClass + '">' + translation.number_of_years + '</p>'
        + '</div>'
        + '</div>'
        + '</div>'
        + '</div>'
        + '<div class="small-1 columns">'
        + '<a data-element-reveal="" title="Remove Condition" class="remove-condition"></a>'
        + '</div>'
        + '</div>';

    var object = $(item);
    $('.conditions').append(object);

   

    if (def_field !== null) {
        $('select[name="rule_fields_' + sufix + '"]').val(def_field);
        $('select[name="rule_fields_' + sufix + '"]').first().focus();
    }
    else {
        $('select[name="rule_fields_' + sufix + '"]').focus();
    }

    if (def_data != null && dataType !== 7 && dataType !== 0 && dataType !== 4 && def_field !== 'date_of_birth' && dataType !== 10 && def_field !== 'wrs_code' && def_field !== 'contact_email_contains' && def_field !== (instancePrefix + "Profile_Name__c")) {

        //Special logic STORE_UNMASKED_LLAMAPI_PROFILE_NAME
        let theValueForInput = def_data;
        if (llamaSiteRoles!= null && llamaSiteRoles !== undefined && llamaSiteRoles[def_data] !== undefined) {
            theValueForInput = llamaSiteRoles[def_data];
        }

        $('select[name="rule_data_' + sufix + '"]').val(def_data);
        $('input[name="rule_data_text_' + sufix + '"]').val(theValueForInput);
        $('input[name="rule_data_text_' + sufix + '-unmasked-value"]').val(def_data);
    }
    else if (def_data != null && (dataType === 7 || def_field === 'date_of_birth' || dataType === 10)) {
        $('input[name="rule_data_number_' + sufix + '"]').val(def_data);
    } else if (def_data != null && (dataType === 0 || dataType === 4 || def_field === 'wrs_code' || def_field === 'contact_email_contains' || def_field === (instancePrefix + "Profile_Name__c"))) {

        $('input[name="rule_data_text_' + sufix + '"]').val(def_data);
        $('input[name="rule_data_text_' + sufix + '"]').attr('data-original-value', def_data);

    }

    if (def_op != null) {
        $('select[name="rule_operator_' + sufix + '"]').val(def_op);
    }

    if (dataType == 3) {
        if (def_op === '_multicheck_include_' || def_op === '_multicheck_notinclude_') {
            $('input[name="rule_data_text_' + sufix + '"]').addClass('is-hidden');
            $('input[name="rule_data_text_' + sufix + '"]').val("");
            let valuesMS = def_data.split(',');
            //$('select[name="rule_data_multiselect_' + sufix + '"]').val(valuesMS);
            $('select[name="rule_data_multiselect_' + sufix + '"]').multiselect();
            for (let i = 0; i < valuesMS.length; i++) {
                $('select[name="rule_data_multiselect_' + sufix + '"]').find('option[value="' + valuesMS[i] + '"]').prop('selected', 'selected');
            }
            $('select[name="rule_data_multiselect_' + sufix + '"]').multiselect("reload");

        }
    }

    process_autocomplete_for_branch_logic(jsonFields, 'input[type="text"][name="rule_data_text_' + sufix + '"]', dataOptions, IsSelect, isLlamaSiteProfile);

}

function EvemtEvalueateRunInServerCondition() {

    if (!is_backend_page()) return;
    $(document).on('change', 'select.rule_fields.branch-field', function () {
        var sufix = $(this).data('sufix');
        if ($('input[name="server_' + sufix + '"]').length > 0) {
            var value = $(this).val();

            $('input[name="server_' + sufix + '"]').val('');
            if ($(this).find('option[value="' + value + '"]').length > 0) {

                if ($(this).find('option[value="' + value + '"]').data('server')) {

                    $('input[name="server_' + sufix + '"]').val('true');
                }
            }
        }
    });
}

function ars_branch_field_change() {
    $(document).on('change', 'select.rule_fields', function () {
        ars_field_change_logic(this, null);
    });

    $(document).on('change', 'select.rule_operator', function () {
        var value = $(this).val();
        var sufix = $(this).attr('data-sufix');
        if (value === '_equal_empty_' || value === '_not_equal_empty_') {
            $('input[name="rule_data_text_' + sufix + '"]').val("nullorempty");
            $('input[name="rule_data_text_' + sufix + '"]').addClass('is-hidden');
            $('input[name="rule_data_number_' + sufix + '"]').addClass('is-hidden');
            $('select[name="rule_data_' + sufix + '"]').addClass('is-hidden');
            $('.rule_data_help_text').addClass('is-hidden');
            $('select[name="rule_data_multiselect_' + sufix + '"]').addClass('is-hidden');
            $('select[name="rule_data_multiselect_' + sufix + '"]').closest('.condition').find('.ms-options-wrap').addClass('is-hidden');

        } else {
            var instancePrefix = (window.instance_prefix !== undefined) ? window.instance_prefix : 'HOC__';
            var originalValue = $('input[name="rule_data_text_' + sufix + '"]').attr('data-original-value');
            $('input[name="rule_data_text_' + sufix + '"]').val(originalValue);
            var isDatetimeField = false;
            var isNumberField = false; 
            var isCheckboxField = false;
            var booleanField = false;
            var emailfield = false;
            var isOpenInput = false;
            var isMultiCheckBox = false;
            var valueField = $('select[name="rule_fields_' + sufix + '"]').val();
            var typeField = $('select[name="rule_fields_' + sufix + '"]').find('option:selected').attr('data-type');

            if (valueField !== undefined && valueField === 'contact_email_contains' || typeField === '4') {
                emailfield = true;
            }

            if (valueField !== undefined && (valueField === 'contact_email_exist' || valueField === 'contact_with_log_in_credentials_exists'))
                booleanField = true;

            if (typeField === '7' || valueField === 'date_of_birth') {
                isDatetimeField = true;
            } else if (typeField === '10') {
                isNumberField = true;
            } else if (typeField === '11') {
                isCheckboxField = true;
            } else if (valueField === 'wrs_code' || valueField === (instancePrefix + "Profile_Name__c") || typeField === '0') {
                isOpenInput = true;
            } else if (typeField === '3' && (value === '_multicheck_include_' || value === '_multicheck_notinclude_')) {
                isMultiCheckBox = true;
            }
                


            if (isDatetimeField || isNumberField) {
                $('input[name="rule_data_number_' + sufix + '"]').removeClass('is-hidden');

                if (isDatetimeField) {
                    $('.rule_data_help_text').removeClass('is-hidden');
                }
            }
            else if (isCheckboxField || booleanField) {
                $('select[name="rule_data_' + sufix + '"]').removeClass('is-hidden');
            }
            else if (isOpenInput === true) {
                $('input[name="rule_data_text_' + sufix + '"]').removeClass('is-hidden');
            }
            else if (emailfield) {
                $('input[name="rule_data_text_' + sufix + '"]').removeClass('is-hidden');
            }
            else if (isMultiCheckBox) {
                //$('select[name="rule_data_multiselect_' + sufix + '"]').removeClass('is-hidden');
                $('select[name="rule_data_multiselect_' + sufix + '"]').closest('.condition').find('.ms-options-wrap').removeClass('is-hidden');
                $('input[name="rule_data_text_' + sufix + '"]').addClass('is-hidden');
            }
            else {
                //$('select[name="rule_data_' + sufix + '"]').removeClass('is-hidden');
                $('input[name="rule_data_text_' + sufix + '"]').removeClass('is-hidden');
            }
            

        }
        
    });
}

function ars_field_change_logic(_this, _data) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var th = $(_this);
    var value = $(_this).val();
    var formId = $(_this).data('form-id');
    var formType = $('#page_rules_form input[name=formType]').val();
    var workflowType = $('#vol-workflow-form').find('input[name="workflow-type"]').val();
    var arsType = $('input[name="workflow-type"]').val();
    var pullValuesFromSF = $(_this).find('option:selected').attr('data-pull-sf');
    var sfObject = $(_this).find('option:selected').attr('data-sf-object');
    var sfField = $(_this).find('option:selected').attr('data-sf-field');
    var sfFieldType = $(_this).find('option:selected').attr('data-type');
    var isDatetimeField = false;
    var isNumberField = false;
    var isCheckboxField = false;
    var isMultiChechBox = false;
    var booleanField = false;
    var emailfield = false;
    var isOpenInput = false;
    var expandedOptions = arsType == 1 || arsType == 4;
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';

    if (value === 'contact_email_contains' || value === 'validate_query_string' || sfFieldType === '4') {
        emailfield = true;
    }


    if (value !== undefined && (value === 'contact_email_exist' || value === 'contact_with_log_in_credentials_exists'))
        booleanField = true;
    if (formId !== 0 && parseInt(formType) === 0 && value !== 'subsite_path' && value !== 'value' && value !== 'wrs_code' && value !== (instancePrefix + 'Profile_Name__c')) {
        if ($(_this).find('option:selected').data('field-id') != undefined) {
            value = $(_this).find('option:selected').data('field-id');
        }
    }
    // Hidden the special inputs
    th.closest('.condition').find('input.rule_data[type="text"]').addClass('is-hidden');
    th.closest('.condition').find('input.rule_data').val('');// rule_data_number and rule_data_text
    th.closest('.condition').find('select.rule_data').val('');// to clean rule_data
    th.closest('.condition').find('input.rule_data[type="number"]').addClass('is-hidden');
    th.closest('.condition').find('.help-text').addClass('is-hidden');
    th.closest('.condition').find('select.rule_data_multiselect').addClass('is-hidden');
    th.closest('.condition').find('.ms-options-wrap').addClass('is-hidden');


    var dataType = $(_this).find('option:selected').attr('data-type');

    if (dataType === '7' || value === 'date_of_birth') {
        isDatetimeField = true;
    } else if (dataType === '10') {
        isNumberField = true;
    } else if (dataType === '3') {
        isMultiChechBox = true;
    } else if (dataType === '11') {
        isCheckboxField = true;
    } else if (value === 'wrs_code' || value === (instancePrefix + "Profile_Name__c") || dataType === '0')
        isOpenInput = true;

    if (isDatetimeField || isNumberField) {
        var fData = th.closest('.condition').find('input.rule_data[type="number"]');
        var sMData = th.closest('.condition').find('select.rule_operator');

        if (isDatetimeField) {
            var htData = th.closest('.condition').find('.help-text');
            htData.removeClass('is-hidden');
        }

        fData.removeClass('is-hidden');
        fData.val(_data);

        th.closest('.condition').find('select.rule_data').addClass('is-hidden');

        if (_data == null) {
            if (dataType === '10') {
                fData.val(0);
                fData.attr("min", 0);
            }
            else
                fData.val(1);

            $('#ars-branch-logic').find('.processing_screen').hide();
        }

        //Update select of matchs
        sMData.empty();

        if (isDatetimeField) {
            sMData.append('<option value="<">' + window.translation.less_than + '</option>');
            sMData.append('<option value=">">' + window.translation.more_than + '</option>');
        } else {
            sMData.append('<option value="==">' + window.translation.equals_to + '</option>');
            sMData.append('<option value="!=">' + window.translation.not_equals_to + '</option>');
            sMData.append('<option value=">">' + window.translation.more_than + '</option>');
            sMData.append('<option value="<">' + window.translation.less_than + '</option>');
            sMData.append('<option value=">=">' + window.translation.greater_than_or_equal_to + '</option>');
            sMData.append('<option value="<=">' + window.translation.less_than_or_equal_to + '</option>');
        }

        sMData.append('<option value="_equal_empty_">' + window.translation.is_equal_to_empty + '</option>');
        sMData.append('<option value="_not_equal_empty_">' + window.translation.is_equal_not_empty + '</option>');


    }
    else if (isCheckboxField || booleanField) {
        //var fData = th.closest('.condition').find('select.rule_data');
        var fData = th.closest('.condition').find('input.rule_data[type="text"]');
        var sMData = th.closest('.condition').find('select.rule_operator');

        fData.removeClass('is-hidden');
        fData.prop('disabled', 'disabled');

        fData.empty();
        var optionsToInclude = [];
        var optionDetail = {};
        optionDetail.key = 'true';
        optionDetail.value = 'True';
        optionsToInclude.push(optionDetail);
        optionDetail = {};
        optionDetail.key = 'false';
        optionDetail.value = 'False';
        optionsToInclude.push(optionDetail);
        let option_values_array = ars_select_values_array_getSession(expandedOptions, optionsToInclude, expandedOptions);
        process_autocomplete_for_branch_logic(null, fData,option_values_array,true, false);

        th.closest('.condition').find('input.rule_data[type="number"]').addClass('is-hidden');
        th.closest('.condition').find('.help-text').addClass('is-hidden');


        if (_data != null) {
            fData.val(_data);
        }

        fData.prop('disabled', false);
        if (_data == null) {
            $('#ars-branch-logic').find('.processing_screen').hide();
        }

        sMData.empty();
        sMData.append('<option value="==">' + window.translation.equals_to + '</option>');
        sMData.append('<option value="!=">' + window.translation.not_equals_to + '</option>');
    } else if (isOpenInput === true) {
        var fData = th.closest('.condition').find('input.rule_data[type="text"]');
        var sMData = th.closest('.condition').find('select.rule_operator');

        fData.removeClass('is-hidden');
        fData.val(_data);
        th.closest('.condition').find('select.rule_data').addClass('is-hidden');

        if (_data == null) {
            $('#ars-branch-logic').find('.processing_screen').hide();
        }

        //Update select of matchs
        sMData.empty();

        sMData.append('<option value="==">' + window.translation.equals_to + '</option>');
        sMData.append('<option value="!=">' + window.translation.not_equals_to + '</option>');
        sMData.append('<option value="_equal_empty_">' + window.translation.is_equal_to_empty + '</option>');
        sMData.append('<option value="_not_equal_empty_">' + window.translation.is_equal_not_empty + '</option>');

        get_ars_form_fields(fData);

    } else if (emailfield) {

        var fData = th.closest('.condition').find('input.rule_data[type="text"]');
        var sMData = th.closest('.condition').find('select.rule_operator');
        fData.removeClass('is-hidden');
        th.closest('.condition').find('select.rule_data').addClass('is-hidden');
        sMData.empty();
        sMData.append('<option value="_contain_">' + window.translation.contains+ '</option>');
        sMData.append('<option value="_not_contain_">' + window.translation.not_contains + '</option>');
        sMData.append('<option value="_equal_empty_">' + window.translation.is_equal_to_empty + '</option>');
        sMData.append('<option value="_not_equal_empty_">' + window.translation.is_equal_not_empty + '</option>');


        get_ars_form_fields(fData);
    }
    else {

            let instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
            let fieldContactProfile = instancePrefix + "Profile_Name__c";
            let isLlamaSiteProfile = sfField == fieldContactProfile;

            $.ajax({
                method: "POST",
                url: urlSite + "ARS/GetFieldValues",
                data: { field: value, formId: formId, formType: formType, pullValuesFromSF: pullValuesFromSF, sfObject: sfObject, sfField: sfField, arsType: arsType },
                beforeSend: function () {
                    if (_data == null) {
                        $('#ars-branch-logic').find('.processing_screen').show();
                    }
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                //var fData = th.closest('.condition').find('select.rule_data');
                var fData = th.closest('.condition').find('input.rule_data[type="text"]');
                var sMData = th.closest('.condition').find('select.rule_operator');

                fData.removeClass('is-hidden');
                fData.prop('disabled', 'disabled');

                th.closest('.condition').find('select.rule_data').addClass('is-hidden');
                th.closest('.condition').find('input.rule_data[type="number"]').addClass('is-hidden');
                th.closest('.condition').find('.help-text').addClass('is-hidden');


                //th.closest('.condition').find('input.rule_data[type="text"]').addClass('is-hidden');
                //th.closest('.condition').find('input.rule_data[type="text"]').val('');

                //fData.empty();
                //fData.append(ars_select_inner_options(expandedOptions, jsonResult));
                let option_values_array = ars_select_values_array(expandedOptions, jsonResult);
                process_autocomplete_for_branch_logic(jsonResult, fData, option_values_array, true, isLlamaSiteProfile);
                if (isMultiChechBox === true) {
                    var fDataMS = th.closest('.condition').find('select.rule_data_multiselect');
                    var parent = th.closest('.condition');
                    process_multicheckbox_field(jsonResult, fDataMS, parent);
                    th.closest('.condition').find('.ms-options-wrap').addClass('is-hidden');
                }
                if (_data != null) {
                    fData.val(_data);
                }

                fData.prop('disabled', false);
                if (_data == null) {
                    $('#ars-branch-logic').find('.processing_screen').hide();
                }

                sMData.empty();
                sMData.append('<option value="==">' + window.translation.equals_to + '</option>');
                sMData.append('<option value="!=">' + window.translation.not_equals_to + '</option>');
                if (value !== 'subsite_path') {
                    sMData.append('<option value="_equal_empty_">' + window.translation.is_equal_to_empty + '</option>');
                    sMData.append('<option value="_not_equal_empty_">' + window.translation.is_equal_not_empty + '</option>');

                }

                if (isMultiChechBox === true) {
                    sMData.append('<option value="_multicheck_include_">' + window.translation.contains + '</option>');
                    sMData.append('<option value="_multicheck_notinclude_">' + window.translation.not_contains + '</option>');
                }
            });

    }
}

function process_multicheckbox_field(jsonFields, fieldToAdd, parent) {
    var data = '';
    
    
    for (let i = 0; i < jsonFields.length; i++) {
        let currentItem = jsonFields[i];
        if (currentItem.key !== null && currentItem.key !== undefined && currentItem.value !== null && currentItem.value !== undefined)
            data += '<option value="' + currentItem.key + '">' + currentItem.value + '</option>';
    }
    fieldToAdd.empty();
    fieldToAdd.append(data);
    if (parent.find('.ms-options-wrap').length > 0)
        fieldToAdd.multiselect('reload');
    else
        fieldToAdd.multiselect();

}

function ars_dynamyc_fields_option(jsonFields, formId) {

    var flagGroup = {
        'volunteerRegistration': false,
        'organizationRegistration': false,
        'form': false,
        'donation': false,
        'contact': false,
        'subsites': false,
        'workflow': false,
        'contact_conditions': false,
        'occurrence': false,
        'additional_settings': false,
    };
    var groupNames = {
        'volunteerReg': window.translation.volunteer_registration_fields,
        'organizationReg': window.translation.organization_registration_fields,
        'form': window.translation.form_fields,
        'donation': window.translation.donation_fields,
        'contact': window.translation.contact_fields,
        'subsites': window.translation.subsites,
        'workflow': window.translation.workflow,
        'contact_conditions': window.translation.contact_conditions_title,
        'contact_profile': window.translation.contact_profile,
        'occurrence': window.translation.occurrence_fields,
        'additional_settings': window.translation.branch_logic_additional_settings,
    };
    var closeGroup = false;

    var cad = ' <option value = \"\" >' + translation.select_one + ' </option >';

    jsonFields.forEach(function (item) {
        if (item.group !== 'sessiontoken') {
            if (item.group && !flagGroup[item.group]) {
                if (closeGroup) cad += '</optgroup>';

                cad += '<optgroup label="' + groupNames[item.group] + '">';
                flagGroup[item.group] = true;
                closeGroup = true;
            }

            var dataFieldId = (formId !== 0 && item.id) ? 'data-field-id=\"' + item.id + '\"' : '';
            var dataType = (item.type !== -1) ? 'data-type = \"' + item.type + '\"' : '';
            var pullValuesFromSF = (item.pullValuesFromSF) ? 'data-pull-sf = \"' + item.pullValuesFromSF + '\"' : '';
            var sfObject = (item.sfObject) ? 'data-sf-object = \"' + item.sfObject + '\"' : '';
            var sfField = (item.sfField) ? 'data-sf-field = \"' + item.sfField + '\"' : '';
            var runInServer = (item.runInServer) ? 'data-server = \"' + item.runInServer + '\"' : '';

            cad += ' <option ' + dataFieldId + ' ' + dataType + ' ' + pullValuesFromSF + ' ' + sfObject + ' ' + sfField + ' ' + runInServer +'  value = \"' + item.field + '\" >' + item.label + ' </option>';

        }
    });

    if (closeGroup) cad += '</optgroup>';

    return cad;
}

function ars_workflow_config() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="ars-workflow-link"]', function () {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var from = $(this).data('from');
        if (from === 'login') {
            open_ars_login($(this), urlSite);
            return false;
        }
        reset_login_ars();
        //localStorage.removeItem("vol-workflow-pages");
        //localStorage.setItem("vol-workflow-pages", "");
        sessionStorage.removeItem("vol-workflow-pages");
        sessionStorage.setItem("vol-workflow-pages", "");
        //localStorage.removeItem("vol-workflow-rules");
        sessionStorage.removeItem("vol-workflow-rules");
        //localStorage.setItem("vol-workflow-rules", "");
        sessionStorage.setItem("vol-workflow-rules", "");
        $("#vol-workflow-form .custom-steps").empty();
        $("#vol-workflow-form").find(".settings-builder-form-clone").hide();
        $('#vol-workflow-form').find('select[name="ars-login-type"]').val('0');
        $(".volunteer_registration_config").addClass('is-hidden');
        $(".signup_registration_config").addClass('is-hidden');

        var sourceInvoked = $(this).attr('source-invoked');
        var hideGallery = false;
        var typeSource = 'cms';
        $("#vol-workflow-form").find("#workflow-is-default").show();
        if (sourceInvoked !== null && sourceInvoked !== undefined && sourceInvoked == "gallery") {
            hideGallery = true;
            typeSource = 'gallery';
            $("#vol-workflow-form").find("#workflow-is-default").hide();
        }
        $("#vol-workflow-form").find('input[name="source-invoked"]').val(typeSource);


        $("#vol-workflow-form").attr('data-from', from);
        var workflowId = $(this).data('workflow-id');

        var prefixId = '#step-sign-up';
        switch (from) {
            case 'vol-reg':
                prefixId = '#step-reg-form';
                break;
            case 'partner-reg':
                prefixId = '#step-partner';
                break;
            case 'login':
                prefixId = '#step-login-form';
                break;
            default:
                prefixId = '#step-sign-up';
                break;
        }

        if (workflowId == 0 || workflowId == null || workflowId == '') {
            $(prefixId + " .step-rules").find('.rule').not('.default').remove();

            var rowDefault = '<div class="row rule default" data-page-id="0" data-rule-id="0" data-is-default="true">'
                + '<div class="large-5 medium-5 small-12 columns">'
                + '<div class="row"><i>' + translation.default_rule + '</i></div>'
                + '</div>'
                + '<div class="large-5 medium-5 small-12 columns">'
                + '<div class="row"><strong>' + translation.go_to + ':</strong> <i>' + translation.success_page + '</i></div>'
                + '</div>'
                + '<div class="large-2 medium-2 small-12 columns">'
                + '</div>'
                + '</div>';
            if (from == 'partner-reg') {
                $("#step-partner .step-rules").empty();
                $("#step-partner .step-rules").append(rowDefault);
            }
            if (from != 'vol-reg' && $("#step-sign-up .step-rules").find('.default').length == 0) {
                $("#step-sign-up .step-rules").append(rowDefault);
            }
        }
        else {
            $(prefixId + " .step-rules").empty();
        }

        //Open modal
        $('#ars-vol-reg-workflow').foundation('open');
        var type = 1;
        if (from === 'vol-reg') {
            if ($('body').hasClass('llamapi-system')) {
                //Volunteer registration for 

                $('.vol-reg-title').removeClass('is-hidden');
                $('.signup-title').addClass('is-hidden');
                $('.partner-title').addClass('is-hidden');
                $("#ars-vol-reg-workflow").find('.only-for-llamasite-registration').removeClass('is-hidden');

            } else {
                $('.vol-reg-title').removeClass('is-hidden');
                $('.signup-title').addClass('is-hidden');
                $('.partner-title').addClass('is-hidden');
                $("#ars-vol-reg-workflow").find('.only-for-llamasite-registration').addClass('is-hidden');

            }
            type = 0;

        }
        else if (from == 'partner-reg') {
            $('.vol-reg-title').addClass('is-hidden');
            $('.signup-title').addClass('is-hidden');
            $('.partner-title').removeClass('is-hidden');
            type = 3;
        }
        else {
            $('.vol-reg-title').addClass('is-hidden');
            $('.signup-title').removeClass('is-hidden');
            $('.partner-title').addClass('is-hidden');
            type = 1;
        }
        $('input[name="workflow-type"]').val(type);
        $.ajax({
            method: "POST",
            url: urlSite + "ARS/ExistWorkflow",
            data: { type: type, id: workflowId, typeSource: typeSource },
            beforeSend: function () {
                $('#ars-vol-reg-workflow').find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            //Clean container of success pages
            $('#vol-workflow-form .container-pages.custom-pages ul').empty();
            $('#vol-workflow-form .container-pages.custom-pages .legend-text span').show();

            if (jsonResult.status == '200') {

                $('#ars-vol-reg-workflow').find("input[name=workflow-id]").val(jsonResult.workflowId);

                $('#vol-workflow-form').find('#current-active-workflow').val(jsonResult.currentActive);

                $('#vol-workflow-form').find('#current-active-workflow-id').val(jsonResult.currentActiveID);

                $('#ars-vol-reg-workflow').find('select[name="ars-login-type"]').val(0);

                if (from === 'vol-reg' && $('body').hasClass('llamapi-system') && (jsonResult.currentActiveID > 0 && jsonResult.registrationFormID !== undefined && jsonResult.registrationFormID !== null && jsonResult.registrationFormID !== '' && jsonResult.registrationFormID !== '0')) {
                    $('#ars-vol-reg-workflow').find('select[name="ars-registration-block-id"]').val(jsonResult.registrationFormID);
                    $('#ars-vol-reg-workflow').find('a.ars-vol-reg-configure-page').attr('data-block-id', jsonResult.registrationFormID);
                }

                if (from === 'vol-reg' && $('body').hasClass('llamapi-system')) {

                    //Review all items of dropdown
                    var foundPage = false;
                    var optSel = $('#ars-vol-reg-workflow').find('select[name="ars-registration-block-id"] option:selected');
                    $('#ars-vol-reg-workflow #success-pages').find('.page-buttons a.volunteer_registration_config').remove();
                    if (optSel !== null && optSel !== undefined) {
                        var urlSuccess = optSel.attr('data-url-success');
                        var pageIdSuccess = optSel.attr('data-id-success');
                        if ((pageIdSuccess !== undefined && pageIdSuccess !== null && pageIdSuccess !== 0) &&
                            (urlSuccess !== undefined && urlSuccess !== null && urlSuccess !== '')) {
                            foundPage = true;
                            $('#ars-vol-reg-workflow #success-pages').find('.page-buttons').append('<a element-reveal="page-conf" data-modal-from="ars" title="' + window.translation.configure_page + '" data-url="' + urlSuccess + '" data-page-id="' + pageIdSuccess + '" class="button ars-secondary-btn volunteer_registration_config">' + window.translation.configure_page + '</a >');
                        }

                    }

                    if ((jsonResult.urlSuccess !== null
                        && jsonResult.urlSuccess !== undefined
                        && jsonResult.urlSuccess !== '') &&
                        (jsonResult.idSuccessPage !== null
                            && jsonResult.idSuccessPage !== undefined
                            && jsonResult.idSuccessPage !== 0) && foundPage == false) {
                        foundPage = true;
                        $('#ars-vol-reg-workflow #success-pages').find('.page-buttons').append('<a element-reveal="page-conf" data-modal-from="ars" title="' + window.translation.configure_page + '" data-url="' + jsonResult.urlSuccess + '" data-page-id="' + jsonResult.idSuccessPage + '" class="button ars-secondary-btn volunteer_registration_config">' + window.translation.configure_page + '</a >');
                    }

                    if (foundPage == false) {
                        $('#ars-vol-reg-workflow #success-pages').find('.page-buttons').append('<a element-reveal="page-conf" data-page-type="new-success"  data-modal-from="ars" title="' + window.translation.configure_page + '" data-url="" data-page-id="" class="button ars-secondary-btn volunteer_registration_config">' + window.translation.configure_page + '</a >');
                    }

                    $('#ars-vol-reg-workflow').find('select[name="ars-registration-block-id"]').on('change', function () {
                        var value = $(this).val();
                        var optSel = $('#ars-vol-reg-workflow').find('select[name="ars-registration-block-id"] option:selected');
                        $('#ars-vol-reg-workflow #success-pages').find('.page-buttons a.volunteer_registration_config').remove();
                        if (optSel !== null && optSel !== undefined) {
                            var urlSuccess = optSel.attr('data-url-success');
                            var pageIdSuccess = optSel.attr('data-id-success');
                            if ((pageIdSuccess !== undefined && pageIdSuccess !== null && pageIdSuccess !== 0) &&
                                (urlSuccess !== undefined && urlSuccess !== null && urlSuccess !== '')) {
                                $('#ars-vol-reg-workflow #success-pages').find('.page-buttons').append('<a element-reveal="page-conf" data-modal-from="ars" title="' + window.translation.configure_page + '" data-url="' + urlSuccess + '" data-page-id="' + pageIdSuccess + '" class="button ars-secondary-btn volunteer_registration_config">' + window.translation.configure_page + '</a >');
                            }
                            else if ((jsonResult.urlSuccess !== null
                                && jsonResult.urlSuccess !== undefined
                                && jsonResult.urlSuccess !== '') &&
                                (jsonResult.idSuccessPage !== null
                                    && jsonResult.idSuccessPage !== undefined
                                    && jsonResult.idSuccessPage !== 0)) {
                                $('#ars-vol-reg-workflow #success-pages').find('.page-buttons').append('<a element-reveal="page-conf" data-modal-from="ars" title="' + window.translation.configure_page + '" data-url="' + jsonResult.urlSuccess + '" data-page-id="' + jsonResult.idSuccessPage + '" class="button ars-secondary-btn volunteer_registration_config">' + window.translation.configure_page + '</a >');
                            }
                            else {
                                $('#ars-vol-reg-workflow #success-pages').find('.page-buttons').append('<a element-reveal="page-conf" data-page-type="new-success"  data-modal-from="ars" title="' + window.translation.configure_page + '" data-url="" data-page-id="" class="button ars-secondary-btn volunteer_registration_config">' + window.translation.configure_page + '</a >');
                            }

                        }
                        $('#ars-vol-reg-workflow').find('.registration-buttons a.ars-vol-reg-configure-page').remove();
                        $('#ars-vol-reg-workflow').find('.registration-buttons').append('<a data-element-reveal="form-builder-block" data-block-id="'+value+'" title="form" data-url="" data-page-id="0" class="button ars-secondary-btn ars-vol-reg-configure-page">Configure Form</a>');
                        
                    });

                }

                if (type === 1 && $('.delete-workflow').length <= 0) {
                    $('<button class="button close-modal delete-workflow" type="button">' + window.translation.delete_workflow + '</button>').insertBefore($('.ars_submit .save-workflow'));
                }

                $('#vol-workflow-form').find('#select-as-default-workflow').on('mousedown', function () {
                    var message = "";
                    var self = $(this);
                    if (self.is(':checked')) {
                        if (jsonResult.currentActive == '*') {
                            message = "If this Workflow is set as Inactive, the regular system registration process would be used, Confirm?";
                        }

                        if (message !== "") {

                            Swal.fire({
                                title: window.translation.are_you_sure,
                                text: message,
                                icon: "warning",
                                showCancelButton: true,
                                confirmButtonColor: "#ff0000",
                                confirmButtonText: window.translation.ok,
                                cancelButtonText: window.translation.cancel,
                                closeOnConfirm: true

                            }).then(function (result) {
                                if (result.isConfirmed) {
                                    //Do nothing
                                    self.prop('checked', false);
                                    self.trigger("change");
                                } else {
                                    self.prop('checked', 'checked');
                                    self.trigger("change");

                                }
                            });

                        }


                    } else {

                        if (jsonResult.currentActive == 'none') {
                            message = "Activating this Workflow, would modify the regular system registration process, Confirm?";
                        } else if (jsonResult.currentActive != '*' && jsonResult.currentActive != 'none') {
                            message = "Activating this Workflow, would deactive the workflow " + jsonResult.currentActive + ", Confirm?";
                        }
                        if (message !== "") {

                            Swal.fire({
                                title: window.translation.are_you_sure,
                                text: message,
                                icon: "warning",
                                showCancelButton: true,
                                confirmButtonColor: "#ff0000",
                                confirmButtonText: window.translation.ok,
                                cancelButtonText: window.translation.cancel,
                                closeOnConfirm: true
                            }).then(function (result) {
                                if (result.isConfirmed) {
                                    self.prop('checked', 'checked');
                                    self.trigger("change");
                                } else {
                                    self.prop('checked', false);
                                    self.trigger("change");

                                }
                            });
                        }

                    }

                });


                if (jsonResult.workflowId == 0 || jsonResult.workflowId == null || jsonResult.workflowId == '') {
                    $(prefixId + " .step-rules").find('.rule').not('.default').remove();
                }
                else {
                    $(prefixId + " .step-rules").empty();
                }

                if (jsonResult.message == 'Yes') {
                    $("#blocks-ars-wysiwyg-conf").foundation();

                    if (jsonResult.pages != "" || jsonResult.pages != null) {
                        var DataJson = [];

                        jsonResult.pages.forEach(function (item) {
                            if (item.isSuccessPage) {
                                $('#vol-workflow-form .container-pages.custom-pages .legend-text span').hide();
                                ars_display_workflow_success_pages(item.pageId, item.pageName, jsonResult.workflowType, item.subSubsiteName, item.multipleSubsite, item.friendlyUrl);
                            }
                            else {
                                ars_display_workflow_pages(item.pageId, item.pageName, jsonResult.workflowType, item.subSubsiteName, item.multipleSubsite, item.friendlyUrl);
                            }
                            DataJson.push(item);
                        });

                        //localStorage.setItem("vol-workflow-pages", JSON.stringify(DataJson));
                        sessionStorage.setItem("vol-workflow-pages", JSON.stringify(DataJson));

                        DataJson = [];
                        if (jsonResult.rules != "" || jsonResult.rules != null) {
                            jsonResult.rules.forEach(function (item) {
                                if (!item.deleted) {
                                    ars_display_branch_rules(item.pageId, item.type, item.ruleId, item.conditions, item.redirectTo, item.condCount, item.isDefault, false,item.RedirectToUrl);
                                    ars_display_hide_see_all(item.pageId, item.type);
                                }
                                /* Line Commented by MR 4/11/2017 */
                                //ars_hide_show_branch_button(item.ruleId, item.pageId, null, null, null);

                                var jsonRules = new Object();
                                jsonRules.ruleId = item.ruleId;
                                DataJson.push(jsonRules);
                            });

                            //localStorage.setItem("vol-workflow-rules", JSON.stringify(DataJson));
                            sessionStorage.setItem("vol-workflow-rules", JSON.stringify(DataJson));
                        }
                    }
                }

            }
            else {
                console.log('Error in ExistsWorkflow', jsonResult);
            }

            if (from === 'vol-reg') {
                $('#ars-vol-reg-workflow').find("input[name=workflow-label]").val(jsonResult.workflowName);
                //$('#ars-vol-reg-workflow').find("input[name=workflow-label]").prop('disabled', true);
                if (jsonResult.isDefault == '1') {
                    $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', 'checked');
                    $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("1");
                } else {
                    $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', false);
                    $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("0");
                }
                $('#ars-vol-reg-workflow').find("#workflow-is-default").removeClass('is-hidden');;
                $('#workflow-title').removeClass('is-hidden');

                $('#step-reg-form').removeClass('is-hidden');
                $('#step-sign-up').addClass('is-hidden');
                $('#step-partner').addClass('is-hidden');

                $('a[data-modal-from="create-page-vol"]').removeClass('is-hidden');
                $('a[data-modal-from="create-page-signup"]').addClass('is-hidden');
                $('a[data-modal-from="create-page-partner"]').addClass('is-hidden');

                // Show / hide config success button page.
                $(".volunteer_registration_config").removeClass('is-hidden');
                $(".signup_registration_config").addClass('is-hidden');

                //Hide section of edit success pages
                $('#vol-workflow-form .container-pages').removeClass('hide-custom');
                $('#vol-workflow-form .container-pages .help-text').addClass('is-hidden');
                $('#vol-workflow-form li.signup-page').addClass('is-hidden');
                $('#vol-workflow-form li.express-interest-page').addClass('is-hidden');
                $('#vol-workflow-form li.partner-registration').removeClass('is-hidden');
                $('#vol-workflow-form li.other-signup-page').addClass('is-hidden');
                $('#vol-workflow-form li.partner-registration').addClass('is-hidden');

            }
            else if (from === 'signup') {
                $('#ars-vol-reg-workflow').find("input[name=workflow-label]").val(jsonResult.workflowName);
                //$('#ars-vol-reg-workflow').find("input[name=workflow-label]").prop('disabled', false);
                $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("0");

                $('#ars-vol-reg-workflow').find("#workflow-is-default").addClass('is-hidden');;
                $('#workflow-title').removeClass('is-hidden');

                $('#step-reg-form').addClass('is-hidden');
                $('#step-sign-up').removeClass('is-hidden');
                $('#step-partner').addClass('is-hidden');

                $('a[data-modal-from="create-page-vol"]').addClass('is-hidden');
                $('a[data-modal-from="create-page-signup"]').removeClass('is-hidden');
                $('a[data-modal-from="create-page-partner"]').addClass('is-hidden');

                // Show / hide config success button page.
                $(".volunteer_registration_config").addClass('is-hidden');
                $(".signup_registration_config").removeClass('is-hidden');

                //Show section of edit success pages
                $('#vol-workflow-form .container-pages').removeClass('hide-custom');
                $('#vol-workflow-form .container-pages .help-text').removeClass('is-hidden');
                $('#vol-workflow-form li.signup-page').removeClass('is-hidden');
                $('#vol-workflow-form li.express-interest-page').removeClass('is-hidden');
                $('#vol-workflow-form li.partner-registration').addClass('is-hidden');
                $('#vol-workflow-form li.vol-registration-page').addClass('is-hidden');

                //Consult and include links of Express Interest and Sign up Success pages
                ars_add_links_success_pages();
            } else if (from === 'partner-reg') {
                $('#ars-vol-reg-workflow').find("input[name=workflow-label]").val(jsonResult.workflowName);
                //$('#ars-vol-reg-workflow').find("input[name=workflow-label]").prop('disabled', true);
                if (jsonResult.isDefault == '1') {
                    $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', 'checked');
                    $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("1");
                } else {
                    $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', false);
                    $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("0");
                }
                $('#ars-vol-reg-workflow').find("#workflow-is-default").removeClass('is-hidden');;
                $('#workflow-title').removeClass('is-hidden');

                $('#step-reg-form').addClass('is-hidden');
                $('#step-sign-up').addClass('is-hidden');
                $('#step-partner').removeClass('is-hidden');

                $('a[data-modal-from="create-page-vol"]').addClass('is-hidden');
                $('a[data-modal-from="create-page-signup"]').addClass('is-hidden');
                $('a[data-modal-from="create-page-partner"]').removeClass('is-hidden');

                //Show section of edit success pages
                $('#vol-workflow-form .container-pages').removeClass('hide-custom');
                $('#vol-workflow-form .container-pages .help-text').addClass('is-hidden');
                $('#vol-workflow-form li.signup-page').addClass('is-hidden');
                $('#vol-workflow-form li.express-interest-page').addClass('is-hidden');
                $('#vol-workflow-form li.partner-registration').removeClass('is-hidden');
                $('#vol-workflow-form li.other-signup-page').addClass('is-hidden');
                $('#vol-workflow-form li.vol-registration-page').addClass('is-hidden');
            }

            ars_add_arrows_after_step();
            if (hideGallery == true) {
                if ($("#vol-workflow-form div.custom-steps .step-page").length > 0) {
                    $("#vol-workflow-form").find(".settings-builder-form-clone").hide();
                }

            }
            $('#ars-vol-reg-workflow').find('.processing_screen').hide();
        });
    });
}

function ars_add_links_success_pages() {
    if (!is_backend_page()) return;
    //Get success pages info
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        method: "GET",
        url: urlSite + "ARS/GetARSSignUpPagesInfo",
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        var expressInt = false;
        var successPa = false;
        $('#vol-workflow-form .container-pages ul.success li.other-signup-page').remove();
        for (var key in jsonResult) {
            if (key === "express-interest-page") {
                $('#vol-workflow-form .container-pages li.express-interest-page a.edit-success-page').removeClass('not-exists-page');
                $('#vol-workflow-form .container-pages li.express-interest-page a.edit-success-page').attr('element-reveal', 'page-conf');
                $('#vol-workflow-form .container-pages li.express-interest-page a.edit-success-page').attr('data-modal-from', 'ars');
                $('#vol-workflow-form .container-pages li.express-interest-page a.edit-success-page').attr('data-url', 'express-interest-confirmation');
                $('#vol-workflow-form .container-pages li.express-interest-page a.edit-success-page').attr('data-page-id', jsonResult['express-interest-page'].id);
                expressInt = true;
            } else if (key === "sign-up-page") {
                $('#vol-workflow-form .container-pages li.signup-page a.edit-success-page').removeClass('not-exists-page');
                $('#vol-workflow-form .container-pages li.signup-page a.edit-success-page').attr('element-reveal', 'page-conf');
                $('#vol-workflow-form .container-pages li.signup-page a.edit-success-page').attr('data-modal-from', 'ars');
                $('#vol-workflow-form .container-pages li.signup-page a.edit-success-page').attr('data-url', 'individual-signup-confirmation');
                $('#vol-workflow-form .container-pages li.signup-page a.edit-success-page').attr('data-page-id', jsonResult['sign-up-page'].id);
                successPa = true;
            } else {

                var page = '<li class="other-signup-page">'
                    + '<span>' + jsonResult[key].pageName + '</span>'
                    + '<div class="actions">'
                    + '<a title="Configure Page" class="edit-success-page" element-reveal="page-conf" data-modal-from="ars" data-url="' + jsonResult[key].friendlyUrl + '" data-page-id="478"></a>'
                    + '</div>'
                    + '</li>';

                $('#vol-workflow-form .container-pages ul.success').append(page);
            }
        }
        if (expressInt === false) {
            $('#vol-workflow-form .container-pages li.express-interest-page a.edit-success-page').addClass('not-exists-page');
        }
        if (successPa === false) {
            $('#vol-workflow-form .container-pages li.signup-page a.edit-success-page').addClass('not-exists-page')
        }

    });

    //Events to show alert when not exists page of Express Interest Sucess or Sign up Success
    $(document).on('click', '#vol-workflow-form .container-pages a.edit-success-page', function () {
        if ($(this).hasClass('not-exists-page')) {
            var isSignUpPage = ($(this).hasClass('signup-link-page')) ? true : false;
            var messageModal = (isSignUpPage) ? window.translation.this_page_not_exists_signup : window.translation.this_page_not_exists_express_interest;

            Swal.fire({
                title: window.translation.warning,
                icon: messageModal,
                type: 'warning',
                closeOnConfirm: true
            });
        }
    });
}

function ars_display_hide_see_all(pageId, type) {
    var rule = $('.step-page[data-page-id="' + pageId + '"] .step-rules .rule');
    var see_all_less = $('.step-page[data-page-id="' + pageId + '"] .step-rules-title .see_all_less');

    if (pageId == 0) {
        rule = $('.step-page[data-page-id="' + pageId + '"][data-type="' + type + '"] .step-rules .rule');
        see_all_less = $('.step-page[data-page-id="' + pageId + '"][data-type="' + type + '"] .step-rules-title .see_all_less');
    }

    var rulesCount = rule.length;
    var isHidden = see_all_less.hasClass('is-hidden');

    if (rulesCount > 3 && isHidden) {
        see_all_less.removeClass('is-hidden');
    }
    if (rulesCount <= 3 && !isHidden) {
        see_all_less.addClass('is-hidden');
    }
}

function ars_rule_see_all_event() {
    if (!is_backend_page()) return;
    $(document).on('click', '.step-rules-title a.link-open', function () {
        var parent = $(this).closest('.see_all_less');
        var rules = $(this).closest('.step-page').find('.step-rules');
        var openHidden = $(this).hasClass('is-hidden');
        var closeHidden = parent.find('.link-close').hasClass('is-hidden');

        if (!openHidden && closeHidden) {
            $(this).addClass('is-hidden');
            parent.find('.link-close').removeClass('is-hidden');

            var height = rules.prop('scrollHeight');
            rules.animate({ 'max-height': height }, 'fast');
        }
    });

    $(document).on('click', '.step-rules-title a.link-close', function () {
        var parent = $(this).closest('.see_all_less');
        var rules = $(this).closest('.step-page').find('.step-rules');
        var closeHidden = $(this).hasClass('is-hidden');
        var openHidden = parent.find('.link-open').hasClass('is-hidden');

        if (!closeHidden && openHidden) {
            $(this).addClass('is-hidden');
            parent.find('.link-open').removeClass('is-hidden');

            rules.animate({ 'max-height': '130px', overflow: 'hidden' }, 'fast');
        }
    });
}

function ars_hide_show_donation_option(isNew) {
    //var jsonData = localStorage.getItem("json-ars-data");
    var jsonData = sessionStorage.getItem("json-ars-data");
    var existForm = false;
    var existDon = false;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if (jsonData != "" && jsonData != null) {
        jsonData = JSON.parse(jsonData);
        if (isArray(jsonData)) {
            jsonData.forEach(function (item) {
                if (item.type === 'form' && item.isdeleted === false) {
                    existForm = true;
                }
                else if (item.type === 'donation' && item.isdeleted === false) {
                    existDon = true;
                }
            });
        }
        else {
            if (jsonData.type === 'form' && jsonData.isdeleted === false) {
                existForm = true;
            }
            else if (jsonData.type === 'donation' && jsonData.isdeleted === false) {
                existDon = true;
            }
        }
    }

    if (isNew) {
        $.ajax({
            method: "POST",
            url: urlSite + "ARS/ExistDonationBlock",
            // data: { pages: localStorage.getItem("vol-workflow-pages") },
            data: { pages: sessionStorage.getItem("vol-workflow-pages") },
            beforeSend: function () {
                $('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (jsonResult.status === 200) {
                $('option[value="donation-block"]').addClass('is-hidden');

                if (existForm) {
                    $('option[value="form-block"]').addClass('is-hidden');
                }
            }
            else {
                ars_show_hide_existing_don(existDon, existForm);
            }

            $('.processing_screen').hide();
        });
    }
    else {
        ars_show_hide_existing_don(existDon, existForm);
    }
}

function ars_show_hide_existing_don(existDon, existForm) {
    if (!existDon && !existForm) {
        $('option[value="donation-block"]').removeClass('is-hidden');
        $('option[value="form-block"]').removeClass('is-hidden');
    }
    else if (existDon || existForm) {
        $('option[value="donation-block"]').addClass('is-hidden');
    }
}

function ars_hide_show_form_option() {
    if (!is_backend_page()) return;
    //var jsonData = localStorage.getItem("json-ars-data");
    var jsonData = sessionStorage.getItem("json-ars-data");
    //var donHidden = $('option[value="donation-block"]').hasClass('is-hidden');
    var existForm = false;
    var existDon = false;

    if (jsonData != "" && jsonData != null) {
        jsonData = JSON.parse(jsonData);
        if (isArray(jsonData)) {
            jsonData.forEach(function (item) {
                if (item.type === 'form' && item.isdeleted === false) {
                    existForm = true;
                }
                else if (item.type === 'donation' && item.isdeleted === false) {
                    existDon = true;
                }
            });
        }
        else {
            if (jsonData.type === 'form' && jsonData.isdeleted === false) {
                existForm = true;
            }
            else if (jsonData.type === 'donation' && jsonData.isdeleted === false) {
                existDon = true;
            }
        }
    }

    if (!existForm /*&& !existDon /*&& !donHidden*/) {
        $('option[value="form-block"]').removeClass('is-hidden');
        $('option[value="from-gallery"]').removeClass('is-hidden');
    }

    if (existForm || existDon /*|| donHidden*/) {
        $('option[value="form-block"]').addClass('is-hidden');
        $('option[value="from-gallery"]').addClass('is-hidden');
        // $('option[value="donation-block"]').addClass('is-hidden');
        $('#ars-type-block').val($("#ars-type-block option:first").val());
    }
}

function isArray(what) {
    return Object.prototype.toString.call(what) === '[object Array]';
}

function ars_create_or_update_page() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="ars-page-conf"]', function () {

        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var elementReveal = $(this).data('element-reveal');
        var modalFrom = $(this).data('modal-from');
        var wType = $(this).data('type');
        var pageId = $(this).data('page-id');
        var isCompliance = $(this).attr('data-is-compliance');
        var dataFrom = $("#vol-workflow-form").attr("data-from");

        $("#" + elementReveal).attr("data-from", dataFrom);
        $("#" + elementReveal).find("input.add_block_button").attr("data-from", dataFrom);
        // Verifiying if page to create is compliance
        if (isCompliance == "true") {
            $("#form-builder-block input[name='isCompliance']").val(true);
            $("#ars-page-conf-form input[name='is-compliance']").val(true);
        } else {
            $("#form-builder-block input[name='isCompliance']").val(false);
            $("#ars-page-conf-form input[name='is-compliance']").val(false);
        }
        //Validate if is opportunity signup display checkbox of 'Is Success Page?' or Partner Registration
        if (wType === 1 || wType === 3 || wType === 0) {
            $('.success-page-row').removeClass('hide-custom');
        }
        else {
            if ($('.success-page-row').hasClass('hide-custom') === false) {
                $('.success-page-row').addClass('hide-custom');
            }
        }

        // Apply vlidate to ars page
        initiate_jquery_validate_reveal($('#ars-page-conf-form'), 'ars-page-conf-form');

        $('#' + elementReveal + ' .save-page').attr('data-workflow', modalFrom);
        $('#' + elementReveal + ' .save-page').attr('data-type', wType);

        //localStorage.removeItem("json-ars-data");
        //localStorage.removeItem("json-ars-data-old");

        sessionStorage.removeItem("json-ars-data");
        sessionStorage.removeItem("json-ars-data-old");

        if (pageId === 0) {
            $('#ars-page-conf >h3.title').text(window.translation.create_new_page);
            $('#ars-page-conf-form input[name=page-id]').val(0);
            $('#ars-page-conf-form input[name=page-name]').val('');
            $('#ars-page-conf-form input[name=old-page-name]').val('');
            $("#ars-page-conf-form .ars_block").remove();

            //ars_hide_show_donation_option(true);

            ars_hide_show_form_option();

            $('#' + elementReveal).foundation('open');
        } else {
            $('#ars-page-conf-form > h3').val('Edit Page');
            $.ajax({
                method: "POST",
                url: urlSite + "ARS/GetArsPageInfo",
                data: { pageId: pageId },
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                if (jsonResult.status === 200) {
                    // loading data page
                    $("#ars-page-conf-form input[name=page-id]").val(jsonResult.pageId);
                    $("#ars-page-conf-form input[name=page-name]").val(jsonResult.pageName);
                    $("#ars-page-conf-form input[name=old-page-name]").val(jsonResult.pageName);
                    $("#ars-page-conf >h3.title").text(window.translation.update_page);
                    if (jsonResult.isSuccessPage) {
                        $("#ars-page-conf-form input[name=is-success-page]").prop('checked', true);
                    }
                    else {
                        $("#ars-page-conf-form input[name=is-success-page]").prop('checked', false);
                    }

                    if (jsonResult.isTerminatePage) {
                        $("#ars-page-conf-form input[name=is-terminate-page]").prop('checked', true);
                    }
                    else {
                        $("#ars-page-conf-form input[name=is-terminate-page]").prop('checked', false);
                    }
                    // get default language 
                    var defaultLang = $('#block-ars-wysiwyg-form .tab-language.is-default').data('language-id');

                    // loading blocks
                    $("#ars-page-conf-form .ars_block").remove();

                    if (jsonResult.blockList.length > 0) {
                        jsonResult.blockList.forEach(function (item) {
                            var jsonBlock = new Object();
                            jsonBlock.idElement = item.idElement;
                            jsonBlock.blockId = item.blockId;
                            jsonBlock.type = item.type;
                            jsonBlock.weight = item.weight;
                            jsonBlock.isdeleted = item.isdeleted;
                            jsonBlock.cssClass = item.cssClass;
                            jsonBlock.subsiteId = item.subsiteId;

                            if (item.type === "wysiwyg") {
                                var defaultText = '<span class="help-text">Wysiwyg  (' + window.translation.please_fill_data + ')</span>';
                                var dataWysiwyg = [];

                                // loading wysiwyg blocks
                                if (item.wysiwyg.length > 0) {
                                    item.wysiwyg.forEach(function (item) {
                                        var wBlock = new Object();

                                        wBlock.text = item.text;
                                        wBlock.language = item.language;

                                        if (item.language === defaultLang && item.text !== '') {
                                            defaultText = item.text;
                                        }
                                        dataWysiwyg.push(wBlock);
                                    });
                                }
                                jsonBlock.wysiwyg = dataWysiwyg;

                                var arsBlock = '<div data-element-id="' + item.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.wysiwyg_block + '">' +
                                    '<div class="content">' + defaultText +
                                    '</div>' +
                                    '<div class="options">' +
                                    '<a data-element-reveal="ars-wysiwyg-block" title="Wysiwyg" class="edit-ars-component" data-block-id="' + item.blockId + '" data-element-id="' + item.idElement + '"></a>' +
                                    '<a  title="Delete Content" class="delete-ars-component" data-block-id="' + item.blockId + '"  data-element-id="' + item.idElement + '"></a>' +
                                    '<span class="move"  data-element-id="' + item.idElement + '"></span>' +
                                    '</div>' +
                                    '</div>';

                                $('#ars-page-conf .content_page').append(arsBlock);
                            }
                            else if (item.type === "waiver") {
                                var defaultText = '<span class="help-text">' + window.translation.waiver_block + ': (' + window.translation.please_fill_data + ')</span>';
                                var dataWaiver = [];

                                //Loading waiver blocks info
                                if (item.WaiverInfo.length > 0) {
                                    item.WaiverInfo.forEach(function (item) {
                                        var waiverBlock = new Object();

                                        waiverBlock.text = item.text;
                                        waiverBlock.language = item.language;
                                        waiverBlock.validationMessage = item.validationMessage;
                                        waiverBlock.salesforceField = item.salesforceField;
                                        waiverBlock.objectToSave = item.objectToSave;

                                        if (item.language === defaultLang && item.text !== '') {
                                            defaultText = item.text;
                                        }

                                        dataWaiver.push(waiverBlock);
                                    });
                                    jsonBlock.salesforceField = item.salesforceField;
                                    jsonBlock.objectToSave = item.objectToSave;
                                }
                                jsonBlock.waiver = dataWaiver;

                                var waiverBlock = '<div data-element-id="' + item.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.waiver_block + '">' +
                                    '<div class="content">' +
                                    '<div class="left">' +
                                    '<input id="ars-waiver-' + item.idElement + '" class="ars-waiver-checkbox" disabled checked type="checkbox" name="ars-waiver-' + item.idElement + '" value="">' +
                                    '</div>' +
                                    '<div class="right">' + defaultText + '</div>' +
                                    '</div>' +
                                    '<div class="options">' +
                                    '<a data-modal-from="' + modalFrom + '" data-element-reveal="ars-waiver-block" title="Waiver" class="edit-ars-component" data-block-id="0" data-element-id="' + item.idElement + '"></a>' +
                                    '<a  title="Delete Content" class="delete-ars-component" data-block-id="0"  data-element-id="' + item.idElement + '"></a>' +
                                    '<span class="move"  data-element-id="' + item.idElement + '"></span>' +
                                    '</div>' +
                                    '</div>';

                                $('#ars-page-conf .content_page').append(waiverBlock);
                            } else if (item.type === 'donation') {
                                jsonBlock.idElement = item.idElement;
                                jsonBlock.blockId = item.blockId;
                                jsonBlock.type = item.type;
                                jsonBlock.weight = item.weight;
                                jsonBlock.isdeleted = item.isdeleted;
                                jsonBlock.type = item.type;
                                jsonBlock.donation_mandatory = item.donation_mandatory;
                                jsonBlock.is_recurring = item.is_recurring;
                                jsonBlock.credit_card = item.credit_card;
                                jsonBlock.echeck = item.echeck;
                                jsonBlock.paypal_account = item.paypal_account;
                                jsonBlock.other_amount = item.other_amount;
                                jsonBlock.donation_amounts = item.donation_amounts;
                                jsonBlock.installment = item.installment;
                                jsonBlock.payment_processor = item.payment_processor;
                                jsonBlock.campaign = item.campaign;
                                jsonBlock.campaign_alias = item.campaign_alias;
                                jsonBlock.sku = item.sku;
                                jsonBlock.tracking_info = item.tracking_info;
                                jsonBlock.hide_title_donation_amounts = item.hide_title_donation_amounts;
                                jsonBlock.hide_country_field = item.hide_country_field;
                                jsonBlock.default_country = item.default_country;
                                jsonBlock.PaypalActive = item.PaypalActive;
                                jsonBlock.CLickPledgeActive = item.CLickPledgeActive;
                                jsonBlock.isPaypalProdMode = item.isPaypalProdMode;
                                jsonBlock.isClickPledgeProdMode = item.isClickPledgeProdMode;
                                jsonBlock.CustomQuestions = item.CustomQuestions;

                                load_donation_data_in_page(item, false);
                            }
                            else if (item.type === 'form') {
                                var formBlock = '<div data-element-id="' + item.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.form_block + '">' +
                                    '<div class="content">' + item.form_html + '</div>' +
                                    '<div class="options">' +
                                    '<a data-modal-from="' + modalFrom + '" data-element-reveal="form-builder-block" title="Form" class="edit-ars-component" data-block-id="' + item.blockId + '" data-form-id="' + item.form_id + '" data-element-id="' + item.idElement + '"></a>' +
                                    '<a  title="Delete Content" class="delete-ars-component" data-block-id="' + item.blockId + '"  data-element-id="' + item.idElement + '"></a>' +
                                    '<span class="move"  data-element-id="' + item.idElement + '"></span>' +
                                    '</div>' +
                                    '</div>';

                                $('#ars-page-conf .content_page').append(formBlock);

                                $('#ars-page-conf .content_page select[multiple="multiple"]').multiselect();

                                date_picker_widget();

                                initiate_jquery_validate(window.translation);
                            }

                            //Update localStorage
                            //var valjson = localStorage.getItem("json-ars-data");
                            var valjson = sessionStorage.getItem("json-ars-data");

                            if (valjson == "" || valjson == null) {
                                var dataJson = [];
                                dataJson.push(jsonBlock);
                            } else {
                                var dataJson = JSON.parse(valjson);
                                dataJson.push(jsonBlock);
                            }

                            //_assign_value_local_storage('json-ars-data', '', dataJson, '', true);
                            _assign_value_session_storage('json-ars-data', '', dataJson, '', true);
                            //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                            sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                        });
                    }

                    ars_hide_show_form_option();
                    if ($("#ars-page-conf .formBlock").length > 0) {
                        if ($("#ars-page-conf .formBlock .processing_screen").length > 0) {
                            $("#ars-page-conf .formBlock .processing_screen").remove();
                        }
                        $("#ars-page-conf .formBlock form :input").prop("disabled", true);

                        if (!$("#ars-page-conf .formBlock form a.submit-button").hasClass('disabled')) {
                            $("#ars-page-conf .formBlock form a.submit-button").addClass("disabled");
                        }

                        if (!$("#ars-page-conf .formBlock form a.continue-later").hasClass("disabled")) {
                            $("#ars-page-conf .formBlock form a.continue-later").addClass("disabled")
                        }

                        if ($("#ars-page-conf .formBlock span.move").length > 0) {
                            $("#ars-page-conf .formBlock span.move").remove();
                        }
                    }

                    $('#' + elementReveal).foundation('open');

                } else {
                    Swal.fire({
                        title: window.translation.error,
                        text: jsonResult.message,
                        icon: "error",
                        closeOnConfirm: true
                    });
                }

                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }

        //Initiate dragula events
        initiate_dragula_ars_configuration_page();
    });
}

function ars_remove_page() {
    if (!is_backend_page()) return;

    $(document).on('click', 'a[data-element-reveal="ars-page-delete"]', function () {
        var pageId = $(this).data('page-id');
        var page = $(this).closest('.step-page');
        var itemSuccessPage = $(this).parents('li').first();
        var isSuccessPage = ($(this).hasClass('delete-success-page')) ? true : false;
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        Swal.fire({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_page_ars,
            icon: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false

        }).then(function (result) {
            if (result.isConfirmed) {
                $.ajax({
                    method: "POST",
                    url: urlSite + "ARS/RemovePage",
                    data: { pageId: pageId },
                    beforeSend: function () {
                        $('#ars-vol-reg-workflow').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.status == '200') {
                        if (jsonResult.undeletedPages != "" && jsonResult.undeletedPages != null) {
                            var DataJson = [];
                            jsonResult.undeletedPages.forEach(function (item) {
                                DataJson.push(item);
                            });
                            //localStorage.setItem("vol-workflow-pages", JSON.stringify(DataJson));
                            sessionStorage.setItem("vol-workflow-pages", JSON.stringify(DataJson));
                        }
                        else {
                            //var wPages = JSON.parse(localStorage.getItem("vol-workflow-pages"));
                            var wPages = JSON.parse(sessionStorage.getItem("vol-workflow-pages"));
                            wPages.removeValue('pageId', pageId);
                            //localStorage.setItem("vol-workflow-pages", JSON.stringify(wPages));
                            sessionStorage.setItem("vol-workflow-pages", JSON.stringify(wPages));
                        }

                        if (jsonResult.deletedRules != "" && jsonResult.deletedRules != null) {
                            var DataJson = [];
                            jsonResult.deletedRules.forEach(function (item) {
                                $('.rule[data-rule-id="' + item.ruleId + '"]').remove();

                                //var wRules = JSON.parse(localStorage.getItem("vol-workflow-rules"));
                                var wRules = JSON.parse(sessionStorage.getItem("vol-workflow-rules"));
                                wRules.removeValue('ruleId', item.ruleId);
                                //localStorage.setItem("vol-workflow-rules", JSON.stringify(wRules));
                                sessionStorage.setItem("vol-workflow-rules", JSON.stringify(wRules));
                            });
                        }

                        if (isSuccessPage) {
                            itemSuccessPage.remove();
                        }
                        else {
                            page.remove();
                        }

                        Swal.fire({
                            title: window.translation.success,
                            text: window.translation.page_removed_successfully,
                            icon: "success",
                            closeOnConfirm: true
                        });
                    }
                    else if (jsonResult.status == '500') {
                        Swal.fire({
                            title: window.translation.error,
                            text: jsonResult.message,
                            icon: "error",
                            closeOnConfirm: true
                        });
                    }
                    var sourceValue = $("#vol-workflow-form").find('input[name="source-invoked"]').val();
                    var hideGallery = false;
                    if (sourceValue != null && sourceValue != undefined && sourceValue == "gallery") {
                        hideGallery = true;
                    }

                    ars_add_arrows_after_step();
                    if (hideGallery == true) {
                        if ($("#vol-workflow-form div.custom-steps .step-page").length > 0) {
                            $("#vol-workflow-form").find(".settings-builder-form-clone").hide();
                        }

                    }

                    //Hide processing screen
                    $('#ars-vol-reg-workflow').find('.processing_screen').hide();
                });

            }
        });

    });
}

function ars_remove_rule() {
    if (!is_backend_page()) return;

    $('.backend-page').on('click', 'a.remove-rule', function () {
        var ruleId = $(this).data('rule-id');
        var rule = $(this).closest('.rule');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        Swal.fire({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_rule,
            icon: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false

        }).then(function (result) {

            if (result.isConfirmed) {
                $.ajax({
                    method: "POST",
                    url: urlSite + "ARS/RemoveRule",
                    data: { ruleId: ruleId },
                    beforeSend: function () {
                        $('#ars-vol-reg-workflow').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.status == '200') {
                        var pageId = rule.data('page-id');
                        var isDefault = rule.data('is-default');
                        var stepRule = rule.closest('.step-rules');
                        var stepPage = rule.closest('.step-page');
                        var type = stepPage.data('type');

                        rule.remove();

                        /* Line Commented by MR 4/11/2017 */
                        //ars_hide_show_branch_button(null, pageId, stepRule, stepPage, isDefault, type);

                        ars_display_hide_see_all(pageId, type);

                        Swal.fire({
                            title: window.translation.success,
                            text: window.translation.rule_removed_successfully,
                            icon: "success",
                            closeOnConfirm: true
                        });
                    }
                    else if (jsonResult.status == '500') {
                        Swal.fire({
                            title: window.translation.error,
                            text: jsonResult.message,
                            icon: "error",
                            closeOnConfirm: true
                        });
                    }

                    //Hide processing screen
                    $('#ars-vol-reg-workflow').find('.processing_screen').hide();
                });

            }
        });

    });
}

function ars_remove_condition() {
    if (!is_backend_page()) return;

    $('.backend-page').on('click', 'a.remove-condition', function () {
        var th = $(this);

        Swal.fire({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_condition,
            icon: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false

        }).then(function (result) {
            if (result.isConfirmed) {
                var condition = th.closest('.condition');
                condition.remove();
                Swal.close();

            }
        });

    });
}

function ars_save_page() {
    if (!is_backend_page()) return;
    if ($("#ars-page-conf #ars-page-conf-form").length > 0) {
        var translation = window.translation;
        // cleaning ars-json data
        //localStorage.removeItem("json-ars-data");
        //localStorage.removeItem("json-ars-data-old");

        sessionStorage.removeItem("json-ars-data");
        sessionStorage.removeItem("json-ars-data-old");

        $(document).on('click', '#ars-page-conf .save-page', function () {
            var current_page_name = $('#ars-page-conf-form input[name="page-name"]').val();
            var old_page_name = $('#ars-page-conf-form input[name="old-page-name"]').val();
            var page_id = $('#ars-page-conf-form input[name="page-id"]').val();
            var type = $(this).data('type');
            if(page_id != 0 && current_page_name != old_page_name){
                Swal.fire({
                  title: window.translation.warning,
                  text: window.translation.change_friendly_url_ars_page,
                  icon: "warning",
                  showCancelButton: true,
                  cancelButtonText: window.translation.cancel,
                  closeOnConfirm: true
                }).then((result) => {
                    if (result.isConfirmed) {
                        save_page_ars(type);
                    } else if (result.dismiss === Swal.DismissReason.cancel) {
                        //Hide processing screen
                        $('#ars-page-conf').find('.processing_screen').hide();
                        $('#ars-vol-reg-workflow').find('.processing_screen').hide();
                    }
                });
            }else{
                save_page_ars(type);
            }
        });
    }
}

function save_page_ars(typeARS){
        var jsonPages = new Object();
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
                if ($('#ars-page-conf-form').valid()) {
                var formData = $("#ars-page-conf-form").serializeObject();
                var type = typeARS;
                var isSuccessPageCurrent = false;
                var requestVerificationToken = formData['__RequestVerificationToken'];
                if ($("#ars-page-conf-form .ars_block:visible").length > 0) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "ARS/AddOrUpdateArsPage",
                        data: {
                            form: formData,
                            jsondata: sessionStorage.getItem("json-ars-data"),//localStorage.getItem("json-ars-data"),
                            type: type,
                            "__RequestVerificationToken": requestVerificationToken
                        },
                        beforeSend: function () {
                            $('#ars-page-conf').find('.processing_screen').show();
                            $('#ars-vol-reg-workflow').find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status === 200) {
                            var pageId = jsonResult.pageId;
                            var pageName = jsonResult.pageName;
                            var pageUrl = jsonResult.pageUrl;
                            var pageType = jsonResult.pageType;
                            var isSuccessPage = jsonResult.isSucessPage;
                            var subsiteName = jsonResult.subsiteName;
                            var multipleSubsite = jsonResult.multipleSubsite;
                            var friendlyUrl = jsonResult.friendlyUrl
                            jsonPages.pageId = pageId;
                            jsonPages.pageName = pageName;
                            //validate if page created is compliance
                            if (pageType == 2) {
                                compliancePage = new Object();
                                compliancePage.PageId = pageId;
                                compliancePage.WRule = jsonResult.WRule;
                                compliancePage.PageName = pageName;
                                compliancePage.RedirecTo = '/' + pageUrl;
                                compliancePage.deleted = false;

                                if (jsonResult.isnewPage == true) {
                                    //loading page in localstroage to display in compliance settings
                                    complianceJson = JSON.parse(localStorage.getItem('compliance-module'));
                                    if (complianceJson) {
                                        var cmpages = complianceJson.compliancePages;
                                        cmpages.push(compliancePage);
                                        complianceJson.compliancePages = cmpages;
                                        localStorage.setItem("compliance-module", JSON.stringify(complianceJson));
                                        load_compliance_pages_from_local_storage();
                                    }
                                }

                                $('#ars-page-conf').foundation('close');
                            } else {
                                //var volWorkflowPages = localStorage.getItem("vol-workflow-pages");
                                var volWorkflowPages = sessionStorage.getItem("vol-workflow-pages");
                                var DataJson = [];

                                if (volWorkflowPages != "" && volWorkflowPages != null) {
                                    // validate if user edit item already created
                                    DataJson = JSON.parse(volWorkflowPages);
                                }

                                var exists = false;
                                if (DataJson.length > 0) {
                                    $.each(DataJson, function (i, obj) {
                                        if (obj.pageId === pageId) {
                                            isSuccessPageCurrent = obj['isSuccessPage'];

                                            obj.pageName = pageName;
                                            obj['isSuccessPage'] = isSuccessPage;
                                            exists = true;
                                            $('.step-page[data-page-id="' + pageId + '"]').find('.step-title').html(pageName);
                                            $('.step-page[data-page-id="' + pageId + '"]').find('.ars-page-url').html(window.translation.friendly_url +': /' + pageUrl);
                                        }
                                    });
                                }

                                if (DataJson.length <= 0 || !exists) {
                                    DataJson.push(jsonPages);
                                    if (isSuccessPage) {
                                        ars_display_workflow_success_pages(pageId, pageName, pageType, subsiteName, multipleSubsite, friendlyUrl);
                                    }
                                    else {
                                        ars_display_workflow_pages(pageId, pageName, pageType, subsiteName, multipleSubsite, friendlyUrl);
                                    }
                                }
                                else if (exists && DataJson.length > 0) {
                                    //Validate if variable is success is different of current
                                    if (isSuccessPageCurrent && !isSuccessPage) {
                                        //Was success and now is normal
                                        $('li.success-page-custom[data-page-id="' + pageId + '"]').remove();
                                        ars_display_workflow_pages(pageId, pageName, pageType, subsiteName, multipleSubsite, friendlyUrl);
                                        //Validate to display span of No custom pages
                                        if ($('#vol-workflow-form .container-pages.custom-pages').find('li').length === 0) {
                                            $('#vol-workflow-form .container-pages.custom-pages .legend-text span').show();
                                        }

                                    }
                                    else if (!isSuccessPageCurrent && isSuccessPage) {
                                        //Was normal and now is success
                                        $('.step-page[data-page-id="' + pageId + '"]').remove();
                                        ars_display_workflow_success_pages(pageId, pageName, pageType, subsiteName, multipleSubsite, friendlyUrl);
                                    }
                                    if (subsiteName !== '') {
                                        // Update data info of page workflow if is subsite
                                        $('.step-page[data-page-id="' + pageId + '"] div.subsite-label').html(
                                            '<span class="exclamation-triangle"></span><i> ' + window.translation.page_associated_with_subsite + ' ' + subsiteName + '</i>'
                                            + '<span class="gray">' + window.translation.page_be_careful + '</span>'
                                        );
                                    } else {
                                        $('.step-page[data-page-id="' + pageId + '"] div.subsite-label').remove();
                                    }
                                }

                                //localStorage.setItem("vol-workflow-pages", JSON.stringify(DataJson));
                                sessionStorage.setItem("vol-workflow-pages", JSON.stringify(DataJson));

                                if (jsonResult.pageRules != "" && jsonResult.pageRules != null) {
                                    var item = jsonResult.pageRules;
                                    if (!item.deleted) {
                                        ars_display_branch_rules(item.pageId, item.type, item.ruleId, item.conditions, item.redirectTo, item.condCount, item.isDefault, false,item.RedirectToUrl);
                                        ars_display_hide_see_all(item.pageId, item.type);
                                    }
                                }

                                //localStorage.removeItem("json-ars-data");
                                //localStorage.removeItem("json-ars-data-old");
                                sessionStorage.removeItem("jajajson-ars-data");
                                sessionStorage.removeItem("json-ars-data-old");
                                $("#ars-page-conf-form .ars_block").remove();
                                $("#ars-page-conf-form  input[name=page-name]").val("");

                                //Close modal
                                $('#ars-page-conf').foundation('close');
                                var sourceValue = $("#vol-workflow-form").find('input[name="source-invoked"]').val();
                                var hideGallery = false;
                                if (sourceValue != null && sourceValue != undefined && sourceValue == "gallery") {
                                    hideGallery = true;
                                }
                                ars_add_arrows_after_step();
                                if (hideGallery == true) {
                                    if ($("#vol-workflow-form div.custom-steps .step-page").length > 0) {
                                        $("#vol-workflow-form").find(".settings-builder-form-clone").hide();
                                    }

                                }

                                Swal.fire({
                                    title: window.translation.success,
                                    text: window.translation.page_saved_successfully,
                                    icon: "success",
                                    closeOnConfirm: true
                                });
                            }

                        } else {
                            Swal.fire({
                                title: window.translation.error,
                                text: jsonResult.message,
                                icon: "error",
                                closeOnConfirm: true
                            });
                        }

                        //Hide processing screen
                        $('#ars-page-conf').find('.processing_screen').hide();
                        $('#ars-vol-reg-workflow').find('.processing_screen').hide();
                    });
                } else {
                    Swal.fire({
                        title: window.translation.warning,
                        text: window.translation.add_atleast_one_block,
                        icon: "warning",
                        closeOnConfirm: true
                    });
                }
            }
}

function showExportSwal(message) {
    Swal.fire({
        title: "",
        icon: "error",
        text: message,
        confirmButtonText: "Ok"
    });
    $('.processing_screen').hide();
}

function ars_save_rules() {
    if (!is_backend_page()) return;
    if ($('#page_rules_form').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $(document).on('click', '#page_rules_form .save', function () {
            $("#page_rules_form").find("label.error").remove();
            initiate_jquery_validate_reveal($('#page_rules_form'), 'page_rules_form');
            if ($('#page_rules_form').valid()) {
                var formData = $("#page_rules_form").serializeObject();
                var pageId = $('#page_rules_form input[name=page-id]').val();
                var type = $('#page_rules_form input[name=type]').val();
                var formId = $('#page_rules_form input[name=formId]').val();
                var formType = $('#page_rules_form input[name=formType]').val();
                var isDefault = false;

                $.ajax({
                    method: "POST",
                    url: urlSite + "ARS/AddOrUpdateArsRules",
                    data: { form: formData, isDefault: isDefault, formId: formId, formType: formType },
                    beforeSend: function () {
                        $('#ars-branch-logic').find('.processing_screen').show();
                        $('#ars-vol-reg-workflow').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    var volWorkflowRules = sessionStorage.getItem("vol-workflow-rules");
                    var DataJson = [];
                    var jsonRules = new Object();

                    if (jsonResult.status === 200) {
                        var ruleId = jsonResult.ruleId;
                        var conditions = jsonResult.conditions;
                        var redirectTo = jsonResult.redirectTo;
                        var condCount = jsonResult.condCount;
                        var deleted = jsonResult.deleted;
                        var RedirectToUrl = jsonResult.RedirectToUrl;

                        if (volWorkflowRules != "" && volWorkflowRules != null) {
                            DataJson = JSON.parse(volWorkflowRules);
                        }

                        jsonRules.ruleId = ruleId;

                        var exists = false;
                        if (DataJson.length > 0) {
                            $.each(DataJson, function (i, obj) {
                                if (obj.ruleId === ruleId) {
                                    exists = true;
                                    return false;
                                }
                            });
                        }

                        if (DataJson.length <= 0 || !exists) {
                            DataJson.push(jsonRules);
                        }

                        if (!deleted) {
                            ars_display_branch_rules(pageId, type, ruleId, conditions, redirectTo, condCount, false, exists,RedirectToUrl);

                            ars_display_hide_see_all(pageId, type);
                        }

                        /* Line Commented by MR 4/11/2017 */
                        //ars_hide_show_branch_button(ruleId, pageId, null, null, null, type);

                        //localStorage.setItem("vol-workflow-rules", JSON.stringify(DataJson));
                        sessionStorage.setItem("vol-workflow-rules", JSON.stringify(DataJson));
                    }

                    //Close modal
                    $('#ars-branch-logic').foundation('close');
                    $('#ars-branch-logic .conditions').empty();

                    //Hide processing screen
                    $('#ars-branch-logic').find('.processing_screen').hide();
                    $('#ars-vol-reg-workflow').find('.processing_screen').hide();
                });
            } else {
                Swal.fire({
                    title: "",
                    type: "warning",
                    text: window.translation.enter_all_required,
                    confirmButtonText: "Ok",
                });
                return false;
            }
        });
    }
}

function ars_hide_show_branch_button(ruleId, pageId, _stepRule, _stepPage, _isDefault, _type) {
    var isDefault, stepRule, stepPage;

    if (ruleId != null && _stepRule == null && _stepPage == null && _isDefault == null) {
        var rule = $('.rule[data-rule-id="' + ruleId + '"]');
        isDefault = rule.data('is-default');
        stepRule = rule.closest('.step-rules');
        stepPage = rule.closest('.step-page');
    }
    else if (ruleId == null && _stepRule != null && _stepPage != null && _isDefault != null) {
        isDefault = _isDefault;
        stepRule = _stepRule;
        stepPage = _stepPage;
    }


    var addLogicBtn = stepPage.find('a[data-element-reveal="ars-branch-logic"][data-from="create"]');
    var count = stepRule.find('.rule[data-is-default="false"]').length;

    if ((pageId != 0 || (pageId == 0 && _type != null && _type == 1)) && !isDefault) {
        if (count == 1) {
            addLogicBtn.hide();
        }
        else if (count == 0) {
            addLogicBtn.show();
        }
    }
}

function ars_delete_workflow() {
    if (!is_backend_page()) return;

    if ($("#vol-workflow-form").length > 0) {
        $(document).on('click', '#vol-workflow-form .delete-workflow', function () {

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.delete_signup_workflow,
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.ok,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true


            }).then(function (result) {
                if (result.isConfirmed) {
                    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
                    var formData = $("#vol-workflow-form").serializeObject();
                    var workflowType = formData['workflow-type'];
                    var inputWorkflowName = $('#vol-workflow-form').find('input[name="workflow-label"]');
                    var sourceInvoked = $('#vol-workflow-form').find('input[name="source-invoked"]').val();
                    var labelErrorWorkflow = inputWorkflowName.siblings('label.validation-message');
                    var workflowName = formData['workflow-label'];
                    var workflowId = formData['workflow-id'];
                    var requestVerificationToken = formData['__RequestVerificationToken'];
                    $.ajax({
                        method: "POST",
                        url: urlSite + "ARS/validateWorkflowName",
                        data: {
                            workflowName: workflowName,
                            workflowId: workflowId,
                            workflowType: workflowType,
                            source: sourceInvoked,
                            "__RequestVerificationToken": requestVerificationToken
                        },
                        beforeSend: function () {
                            $('img.spinner').show();
                            $("#vol-workflow-form").find('.submit-button').find('.button').attr('disabled', 'disabled');
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);
                        if (jsonResult.status === 200) {
                            $.ajax({
                                method: "POST",
                                url: urlSite + "ARS/DeleteArsWorkflow",
                                data: {
                                    form: formData
                                },
                                beforeSend: function () {
                                    $('#ars-vol-reg-workflow').find('.processing_screen').show();
                                }
                            }).done(function (dataInner) {
                                var jsonResultInner = JSON.parse(dataInner);

                                if (jsonResultInner.status === 200) {
                                    //Close modal and display message of success
                                    //localStorage.removeItem("vol-workflow-pages");
                                    sessionStorage.removeItem("vol-workflow-pages");
                                    //localStorage.removeItem("vol-workflow-rules");
                                    sessionStorage.removeItem("vol-workflow-rules");

                                    Swal.fire({
                                        title: window.translation.success,
                                        text: window.translation.workflow_deleted_successfully,
                                        icon: "success",
                                        closeOnConfirm: true
                                    }).then(function (result2) {
                                        $('#ars-vol-reg-workflow').foundation('close');

                                        $('img.spinner').hide();
                                        $("#vol-workflow-form").find('.submit-button').find('.button').removeAttr('disabled');
                                        location.reload();

                                    });

                                } else {
                                    Swal.fire({
                                        title: window.translation.error,
                                        text: jsonResultInner.message,
                                        icon: "error",
                                        closeOnConfirm: true
                                    });
                                }

                                //Hide processing screen
                                $('#ars-vol-reg-workflow').find('.processing_screen').hide();
                                $("#vol-workflow-form").find('.submit-button').find('.button').removeAttr('disabled');
                            });
                        }
                        else {
                            labelErrorWorkflow.show();
                            Swal.fire({
                                title: window.translation.error,
                                text: jsonResult.message,
                                icon: "error",
                                closeOnConfirm: true
                            });

                            $('img.spinner').hide();
                            $("#vol-workflow-form").find('.submit-button').find('.button').removeAttr('disabled');
                        }
                    });

                }
            });


        });
    }
}

function ars_save_workflow() {
    if (!is_backend_page()) return;
    if ($("#vol-workflow-form").length > 0) {
        var translation = window.translation;
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        // Cleaning ars-json data
        //localStorage.removeItem("json-ars-data");
        //localStorage.removeItem("json-ars-data-old");
        sessionStorage.removeItem("json-ars-data");
        sessionStorage.removeItem("json-ars-data-old");
        $(document).on('click', '#vol-workflow-form .save-workflow', function () {
            if ($('#vol-workflow-form').valid()) {
                //detect if the option was selected
                var checked = $('#vol-workflow-form').find('input[name="form-include-gallery"]').is(':checked');
                if (checked === false) {
                    save_workflow_item();
                } else {
                    var elementReveal = 'gallery-select-configuration';
                    $('#' + elementReveal).find('input[name="modal-source"]').val('ars-vol-reg-workflow');
                    $('#' + elementReveal).find('a.select-gallery-button').on('click', function () {
                        var source = $('#' + elementReveal).find('input[name="modal-source"]').val();
                        if (source != null && source != undefined && source != '') {
                            var selectedValue = $('#' + elementReveal).find('select[name="form-select-gallery"]').val();
                            if (selectedValue == 'Select One') {
                                Swal.fire({
                                    title: "Error",
                                    icon: "error",
                                    text: "Please select a Gallery",
                                    confirmButtonText: "Ok"
                                });

                            } else {
                                var helpValue = $('#' + elementReveal).find('textarea[name="form-help-text"]').val();

                                if (helpValue != null && helpValue != undefined && helpValue.trim() != '') {
                                    $('#' + source).find('input[name="form-select-gallery"]').val(selectedValue);
                                    $('#' + source).find('input[name="form-help-text"]').val(helpValue);
                                    $('#' + elementReveal).foundation('close');

                                    if (source == "form-builder-block") {
                                        logic_save_form();
                                    } else if (source == "ars-vol-reg-workflow") {
                                        save_workflow_item();
                                    }

                                } else {
                                    Swal.fire({
                                        title: "Error",
                                        icon: "error",
                                        text: "Please fill the reason to store into the gallery",
                                        confirmButtonText: "Ok"
                                    });

                                }
                            }


                        }
                    });
                    $('#' + elementReveal).foundation('open');
                    $('#' + elementReveal).foundation();

                }

            }
        });
    }
}

function ars_page_events() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $(document).on('click', 'a.edit-ars-component[data-element-reveal!="form-builder-block"]', function () {
        var type_modal = $(this).data('element-reveal');
        var blockId = $(this).data('block-id');
        var elementId = $(this).data('element-id');
        //var jsonData = localStorage.getItem("json-ars-data");
        var jsonData = sessionStorage.getItem("json-ars-data");
        var wysywgetInfo = [];
        var waiverInfo = '';
        var modalFrom = '';
        var cssClass = '';
        var subsiteId = '0';
        if ($(this).data('modal-from') !== null && $(this).data('modal-from') !== undefined && $(this).data('modal-from') !== '') {
            modalFrom = $(this).data('modal-from');
        }

        if (type_modal == "ars-wysiwyg-block") {
            // Reload foundation events
            $("#blocks-ars-wysiwyg-conf").foundation();
            if (jsonData != "" || jsonData != null) {
                jsonData = JSON.parse(jsonData);
                jsonData.forEach(function (item) {
                    if (item.idElement === elementId) {
                        wysywgetInfo = item.wysiwyg;
                        cssClass = item.cssClass;
                        subsiteId = item.subsiteId
                        $('#blocks-ars-wysiwyg-conf input[name="bw-weight"]').val(item.weight);
                    }
                });
            }
            //Initialize wysiwyg with languages of site based in ids of tabs
            $('#blocks-ars-wysiwyg-conf .tab-language').each(function () {
                var languageId = $(this).data('language-id');
                if (wysywgetInfo != "") {
                    wysywgetInfo.forEach(function (item) {
                        if (item.language === languageId) {
                            $('#ars-wysiwyg-' + languageId).text(item.text);
                        }
                    });
                }
                initialize_ckeditor_ars('ars-wysiwyg-', languageId);
                $('#blocks-ars-wysiwyg-conf input[name="block_id"]').val(blockId);
                $('#blocks-ars-wysiwyg-conf input[name="element_id"]').val(elementId);
                $('#blocks-ars-wysiwyg-conf input[name="css_class"]').val(cssClass);
                $('#blocks-ars-wysiwyg-conf select[name="subsite_id"]').val(subsiteId);
                $('#blocks-ars-wysiwyg-conf input[name="subsite_id"]').val(subsiteId);

                $("#blocks-ars-wysiwyg-conf").foundation("open");
            });
            validate_include_gallery("block-ars-wysiwyg-form");
            $("#blocks-ars-wysiwyg-conf").foundation("open");
        }
        else if (type_modal == "ars-waiver-block") {
            // Reload foundation events
            $("#blocks-ars-waiver-conf").foundation();

            if (jsonData != "" || jsonData != null) {
                jsonData = JSON.parse(jsonData);
                jsonData.forEach(function (item) {
                    if (item.idElement === elementId) {
                        waiverInfo = item;
                        $('#blocks-ars-waiver-conf input[name="bw-weight"]').val(item.weight);
                        $('#blocks-ars-waiver-conf input[name="css_class"]').val(item.cssClass);
                        if ($('#blocks-ars-waiver-conf input[name="subsite_id"]').length > 0) {
                            $('#blocks-ars-waiver-conf input[name="subsite_id"]').val(item.subsiteId);
                        } else if ($('#blocks-ars-waiver-conf select[name="subsite_id"]').length > 0) {
                            $('#blocks-ars-waiver-conf select[name="subsite_id"]').val(item.subsiteId);
                        }
                            
                    }
                });
            }
            //Initialize wysiwyg with languages of site based in ids of tabs
            $('#blocks-ars-waiver-conf .tab-language').each(function () {
                var languageId = $(this).data('language-id');
                if (waiverInfo.waiver !== '') {
                    waiverInfo.waiver.forEach(function (item) {
                        if (item.language === languageId) {
                            $('#ars-waiver-text-' + languageId).text(item.text);
                            $('input[name=ars-validation-message-' + languageId + ']').text(item.validationMessage);
                            $('input[name=ars-validation-message-' + languageId + ']').val(item.validationMessage);
                        }
                    });
                }
                initialize_ckeditor_ars('ars-waiver-text-', languageId);
            });

            $('#blocks-ars-waiver-conf input[name="block_id"]').val(blockId);
            $('#blocks-ars-waiver-conf input[name="element_id"]').val(elementId);

            $("#blocks-ars-waiver-conf").foundation("open");
            var options = '';
            if (modalFrom === 'create-page-vol') {
                $('#blocks-ars-waiver-conf .salesforce-object-section').hide();
                $('#blocks-ars-waiver-conf input[name="object_to_save"]').val("Contact");
                callServiceForWaiver("Contact", "ARS/GetFieldsForWaivers", urlSite, waiverInfo.salesforceField, true);

            } else if (modalFrom === 'create-page-partner') {
                $('#blocks-ars-waiver-conf input[name="object_to_save"]').val("");
                options = getDataForSalesforceObject('partner');
            } else if (modalFrom === 'create-page-signup') {
                $('#blocks-ars-waiver-conf input[name="object_to_save"]').val("");
                options = getDataForSalesforceObject('signup');
            }
            else if (modalFrom =='create-page-log-in') {
                $('#blocks-ars-waiver-conf .salesforce-object-section').hide();
                $('#blocks-ars-waiver-conf input[name="object_to_save"]').val("Contact");
                callServiceForWaiver("Contact", "ARS/GetFieldsForWaivers", urlSite, waiverInfo.salesforceField, true);
            }

            if (options !== '') {
                $('#blocks-ars-waiver-conf select[name="salesforce_object"]').empty();
                $('#blocks-ars-waiver-conf select[name="salesforce_object"]').append(options);
                processWaiverSelectObject(urlSite, true, waiverInfo.objectToSave, waiverInfo.salesforceField);
            }

            $("#blocks-ars-waiver-conf").find('.processing_screen').hide();

        } else if (type_modal === "ars-donation-block") {
            // Reload foundation events
            $("#donation-block-conf").foundation();
            $('#donation-block-conf input[name="block_id"]').val(blockId);
            $('#donation-block-conf input[name="element_id"]').val(elementId);
            $("#donation-block-conf .item_amount").remove();

            if (jsonData != "" || jsonData != null) {
                jsonData = JSON.parse(jsonData);
                var PaypalActive = false;
                var CLickPledgeActive = false;
                var isClickPledgeProdMode = false;
                var isPaypalProdMode = false;

                jsonData.forEach(function (item) {
                    if (item.idElement === elementId) {
                        donations_amounts = item.donation_amounts;
                        var cant = 0;
                        PaypalActive = item.PaypalActive;
                        CLickPledgeActive = item.CLickPledgeActive;
                        isClickPledgeProdMode = item.isClickPledgeProdMode;
                        isPaypalProdMode = item.isPaypalProdMode;
                        $('#donation-block-conf input[name="css_class"]').val(item.cssClass);
                        if ($('#donation-block-conf input[name="subsite_id"]').length > 0) {
                            $('#donation-block-conf input[name="subsite_id"]').val(item.subsiteId);
                        } else if ($('#donation-block-conf select[name="subsite_id"]').length > 0) {
                            $('#donation-block-conf select[name="subsite_id"]').val(item.subsiteId);
                        }


                        donations_amounts.forEach(function (key) {
                            var cant = cant + 1;
                            var content = '<div class="row item_amount small-12 columns">' +
                                '<div class="small-4 columns">' +
                                '<input id="label-donation-' + cant + '" class="donation-label" name="label-donation-' + cant + '" type="text" placeholder="Ex. Adults" data-element-id=' + cant + ' value="' + key.label + '"/>' +
                                '</div>' +
                                '<div class="small-4 columns">' +
                                '<div class="columns input-group amount no-padding large-7">' +
                                '<input id="donation-amount-' + cant + '" class="donation-amount" name="donation-amount-' + cant + '" type="number" min="0" placeholder="150" class="input-group-field" value="' + key.amount + '" />' +
                                '<span class="input-group-label">$</span>' +
                                '</div>' +
                                '</div>' +
                                '<div class="small-4 columns no-padding">' +
                                '<a class="delete_amount" data-element-id="' + cant + '" href="#", title="delete_amount"></a>' +
                                '</div>' +
                                '</div>';
                            $('#donation-block-conf .amounts_created').append(content);
                        });

                        $('#donation-block-conf input[name="number_amounts"]').val(cant);
                        $('#donation-block-conf input[name="credit_card"]').prop('checked', item.credit_card);
                        $('#donation-block-conf input[name="donation_mandatory"]').prop('checked', item.donation_mandatory);
                        $('#donation-block-conf input[name="is_recurring"]').prop('checked', item.is_recurring);
                        $('#donation-block-conf input[name="other_amount"]').prop('checked', item.other_amount);
                        $('#donation-block-conf input[name="hide_donation_amount_title_ars"]').prop('checked', item.hide_title_donation_amounts);
                        $('#donation-block-conf input[name="installment"]').val(item.installment);
                        $('#donation-block-conf input[name="hide_country_field"]').prop('checked', item.hide_country_field);
                        $('#donation-block-conf select[name="default_country"]').val(item.default_country);

                        if (item.payment_processor === 'PAYPAL') {
                            $('#donation-block-conf input[name="payment_processor"][value="1"]').prop('checked', true);
                            $('#donation-block-conf').find('.echeck-field').hide();
                            $('#donation-block-conf').find('.paypal-account-field').fadeIn();
                            $('#donation-block-conf input[name="paypal"]').prop('checked', item.paypal_account);
                            $('#donation-block-conf').find('input[name="is_recurring"]').parents('.medium-12').hide();
                            $('#donation-block-conf').find('.general_settings_section').children().slice(0, 4).each(function () {
                                $(this).hide();
                            });
                            /* $('#donation-block-conf').find('.general_settings_title.ars').hide();*/
                        }
                        else {
                            $('#donation-block-conf input[name="payment_processor"][value="0"]').prop('checked', true);
                            $('#donation-block-conf').find('.echeck-field').fadeIn();
                            $('#donation-block-conf').find('.paypal-account-field').hide();
                            $('#donation-block-conf input[name="echeck"]').prop('checked', item.echeck);
                            $('#donation-block-conf').find('.general_settings_section').children().slice(0, 4).each(function () {
                                $(this).show();
                            });
                            $('#donation-block-conf').find('.general_settings_title.ars').show();

                            //Set default values for General Settings
                            $('#donation-block-conf input[name="sf_campaign"]').val(item.campaign);
                            $('#donation-block-conf input[name="sf_campaign_alias"]').val(item.campaign_alias);
                            $('#donation-block-conf input[name="sf_sku"]').val(item.sku);
                            $('#donation-block-conf input[name="sf_tracking_info"]').val(item.tracking_info);
                        }

                        if ($('#donation-block-conf #is_recurring').prop('checked')) {
                            $('#donation-block-conf .installment').removeClass('is-hidden');
                        } else {
                            $('#donation-block-conf .installment').addClass('is-hidden');
                        }

                        var donationQuestions;
                        var self = $('#donation-block-conf');
                        if (item.CustomQuestions !== undefined && item.CustomQuestions !== '' && item.CustomQuestions !== null && item.CustomQuestions.length > 0) {
                            try {
                                var donationQuestion = item.CustomQuestions[0];
                                LoadDonationCustomQuestionConfigurationARS(donationQuestion, self);
                            } catch (e) {
                                window.console && console.error(e)
                            }

                        } else {
                            self.find('#custom_question_section input').prop('disabled', true);
                        }
                    }
                });

                //here ivoke the utility
                VerifyPaymentProcessorStatusARS(CLickPledgeActive, PaypalActive, isClickPledgeProdMode, isPaypalProdMode);
            }
            else {
                if (!$('.installment').hasClass('is-hidden')) {
                    $('.installment').addClass('is-hidden');
                }
                //Set default values to payment type
                $("#donation-block-conf").find('.paypal-account-field').hide();
            }
            validate_include_gallery("block-donation-form");
            $("#donation-block-conf").foundation("open");
        }
    });

    // Event to add block
    $(document).on('click', '.add_block_button', function () {
        var type_block = $('select[name="ars-type-block"]').val();
        var modalFrom = $(this).parents('#ars-page-conf').find('.save-page').attr('data-workflow');
        var dataFrom = $(this).attr('data-from');
        if (type_block === 'wysiwyg-block') {
            $("#blocks-ars-wysiwyg-conf").foundation();

            //Initialize wysiwyg with languages of site based in ids of tabs
            $('#blocks-ars-wysiwyg-conf .tab-language').each(function () {
                var languageId = $(this).data('language-id');
                initialize_ckeditor_ars('ars-wysiwyg-', languageId);
                $('#ars-wysiwyg-' + languageId).text('');
            });
            $('#blocks-ars-wysiwyg-conf input[name="element_id"]').val(0);
            $('#blocks-ars-wysiwyg-conf input[name="block_id"]').val(0);
            $('#blocks-ars-wysiwyg-conf input[name="css_class"]').val('');
            $('#blocks-ars-wysiwyg-conf input[name="subsite_id"]').val('');
            $('#blocks-ars-wysiwyg-conf select[name="subsite_id"]').val('0');
            validate_include_gallery("block-ars-wysiwyg-form");
            $("#blocks-ars-wysiwyg-conf").foundation("open");

        } else if (type_block === 'waiver-block') {
            $("#blocks-ars-waiver-conf").foundation();
            $("#blocks-ars-waiver-conf").foundation("open");

            $('#blocks-ars-waiver-conf .tab-language').each(function () {
                var languageId = $(this).data('language-id');
                initialize_ckeditor_ars('ars-waiver-text-', languageId);
                $('#ars-waiver-text-' + languageId).text('');
            });
            $('#blocks-ars-waiver-conf input[name="element_id"]').val(0);
            $('#blocks-ars-waiver-conf input[name="block_id"]').val(0);
            $('#blocks-ars-waiver-conf input[name="modal_from"]').val(modalFrom);
            $('#blocks-ars-waiver-conf input[name="css_class"]').val('');
            $('#blocks-ars-waiver-conf input[name="subsite_id"]').val('');
            $('#blocks-ars-waiver-conf select[name="subsite_id"]').val('0');


            var options = '';
            if (modalFrom === 'create-page-vol') {
                $('#blocks-ars-waiver-conf .salesforce-object-section').hide();
                $('#blocks-ars-waiver-conf input[name="object_to_save"]').val("Contact");
                callServiceForWaiver("Contact", "ARS/GetFieldsForWaivers", urlSite, '', true);
            } else if (modalFrom === 'create-page-partner') {
                $('#blocks-ars-waiver-conf input[name="object_to_save"]').val("");
                options = getDataForSalesforceObject('partner');
            } else if (modalFrom === 'create-page-signup') {
                $('#blocks-ars-waiver-conf input[name="object_to_save"]').val("");
                options = getDataForSalesforceObject('signup');
            } else if (dataFrom == 'login') {
                $('#blocks-ars-waiver-conf .salesforce-object-section').hide();
                $('#blocks-ars-waiver-conf input[name="object_to_save"]').val("Contact");
                callServiceForWaiver("Contact", "ARS/GetFieldsForWaivers", urlSite, '', true);

            }

            if (options !== '') {
                $('#blocks-ars-waiver-conf select[name="salesforce_object"]').empty();
                $('#blocks-ars-waiver-conf select[name="salesforce_object"]').append(options);
                processWaiverSelectObject(urlSite, false, '', '');
            }

            //Get contact fields
            $("#blocks-ars-waiver-conf").find('.processing_screen').hide();
        } else if (type_block === 'donation-block') {
            $("#donation-block-conf").foundation();
            $('#donation-block-conf input[name="block_id"]').val(0);
            $('#donation-block-conf input[name="element_id"]').val(0);
            $('#donation-block-conf input[name="css_class"]').val('');
            $('#donation-block-conf input[name="subsite_id"]').val('');
            $('#donation-block-conf select[name="subsite_id"]').val('0');

            if ($('#donation-block-conf #is_recurring').prop('checked')) {
                $('#donation-block-conf .installment').removeClass('is-hidden');
            } else {
                $('#donation-block-conf .installment').addClass('is-hidden');
            }

            //Set default values to payment type
            $("#donation-block-conf").find('.paypal-account-field').hide();
            $("#donation-block-conf").find('.echeck-field').show();
            $('#donation-block-conf').find('input[name="is_recurring"]').parents('.medium-12').show();
            $('#donation-block-conf input[name="hide_donation_amount_title_ars"]').prop('checked', false);
            validate_include_gallery("block-donation-form");
            $("#donation-block-conf").foundation("open");
            $("#donation-block-conf .item_amount").remove();
            //Load data about GetActivePaymentProcessors
            $.ajax({
                method: "GET",
                url: urlSite + "admin/GetActivePaymentProcessors",
                beforeSend: function () {
                    $("#donation-block-conf").find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                var CLickPledgeActive = false;
                var PaypalActive = false;
                var isClickPledgeProdMode = false;
                var isPaypalProdMode = false;

                if (jsonResult) {
                    CLickPledgeActive = jsonResult.CLickPledgeActive;
                    PaypalActive = jsonResult.PaypalActive;
                    isClickPledgeProdMode = jsonResult.isClickPledgeProdMode;
                    isPaypalProdMode = jsonResult.isPaypalProdMode;
                }
                VerifyPaymentProcessorStatusARS(CLickPledgeActive, PaypalActive, isClickPledgeProdMode, isPaypalProdMode);

                $("#donation-block-conf").find('.processing_screen').hide();
            });

        } else if (type_block == 'form-block') {
            localStorage.setItem("json-form-builder-data", "");
            var formSelector = '#form-builder-block';
            $("#form-builder-block").foundation();
            $('#form-builder-block').removeAttr('data-elementId');
            $('#form-builder-block').attr('data-workflow', modalFrom);
            $('#form-builder-block input[name="block_id"]').val(0);
            $('#form-builder-block input[name="form-id"]').val(0);

            if (!$("#form-builder-block").hasClass('ars')) {
                $("#form-builder-block").addClass('ars');
            }

            if ($("#form-builder-block").hasClass('ars')) {
                $("#form-builder-block .settings-builder-form-clone").hide();
                $('#form-builder-block').find('.sharing-portal-form').parent().addClass('hidden');
            }

            $("#form-builder-block").foundation("open");
            initialize_form_builder_for_new("", true, formSelector, modalFrom);
            initiate_dragula_form_builder();
            validate_include_gallery("form-builder");

            initiate_jquery_validate_reveal($('#form-builder'), 'form-builder');
        } else if (type_block == 'from-gallery') {
            process_ars_add_block_from_gallery(dataFrom);
        }
    });
}

function LoadDonationCustomQuestionConfigurationARS(donationQuestion, self) {

    if (donationQuestion) {
        self.find('select[name="visibility"]').val(donationQuestion.visibility);
        self.find('input[name="custom_question"]').val(donationQuestion.custom_question);
        self.find('input[name="custom_question_answer"]').val(donationQuestion.custom_question_answer);

        if (donationQuestion.custom_question_required_ars === true) {
            if (self.find('input[name="custom_question_required"]').length > 0) {
                self.find('input[name="custom_question_required"]').prop("checked", donationQuestion.custom_question_required_ars);
            }
            else {
                self.find('input[name="custom_question_required_ars"]').prop("checked", donationQuestion.custom_question_required_ars);
            }
        }

        if (donationQuestion.visibility === 1) {
            self.find('input[name="custom_question_answer"]').parents('.custom_question_answer_section').hide();
        } else if (donationQuestion.visibility === 2) {
            self.find('input[name="custom_question_answer"]').parents('.custom_question_answer_section').show();
        } else {
            self.find('select[name="visibility"]').val("");
            self.find('#custom_question_section input').prop('disabled', true);
        }
    }
}


function VerifyPaymentProcessorStatusARS(CLickPledgeActive, PaypalActive, isClickPledgeProdMode, isPaypalProdMode) {
    var missingPaymentProcessors = false;
    var selectorActiveOption = null;

    if (CLickPledgeActive !== undefined && PaypalActive !== undefined) {

        if (CLickPledgeActive === false && PaypalActive === false) {
            missingPaymentProcessors = true;

            $('div.payments_processor input#option-click-pledge').prop('disabled', true);
            $('div.payments_processor input#option-click-pledge').prop('checked', false);

            $('div.payments_processor input#option-paypal').prop('disabled', true);
            $('div.payments_processor input#option-paypal').prop('checked', false);

        } else {
            // to choose one of the selected payment processors
            var innerHtmlCode = "";
            var processorStatusFormat = '<label class="processor-status-item">#procesor# <span>#mode#</span></label>';
            var messageProcessorStatus = "";

            if (CLickPledgeActive === false) {
                $('div.payments_processor input#option-click-pledge').prop('disabled', true);
                $('div.payments_processor input#option-click-pledge').prop('checked', false);
                $('input#option-click-pledge').parent('div').addClass('disabled-element');

                $('div.payments_processor input#option-click-pledge').parent('div').prop('title', window.translation.contact_support_activate_payment_processor);
                var tooltipCP = new Foundation.Tooltip($('div.payments_processor input#option-click-pledge').parent('div'));
            } else {
                selectorActiveOption = "option-click-pledge";

                var mode = window.translation.mode_test;
                if (isClickPledgeProdMode !== undefined && isClickPledgeProdMode === true)
                    mode = window.translation.mode_production;

                messageProcessorStatus = "Click & Pledge " + window.translation.mode_word + ": ";
                innerHtmlCode += processorStatusFormat.replace("#procesor#", messageProcessorStatus).replace("#mode#", mode);
            }

            if (PaypalActive === false) {
                $('#donation-block-conf div.payments_processor input#option-paypal').prop('disabled', true);
                $('#donation-block-conf div.payments_processor input#option-paypal').prop('checked', false);
                $('#donation-block-conf input#option-paypal').parent('div').addClass('disabled-element');

                $('#donation-block-conf div.payments_processor input#option-paypal').parent('div').prop('title', window.translation.contact_support_activate_payment_processor);
                var tooltipPaypal = new Foundation.Tooltip($('#donation-block-conf div.payments_processor input#option-paypal').parent('div'));

            } else if (selectorActiveOption === null || selectorActiveOption === '') {
                selectorActiveOption = "option-paypal";
            }

            if (PaypalActive === true) {
                mode = window.translation.mode_test;
                if (isPaypalProdMode !== undefined && isPaypalProdMode === true)
                    mode = window.translation.mode_production;

                messageProcessorStatus = "Paypal " + window.translation.mode_word + ": ";
                innerHtmlCode += processorStatusFormat.replace("#procesor#", messageProcessorStatus).replace("#mode#", mode);
            }

            $('#donation-block-conf div.payments_processor input#' + selectorActiveOption).prop('checked', true);
            $('#donation-block-conf div.processor-status').html(innerHtmlCode);
            $('#donation-block-conf #processors-mode div.row').removeClass("hide");


            if (selectorActiveOption === 'option-paypal') {
                $('#donation-block-conf .payment_options_section').hide();
                $('#donation-block-conf .payment_options_section_details').hide();
                $('#donation-block-conf .payment_type_section .echeck-field').hide();
                $('#donation-block-conf .paypal-account-field').show();

                $('#donation-block-conf .general_settings_section').children().slice(0, 4).each(function () {
                    $(this).hide();
                });
                //selectorActiveOption
            } else if (selectorActiveOption === "option-click-pledge") {
                $('#donation-block-conf .payment_options_section').show();
                $('#donation-block-conf .payment_options_section_details').show();
                $('#donation-block-conf .payment_type_section .echeck-field').show();
                $('#donation-block-conf .paypal-account-field').hide();

                $('#donation-block-conf .general_settings_section').children().slice(0, 4).each(function () {
                    $(this).show();
                });
            }

            var visivilityVal = $('#donation-block-conf select[name="visibility"]').val();
            if (visivilityVal === '' || visivilityVal === undefined || visivilityVal === 'None') {
                $('#donation-block-conf #custom_question_section input').prop('disabled', true);
            }
            $('#donation-block-conf #custom_question_section').show();



        }
    } else {
        missingPaymentProcessors = true;
    }

    if (missingPaymentProcessors === true) {
        $('#donation-block-conf div.missing_processors label').addClass('error');
        $('#donation-block-conf div.missing_processors').removeClass('hide');
        $('#donation-block-conf div.payments_processor div.input-group-radiobutton').addClass('disabled-element');
        $('#donation-block-conf div.submit-button input.save').prop('disabled', true);
    }
}

function callServiceForWaiver(objectName, urlService, urlSite, valueAssigned, fullLoad) {

    var urlToCall = urlSite + urlService + '/?objectType=' + objectName;

    $.ajax({
        method: "GET",
        url: urlToCall,
        beforeSend: function () {
            $("#blocks-ars-waiver-conf").find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult && jsonResult.length > 0) {
            $('#blocks-ars-waiver-conf select[name="salesforce_field"]').empty();

            //Include default value
            $('#blocks-ars-waiver-conf select[name="salesforce_field"]').append('<option value=""> - ' + window.translation.select_salesforce_field + ' - </option>');


            jsonResult.forEach(function (item) {
                var text = item.Label;
                var value = item.ApiName;
                var option = '<option value="' + value + '">' + text + '</option>';

                $('#blocks-ars-waiver-conf select[name="salesforce_field"]').append(option);
            });
        }

        if (fullLoad === true) {
            if (valueAssigned === '')
                initiate_jquery_validate_reveal($('#block-ars-waiver-form'), 'block-ars-waiver-form');
            else
                $('#blocks-ars-waiver-conf select[name=salesforce_field]').val(valueAssigned);
        } else {
            $("#blocks-ars-waiver-conf").find('.processing_screen').hide();
        }

    });
    validate_include_gallery("block-ars-waiver-form");

}

//This function adds a space "&nbsp;" to <i> tags that are empty to prevent ckeditor from removing it
function addNbspToEmptyIcons(content) {
    return content.replace(/<i([^>]*)><\/i>/g, '<i$1>&nbsp;</i>');
}
function initialize_ckeditor_ars(element, languageId) {
    if ($('#cke_' + element + languageId).length > 0) {
        $('#cke_' + element + languageId).remove();
    }

    var editor = CKEDITOR.replace(element + languageId, {
        //extraPlugins: 'uploadimage,image2',
        //removePlugins: 'image',
        filebrowserBrowseUrl: '/custom-ckfinder/connector',
        filebrowserImageBrowseUrl: '/custom-ckfinder/connector?type=Images',
        filebrowserUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Files',
        filebrowserImageUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Images',
        filebrowserWindowWidth: 800,
        filebrowserWindowHeight: 600,
        customConfig: '/js/config/ckeditor_config.js',
        contentsCss: ['/css/font-awesome.css'],
        //Allows CKEditor to accept and maintain <i> tags
        extraAllowedContent: 'i[*];svg[*]{*}(*);path[*]{*}(*);circle[*]{*}(*);rect[*]{*}(*);line[*]{*}(*);polyline[*]{*}(*);polygon[*]{*}(*);g[*]{*}(*);title[*]{*}(*);style[*]{*}(*);a[*]{*}(*);text[*]{*}(*)',
        protectedSource: [/<title>[\s\S]*?<\/title>/gi ],
        //prevents the editor from changing the <i> element to <em>
        coreStyles_italic: { element: 'i', overrides: 'em' },
        on: {
            instanceReady: function (evt) {
                var editor = evt.editor;
                editor.on('toHtml', function (event) {
                    
                    var rootElement = event.data.dataValue;
                    function traverse(element) {
                        if (element.attributes && element.attributes.id === 'google_translate_element') {
                            element.children = [
                                new CKEDITOR.htmlParser.text('GOOGLE_TRANSLATE_CONTENT')
                            ];
                        }

                        if (element.children && element.children.length > 0) {
                            for (var i = 0; i < element.children.length; i++) {
                                var child = element.children[i];

                                if (child instanceof CKEDITOR.htmlParser.element) {
                                    traverse(child);
                                }
                            }
                        }
                    }

                    traverse(rootElement);
                });
                editor.on('mode', function() {
                    if (this.mode === 'source') {
                        var textarea = this.editable().$;
                        textarea.addEventListener('input', function() {
                            var content = editor.getData();
                            setTimeout(function() {
                                var updatedContent = addNbspToEmptyIcons(content);
                                editor.setData(updatedContent);
                            }, 0);
                        });
                    }
                });
            }
        }
    });
    CKFinder.setupCKEditor(editor);
}
// Method to add temp wysiwyg block in ars page
function events_setting_donation_block() {
    if (!is_backend_page()) return;
    $(document).on('click', '#donation-block-conf .save', function () {
        //validate if user added any text in textareas
        var self = $('#donation-block-conf');
        var blockId = parseInt($('#donation-block-conf input[name="block_id"]').val());
        var jsonBlock = new Object();
        var elementId = parseInt($('#donation-block-conf input[name="element_id"]').val());
        var weight = parseInt($('#donation-block-conf input[name="bw-weight"]').val());
        var paymentProcessor = parseInt($('#donation-block-conf input[name="payment_processor"]:checked').val());
        var cssClass = $('#donation-block-conf input[name="css_class"]').val();
        var subsiteId = 0;
        if ($('#donation-block-conf input[name="subsite_id"]').length > 0) {
            subsiteId = $('#donation-block-conf input[name="subsite_id"]').val();
        } else if ($('#donation-block-conf select[name="subsite_id"]').length > 0) {
            subsiteId = $('#donation-block-conf select[name="subsite_id"]').val();
        }
        var isdeleted = false;
        var validation = false;
        var error_message = '';
        var isValidCustomQuestions = true;
        var visibilityValue = self.find('select[name="visibility"]').val();
        var customQuestionAnswer = self.find('input[name="custom_question_answer"]').val();
        var customQuestionText = self.find('input[name="custom_question"]').val();

        $('#donation-block-conf .payment_type input[type="checkbox"]').each(function () {
            if ($(this).prop('checked')) { validation = true; }
        });
        if (self.find('input[name="hide_donation_amount_title"]').prop('checked') === true) {
            validation = true;
        }
        if (validation == false) {
            error_message = '<p>' + window.translation.at_least_one_payment_type + '</p>';
            Swal.fire({
                title: window.translation.warning,
                html: error_message,
                icon: "warning",
                closeOnConfirm: true,
            });
            return false;
        }
        if (paymentProcessor === '0' && $('#donation-block-conf input[name="is_recurring"]').prop('checked')) {
            if ($('#donation-block-conf input[name="installment"]').val() == '') {
                validation = false; error_message = error_message + '<p>' + window.translation.installment + " " + window.translation.is_required + '</p>';
            } else {
                var installment = parseInt($('#donation-block-conf input[name="installment"]').val());
                if (installment < 2 || installment > 999) {
                    validation = false; error_message = error_message + '<p>' + window.translation.installment + " " + window.translation.range_installment + '</p>';
                }
            }
        }
        if ($('#donation-block-conf input[name="other_amount"]').prop('checked') == false) {
            if ($('#donation-block-conf .amounts_created .item_amount').length > 0) { validation = true }
            else { validation = false; error_message = error_message + '<p>' + window.translation.at_least_one_amount + '</p>' }
        }

        if ((visibilityValue === "1" || visibilityValue === "2") && (customQuestionText === undefined || customQuestionText === '')) {
            validation = false;
            error_message += '<p>' + window.translation.custom_question_is_required + '</p>';
        }

        if (visibilityValue === "2" && (customQuestionAnswer === undefined || customQuestionAnswer === '')) {
            validation = false;
            error_message += '<p>' + window.translation.answer_required_for_hidden + '</p>';
        }

        if (validation) {
            //var valjson = localStorage.getItem("json-ars-data");
            var valjson = sessionStorage.getItem("json-ars-data");
            var donation_amounts = [];
            jsonBlock.idElement = elementId;
            jsonBlock.blockId = blockId;
            jsonBlock.type = "donation";
            jsonBlock.cssClass = cssClass;
            jsonBlock.subsiteId = subsiteId;
            if ($('input[name="payment_processor"]:checked').val() === '1') {
                jsonBlock.payment_processor = 'PAYPAL';
            }
            else {
                jsonBlock.payment_processor = 'CLICKANDPLEDGE';
            }
            //Save amounts added in local storage json
            $('#donation-block-conf .amounts_created .item_amount').each(function () {
                var amounts = new Object();
                amounts.label = $(this).find(".donation-label").val();
                amounts.amount = $(this).find(".donation-amount").val();
                donation_amounts.push(amounts);
            });
            jsonBlock.donation_mandatory = false;
            if ($('#donation-block-conf input[name="donation_mandatory"]').prop('checked')) { jsonBlock.donation_mandatory = true; }
            jsonBlock.is_recurring = false;
            if ($('#donation-block-conf input[name="is_recurring"]').prop('checked')) { jsonBlock.is_recurring = true; }
            jsonBlock.credit_card = false;
            if ($('#donation-block-conf input[name="credit_card"]').prop('checked')) {
                jsonBlock.credit_card = true;
            }
            jsonBlock.echeck = false;
            if ($('#donation-block-conf input[name="echeck"]').prop('checked')) { jsonBlock.echeck = true; }
            jsonBlock.paypal_account = false;
            if ($('#donation-block-conf input[name="paypal"]').prop('checked')) { jsonBlock.paypal_account = true; }
            jsonBlock.other_amount = false;
            if ($('#donation-block-conf input[name="other_amount"]').prop('checked')) { jsonBlock.other_amount = true; }
            jsonBlock.installment = $('#donation-block-conf input[name="installment"]').val();
            jsonBlock.donation_amounts = donation_amounts;
            jsonBlock.weight = weight;
            if (jsonBlock.weight == 0) { jsonBlock.weight = $("#ars-page-conf-form .ars_block").length; }
            jsonBlock.isdeleted = isdeleted;
            jsonBlock.campaign = $('#donation-block-conf input[name="sf_campaign"]').val();
            jsonBlock.campaign_alias = $('#donation-block-conf input[name="sf_campaign_alias"]').val();
            jsonBlock.sku = $('#donation-block-conf input[name="sf_sku"]').val();
            jsonBlock.tracking_info = $('#donation-block-conf input[name="sf_tracking_info"]').val();
            jsonBlock.hide_title_donation_amounts = (self.find('input[name="hide_donation_amount_title_ars"]').prop('checked') == true) ? true : false;
            jsonBlock.hide_country_field = (self.find('input[name="hide_country_field"]').prop('checked') == true) ? true : false;
            jsonBlock.default_country = $('#donation-block-conf select[name="default_country"]').val();

            var customQuestionObject = new Object();
            customQuestionObject.custom_question = $('#donation-block-conf input[name="custom_question"]').val();
            customQuestionObject.custom_question_answer = $('#donation-block-conf input[name="custom_question_answer"]').val();
            customQuestionObject.custom_question_required_ars = (self.find('input[name="custom_question_required_ars"]').prop('checked') == true) ? true : false;
            customQuestionObject.visibility = 0;

            try {
                customQuestionObject.visibility = parseInt($('#donation-block-conf select[name="visibility"]').val());
            } catch (e) {
                console.log(e.message);
            }

            jsonBlock.CustomQuestions = [customQuestionObject];

            jsonBlock.PaypalActive = (self.find('input[id="option-paypal"]').prop('disabled') == true) ? false : true;
            jsonBlock.CLickPledgeActive = (self.find('input[id="option-click-pledge"]').prop('disabled') == true) ? false : true;

            if (valjson == "" || valjson == null) {
                var DataJson = [];
                jsonBlock.idElement = 1;
                DataJson.push(jsonBlock);

                var hiddenInfo = JSON.stringify(DataJson);

                //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                //localStorage.setItem("json-ars-data", hiddenInfo);
                sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                sessionStorage.setItem("json-ars-data", hiddenInfo);
                load_donation_data_in_page(jsonBlock, false);
                $("#donation-block-conf").foundation("close");
            } else {

                var DataJson = JSON.parse(valjson);
                // Existing values in local storage
                if (elementId == 0) {
                    DataJson.forEach(function (item) {
                        if (item.idElement > jsonBlock.idElement) {
                            jsonBlock.idElement = item.idElement;
                        }
                    });
                    jsonBlock.idElement = jsonBlock.idElement + 1;
                    DataJson.push(jsonBlock);
                    var hiddenInfo = JSON.stringify(DataJson);
                    //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                    //localStorage.setItem("json-ars-data", hiddenInfo);
                    sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                    sessionStorage.setItem("json-ars-data", hiddenInfo);
                    load_donation_data_in_page(jsonBlock, false);
                    $("#donation-block-conf").foundation("close");
                } else {
                    DataJson.forEach(function (item) {
                        if (item.idElement == jsonBlock.idElement) {
                            item.donation_amounts = donation_amounts;
                            item.payment_processor = jsonBlock.payment_processor;
                            item.donation_mandatory = jsonBlock.donation_mandatory;
                            item.is_recurring = jsonBlock.is_recurring;
                            item.credit_card = jsonBlock.credit_card;
                            item.echeck = jsonBlock.echeck;
                            item.other_amount = jsonBlock.other_amount;
                            item.weight = jsonBlock.weight;
                            item.isdeleted = jsonBlock.isdeleted;
                            item.installment = jsonBlock.installment;
                            item.paypal_account = jsonBlock.paypal_account;
                            item.campaign = jsonBlock.campaign;
                            item.campaign_alias = jsonBlock.campaign_alias;
                            item.sku = jsonBlock.sku;
                            item.tracking_info = jsonBlock.tracking_info;
                            item.hide_title_donation_amounts = jsonBlock.hide_title_donation_amounts;
                            item.hide_country_field = jsonBlock.hide_country_field;
                            item.default_country = jsonBlock.default_country;
                            item.PaypalActive = jsonBlock.PaypalActive;
                            item.CLickPledgeActive = jsonBlock.CLickPledgeActive;
                            item.visibility = jsonBlock.visibility;
                            item.custom_question = jsonBlock.custom_question;
                            item.custom_question_answer = jsonBlock.custom_question_answer;
                            item.custom_question_required_ars = jsonBlock.custom_question_required_ars;
                            item.CustomQuestions = jsonBlock.CustomQuestions;
                            item.cssClass = jsonBlock.cssClass;
                            item.subsiteId = jsonBlock.subsiteId;

                        }
                    });

                    var hiddenInfo = JSON.stringify(DataJson);

                    //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                    //localStorage.setItem("json-ars-data", hiddenInfo);
                    sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                    sessionStorage.setItem("json-ars-data", hiddenInfo);
                    load_donation_data_in_page(jsonBlock, true);
                    $("#donation-block-conf").foundation("close");
                }
            }
            ars_hide_show_form_option();
        } else {
            Swal.fire({
                title: window.translation.warning,
                html: error_message,
                icon: "warning",
                closeOnConfirm: true
            });
            return false;
        }

        $('#ars-type-block').prop('selectedIndex', 0);
    });
    $(document).on('click', 'input[name="is_recurring"]', function () {
        if ($(this).prop('checked')) {
            $('.installment').removeClass('is-hidden');
        } else {
            $('.installment').addClass('is-hidden');
        }
    });

    $(document).on('change', 'select[name="visibility"]', function () {
        var value = $(this).val();
        var parent = $(this).parents('div.custom_question_section');

        if (value !== '') {
            parent.find('input').prop('disabled', false);
        }

        if (value === "1") { // Display
            parent.find('input[name="custom_question_answer"]').parents('.custom_question_answer_section').hide();
        } else if (value === "2") {
            parent.find('input[name="custom_question_answer"]').parents('.custom_question_answer_section').show();
        } else {
            parent.find('input[type="checkbox"]').prop('checked', false);
            parent.find('input').prop('disabled', true);
        }
    });

    $(document).on('change', 'input[name="payment_processor"]', function () {
        var processorSelected = $(this).val();
        var revealModal = $(this).parents('.reveal');

        //Set inputs to check false
        revealModal.find('.payment_type').find('input[type="checkbox"]').prop('checked', false);

        if (processorSelected && processorSelected.toString() === '0') { //Click & Pledge
            revealModal.find('.echeck-field').fadeIn();
            revealModal.find('.paypal-account-field').hide();
            revealModal.find('input[name="is_recurring"]').parents('.medium-12').show();
            revealModal.find('.payment_options_section').show();
            revealModal.find('.general_settings_section').children().slice(0, 4).each(function () {
                $(this).show();
            });
            revealModal.find('.general_settings_title.ars').show();
            revealModal.find('#custom_question_section').show();
        }
        else {

            revealModal.find('.paypal-account-field').fadeIn();
            revealModal.find('.echeck-field').hide();
            revealModal.find('input[name="is_recurring"]').parents('.medium-12').hide();
            revealModal.find('.payment_options_section').hide();
            revealModal.find('.general_settings_section').children().slice(0, 4).each(function () {
                $(this).hide();
            });
            revealModal.find('#custom_question_section').hide();
        }
    });
    $(document).on('mousedown', '.ars_block .move', function () {
        $(this).parents(".ars_block ").addClass("moveblock");
    });
    $(document).on('mouseup', '.ars_block .move', function () {
        $(this).parents(".ars_block ").removeClass("moveblock");
    });
}

function load_donation_data_in_page(jsonBlock, alreadyCreated) {
    if (!is_backend_page()) return;
    var frequency = ''; var payment_information = ''; var paypal_row = '';

    if (jsonBlock.is_recurring == true && jsonBlock.payment_processor !== 'PAYPAL') {
        frequency = '<div class="frequency_section columns no-padding large-12 text-center">'
            + '<div class="no-padding columns large-12">'
            + '<h4 style="text-align:center">' + window.translation.donation_frequency + '</h4>'
            + '</div>'
            + '<div class="large-12 columns no-padding text-center">'
            + '<div class="item_amount">'
            + '<div class="ck-button">'
            + '<label>'
            + '<input name="donation_frequency" type="radio" value="One_time"><span>' + window.translation.one_time + '</span>'
            + '</label>'
            + '</div>'
            + '</div>'
            + '<div class="item_amount">'
            + '<div class="ck-button">'
            + '<label>'
            + '<input name="donation_frequency" type="radio" value="Monthly"><span>' + window.translation.monthly + '</span>'
            + '</label>'
            + '</div>'
            + '</div>'
            + '<div class="item_amount">'
            + '<div class="ck-button">'
            + '<label>'
            + '<input name="donation_frequency" type="radio" value="Quaterly"><span>' + window.translation.quarterly + '</span>'
            + '</label>'
            + '</div>'
            + '</div>'
            + '<div class="item_amount">'
            + '<div class="ck-button">'
            + '<label>'
            + '<input name="donation_frequency" type="radio" value="Annual"><span>' + window.translation.annual + '</span>'
            + '</label>'
            + '</div>'
            + '</div>'
            + '</div>'

            + '</div>';
    }

    if (jsonBlock.echeck == true) {
        payment_information = '<div class="payment_information columns large-12 no-padding">'
            + '<h4>' + window.translation.payment_information + '</h4>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-4 columns">'
            + '<label for="account_number">' + window.translation.account_number + ':</label>'
            + '</div>'
            + '<div class="large-8 columns no-padding">'
            + '<input  name="account_number" type="text" placeholder="' + window.translation.account_number + '"/>'
            + '</div>'
            + '</div>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-4 columns">'
            + '<label for="routing_number">' + window.translation.routing_number + '</label>'
            + '</div>'
            + '<div class="large-8 columns no-padding">'
            + '<input  id="routing_number" name="routing_number" type="text" placeholder="' + window.translation.routing_number + '"/>'
            + '</div>'
            + '</div>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-4 columns">'
            + '<label for="account_type">' + window.translation.account_type + '</label>'
            + '</div>'
            + '<div class="large-8 columns no-padding">'
            + '<select name="account_type" >'
            + '<option value="">' + window.translation.select + '</option>'
            + '</select>'
            + '</div>'
            + '</div>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-4 columns">'
            + '<label for="check_type">' + window.translation.check_type + '</label>'
            + '</div>'
            + '<div class="large-8 columns no-padding">'
            + '<select name="check_type" >'
            + '<option value="">' + window.translation.select + '</option>'
            + '</select>'
            + '</div>'
            + '</div>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-4 columns">'
            + '<label for="check_number">' + window.translation.check_number + '</label>'
            + '</div>'
            + '<div class="large-4 columns no-padding">'
            + '<input id="check_number" name="check_number" type="text" placeholder="' + window.translation.check_number + '"/>'
            + '</div>'
            + '</div>'
            + '</div>';
    }
    if (jsonBlock.paypal_account == true) {
        paypal_row = '<div class="row pay_with_paypal_button text-center">'
            + '<div class="small-12 columns">'
            + '<h4 style="text-align:center;margin-bottom:0px">' + window.translation.donate_with_paypal_account + '</h4>'
            + '</div>'
            + '<div class="small-12 columns button-paypal-account">'
            + '<form class="pay-with-paypal-account">'
            + '<a href="#">Donate</a>'
            + '</form>'
            + '</div>';

        if (jsonBlock.credit_card == true) {
            paypal_row += '<div class="small-12 columns or-text text-center" style="margin-bottom:20px">'
                + '<span class="line-or" style="font-size:18px">'
                + '<span class="left-line"></span>'
                + window.translation.or_word
                + '<span class="right-line"></span>'
                + '</span>'
                + '</div>';
        }

        paypal_row += '</div>';
    }
    if (jsonBlock.credit_card == true) {
        payment_information = '<div class="payment_information columns large-12 no-padding">'
            + '<h4>' + window.translation.payment_information + '</h4>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-4 columns">'
            + '<label for="credit_card_number">' + window.translation.credit_card_number + '</label>'
            + '</div>'
            + '<div class="large-8 columns no-padding">'
            + '<input id="credit_card_number" name="credit_card_number" type="text" placeholder="' + window.translation.credit_card_number + '"/>'
            + '</div>'
            + '</div>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-4 columns">'
            + '<label for="cv2">CV2</label>'
            + '</div>'
            + '<div class="large-8 columns no-padding">'
            + '<input id="cv2" name="cv2" type="text" placeholder="CV2"/>'
            + '</div>'
            + '</div>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-4 columns">'
            + '<label for="expiration_date">' + window.translation.expiration_date + '</label>'
            + '</div>'
            + '<div class="large-4 columns no-padding">'
            + '<select name="month" >'
            + '<option value="">' + window.translation.january + '</option>'
            + '</select>'
            + '</div>'
            + '<div class="large-4 columns">'
            + '<select name="year">'
            + '<option value="2020">2019</option>'
            + '</select>'
            + '</div>'
            + '</div>'
            + '</div>';
    }
    if (jsonBlock.echeck == true && jsonBlock.credit_card == true) {
        payment_information = '<div class="payment_information columns large-12 no-padding">'
            + '<h4>' + window.translation.payment_information + '</h4>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-4 columns">'
            + '<label for="payment_type">' + window.translation.payment_type + '</label>'
            + '</div>'
            + '<div class="large-8 columns no-padding">'
            + '<select name="account_type" >'
            + '<option value="">' + window.translation.credit_card + '</option>'
            + '<option value="">' + window.translation.echeck + '</option>'
            + '</select>'
            + '</div>'
            + '</div>'
            + '</div>';
    }

    // loading section amounts and personal information
    var amounts = '';
    var amount = '';
    var other_amount = '';
    var personalInformation = '';

    jsonBlock.donation_amounts.forEach(function (item) {
        amount = amount + '<div class="item_amount">'
            + '<label class="description">'
            + item.label + ':'
            + '</label>'
            + '<div class="ck-button">'
            + '<label>'
            + '<input id="donation_amount" name="donation_amount" type="radio" value="' + item.amount + '"><span>' + item.amount + '</span>'
            + '</label>'
            + '</div>'
            + '</div>'
    });

    if (jsonBlock.other_amount == true) {
        var label = window.translation.other_amount_label;
        other_amount = '<div class="item_amount">'
            + '<div class="ck-button">'
            + '<label>'
            + '<input id="donation_amount" name="donation_amount" type="radio" value="' + label + '"><span>' + label + '</span>'
            + '</label>'
            + '</div>'
            + '<div class="other_amount">'
            + '<input id="other_amount" name="other_amount" type="text"/>'
            + '</div>'
            + '</div>';
    }
    amounts = '<div class="amounts_section columns no-padding large-12">';

    if (jsonBlock.hide_title_donation_amounts == false) {
        amounts += '<h4 style="text-align:center">' + window.translation.donation_amounts + '</h4>';
    }

    amounts += '<div class="large-12 columns no-padding text-center">'
        + amount + other_amount
        + '</div>'
        + '</div>';

    if (payment_information) {
        personalInformation = '<div class="personal_information columns large-6">'
            + '<h4>' + window.translation.personal_information + '</h4>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-3 columns">'
            + '<label for="first_name">' + window.translation.first_name + ':</label>'
            + '</div>'
            + '<div class="large-9 columns no-padding">'
            + '<input id="first_name" name="first_name" type="text" placeholder="' + window.translation.first_name + '"/>'
            + '</div>'
            + '</div>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-3 columns">'
            + '<label for="last_name">' + window.translation.last_name + '</label>'
            + '</div>'
            + '<div class="large-9 columns no-padding">'
            + '<input id="last_name" name="last_name" type="text" placeholder="' + window.translation.last_name + '"/>'
            + '</div>'
            + '</div>'
            + payment_information
            + '</div>'
            + '<div class="billing_address columns large-6">'
            + '<h4>' + window.translation.billing_address + '</h4>'
            + '<div class="large-12 columns no-padding">'
            + '<div class="large-3 columns">'
            + '<label for="address">' + window.translation.address + ':</label>'
            + '</div>'
            + '<div class="large-9 columns no-padding">'
            + '<input id="address" name="address" type="text" placeholder="' + window.translation.address + '"/>'
            + '</div>'
            + '</div>'

            + '<div class="large-12 columns no-padding">'
            + '<div class="large-3 columns">'
            + '<label for="city">' + window.translation.city + '</label>'
            + '</div>'
            + '<div class="large-9 columns no-padding">'
            + '<input id="city" name="city" type="text" placeholder="' + window.translation.city + '"/>'
            + '</div>'
            + '</div>'

            + '<div class="large-12 columns no-padding">'
            + '<div class="large-3 columns">'
            + '<label for="last_name">' + window.translation.state + '</label>'
            + '</div>'
            + '<div class="large-9 columns no-padding">'
            + '<select name="country" >'
            + '<option value="">' + window.translation.select + '</option>'
            + '</select>'
            + '</div>'
            + '</div>'


            + '<div class="large-12 columns no-padding">'
            + '<div class="large-3 columns">'
            + '<label for="postal_code">' + window.translation.postal_code + '</label>'
            + '</div>'
            + '<div class="large-9 columns no-padding">'
            + '<input id="postal_code" name="postal_code" type="text" placeholder="' + window.translation.postal_code + '"/>'
            + '</div>'
            + '</div>';

        if (jsonBlock.hide_country_field === false) {
            personalInformation += '<div class="large-12 columns no-padding">'
                + '<div class="large-3 columns">'
                + '<label for="country">' + window.translation.country + '</label>'
                + '</div>'
                + '<div class="large-9 columns no-padding">'
                + '<select name="country" >'
                + '<option value="">' + window.translation.select + '</option>'
                + '</select>'
                + '</div>'
                + '</div>';
        }
        personalInformation += '</div>';

    }

    var ars_block = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block donationBlock blockContainer" data-block-name="Donation Block">'
        + '<div class="content">' + amounts + frequency + paypal_row + personalInformation
        + '</div>'
        + '<div class="options">'
        + '<a data-element-reveal="ars-donation-block" title="Donation" class="edit-ars-component" data-block-id="' + jsonBlock.blockId + '" data-element-id="' + jsonBlock.idElement + '"></a>'
        + '<a  title="Delete Content" class="delete-ars-component" data-block-id="' + jsonBlock.blockId + '"  data-element-id="' + jsonBlock.idElement + '"></a>'
        + '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>'
        + '</div>'
        + '</div>';

    if (alreadyCreated == false) {
        $('#ars-page-conf .content_page').append(ars_block);
    } else {
        $('#ars-page-conf .content_page .ars_block[data-element-id="' + jsonBlock.idElement + '"]').replaceWith(ars_block);
    }
}

// Method to add temp wysiwyg block in ars page
function add_update_ars_wysiwyg_block() {
    if (!is_backend_page()) return;
    $(document).on('click', '#blocks-ars-wysiwyg-conf .save', function () {
        //validate if user added any text in textareas
        var validate_text = false;
        var jsonBlock = new Object();
        var wysywgetInfo = [];
        var elementId = parseInt($('#blocks-ars-wysiwyg-conf input[name="element_id"]').val());
        var weight = parseInt($('#blocks-ars-wysiwyg-conf input[name="bw-weight"]').val());
        var cssClass = $('#blocks-ars-wysiwyg-conf input[name="css_class"]').val();
        var subsiteId = 0;
        if ($('#blocks-ars-wysiwyg-conf input[name="subsite_id"]').length > 0) {
            subsiteId = $('#blocks-ars-wysiwyg-conf input[name="subsite_id"]').val();
        } else if ($('#blocks-ars-wysiwyg-conf select[name="subsite_id"]').length > 0) {
            subsiteId = $('#blocks-ars-wysiwyg-conf select[name="subsite_id"]').val();
        }

        var default_text = '<span class="help-text">Wysiwyg  (' + window.translation.please_fill_data + ')</span>';
        var isdeleted = false;

        $('#blocks-ars-wysiwyg-conf .tab-language').each(function () {
            var languageId = $(this).data('language-id');
            var jsonData = new Object();
            var text = CKEDITOR.instances["ars-wysiwyg-" + languageId].getData();
            jsonData.text = text;
            jsonData.language = languageId;
            if (text != '' && validate_text == false) { validate_text = true; }
            wysywgetInfo.push(jsonData);

            //validating if language is default
            if ($(this).hasClass("is-default") && text != '') {
                default_text = text;
            }
        });

        if (validate_text) {
            var blockId = parseInt($('#blocks-ars-wysiwyg-conf input[name="block_id"]').val());
            jsonBlock.idElement = elementId;
            jsonBlock.blockId = blockId;
            jsonBlock.type = "wysiwyg";
            jsonBlock.wysiwyg = wysywgetInfo;
            jsonBlock.weight = 0;
            jsonBlock.isdeleted = isdeleted;
            jsonBlock.cssClass = cssClass;
            jsonBlock.subsiteId = subsiteId;
            //var valjson = localStorage.getItem("json-ars-data");
            var valjson = sessionStorage.getItem("json-ars-data");
            if (valjson == "" || valjson == null) {
                var DataJson = [];
                jsonBlock.idElement = 1;
                DataJson.push(jsonBlock);
                var hiddenInfo = JSON.stringify(DataJson);

                //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                //localStorage.setItem("json-ars-data", hiddenInfo);
                sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                sessionStorage.setItem("json-ars-data", hiddenInfo);
                var ars_block = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block">' +
                    '<div class="content">' + default_text +
                    '</div>' +
                    '<div class="options">' +
                    '<a data-element-reveal="ars-wysiwyg-block" title="Wysiwyg" class="edit-ars-component" data-block-id="0" data-element-id="' + jsonBlock.idElement + '"></a>' +
                    '<a  title="Delete Content" class="delete-ars-component" data-block-id="0"  data-element-id="' + jsonBlock.idElement + '"></a>' +
                    '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                    '</div>' +
                    '</div>';
                $('#ars-page-conf .content_page').append(ars_block);

            } else {
                // validate if user edit item already created
                var DataJson = JSON.parse(valjson);
                if (elementId == 0) {
                    jsonBlock.idElement = 0;
                    DataJson.forEach(function (item) {
                        if (item.idElement > jsonBlock.idElement) {
                            jsonBlock.idElement = item.idElement;
                        }
                    });
                    jsonBlock.idElement = jsonBlock.idElement + 1;
                    jsonBlock.weight = jsonBlock.idElement;

                    DataJson.push(jsonBlock);
                    var hiddenInfo = JSON.stringify(DataJson);
                    //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                    //localStorage.setItem("json-ars-data", hiddenInfo);
                    sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                    sessionStorage.setItem("json-ars-data", hiddenInfo);
                    var ars_block = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.wysiwyg_block + '">' +
                        '<div class="content">' + default_text +
                        '</div>' +
                        '<div class="options">' +
                        '<a data-element-reveal="ars-wysiwyg-block" title="Wysiwyg" class="edit-ars-component" data-block-id="0" data-element-id="' + jsonBlock.idElement + '"></a>' +
                        '<a  title="Delete Content" class="delete-ars-component" data-block-id="0"  data-element-id="' + jsonBlock.idElement + '"></a>' +
                        '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                        '</div>' +
                        '</div>';
                    $('#ars-page-conf .content_page').append(ars_block);
                } else {
                    DataJson.forEach(function (item) {
                        if (item.idElement == jsonBlock.idElement) {
                            item.wysiwyg = jsonBlock.wysiwyg;
                            item.cssClass = jsonBlock.cssClass;
                            item.subsiteId = jsonBlock.subsiteId;
                        }
                    });
                    var hiddenInfo = JSON.stringify(DataJson);
                    //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                    //localStorage.setItem("json-ars-data", hiddenInfo);
                    sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                    sessionStorage.setItem("json-ars-data", hiddenInfo);
                    $('#ars-page-conf .content_page .ars_block[data-element-id=' + elementId + '] .content').html(default_text);
                }
            }

            $("#blocks-ars-wysiwyg-conf").foundation("close");
        } else {
            Swal.fire({
                title: window.translation.warning,
                text: window.translation.add_content_atleast_tab,
                icon: "warning",
                closeOnConfirm: true
            });
            return false;
        }

        $('#ars-type-block').prop('selectedIndex', 0);
    });
}
// Method to add temp wysiwyg block in ars page
function add_update_ars_waiver_block() {
    if (!is_backend_page()) return;
    $(document).on('click', '#blocks-ars-waiver-conf .save_waiver', function () {
        //validate if user added any text in textareas
        var validate_text = false;
        var jsonBlock = new Object();
        var WaiverInfo = [];
        var elementId = parseInt($('#blocks-ars-waiver-conf input[name="element_id"]').val());
        var weight = parseInt($('#blocks-ars-waiver-conf input[name="bw-weight"]').val());
        var default_text = '';
        var modal_from = $('#blocks-ars-waiver-conf input[name="modal_from"]').val();
        var cssClass = $('#blocks-ars-waiver-conf input[name="css_class"]').val();
        var subsiteId = 0;
        if ($('#blocks-ars-waiver-conf input[name="subsite_id"]').length > 0) {
            subsiteId = $('#blocks-ars-waiver-conf input[name="subsite_id"]').val();
        } else if ($('#blocks-ars-waiver-conf select[name="subsite_id"]').length > 0) {
            subsiteId = $('#blocks-ars-waiver-conf select[name="subsite_id"]').val();
        }
        var isdeleted = false;
        var salesforceField = $('#blocks-ars-waiver-conf select[name="salesforce_field"]').val();
        var objectToSave = $('#blocks-ars-waiver-conf input[name="object_to_save"]').val();
        $('#blocks-ars-waiver-conf .tab-language').each(function () {
            var languageId = $(this).data('language-id');
            var jsonData = new Object();
            var text = CKEDITOR.instances["ars-waiver-text-" + languageId].getData();
            jsonData.text = text;
            jsonData.language = languageId;
            jsonData.validationMessage = $('#blocks-ars-waiver-conf input[name="ars-validation-message-' + languageId + '"]').val();
            WaiverInfo.push(jsonData);

            //validating if language is default
            if ($(this).hasClass("is-default") && text != '') {
                default_text = text;
            }
            if ($(this).hasClass("is-default")) {
                $(this).click();
            }
        });

        if (default_text == '') {
            $('#block-ars-waiver-form').valid();
            Swal.fire({
                title: window.translation.warning,
                text: "Please Fill the data to default language",
                icon: "warning",
                closeOnConfirm: true
            });
            return false;
        }

        if ($('#block-ars-waiver-form').valid()) {
            var blockId = parseInt($('#blocks-ars-waiver-conf input[name="block_id"]').val());
            //var valjson = localStorage.getItem("json-ars-data");
            var valjson = sessionStorage.getItem("json-ars-data");

            jsonBlock.idElement = elementId;
            jsonBlock.blockId = blockId;
            jsonBlock.type = "waiver";
            jsonBlock.waiver = WaiverInfo;
            jsonBlock.weight = 0;
            jsonBlock.isdeleted = isdeleted;
            jsonBlock.salesforceField = salesforceField;
            jsonBlock.objectToSave = objectToSave;
            jsonBlock.cssClass = cssClass;
            jsonBlock.subsiteId = subsiteId;



            if (valjson == "" || valjson == null) {
                var DataJson = [];
                jsonBlock.idElement = 1;
                DataJson.push(jsonBlock);

                var hiddenInfo = JSON.stringify(DataJson);
                //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                //localStorage.setItem("json-ars-data", hiddenInfo);
                sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                sessionStorage.setItem("json-ars-data", hiddenInfo);

                var ars_block = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.waiver_block + '">' +
                    '<div class="content">' +
                    '<div class="left">' +
                    '<input id="ars-waiver-' + jsonBlock.idElement + '" class="ars-waiver-checkbox" disabled checked type="checkbox" name="ars-waiver-' + jsonBlock.idElement + '" value="">' +
                    '</div>' +
                    '<div class="right">' + default_text + '</div>' +
                    '</div>' +
                    '<div class="options">' +
                    '<a data-modal-from="' + modal_from + '" data-element-reveal="ars-waiver-block" title="Waiver" class="edit-ars-component" data-block-id="0" data-element-id="' + jsonBlock.idElement + '"></a>' +
                    '<a  title="Delete Content" class="delete-ars-component" data-block-id="0"  data-element-id="' + jsonBlock.idElement + '"></a>' +
                    '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                    '</div>' +
                    '</div>';
                $('#ars-page-conf .content_page').append(ars_block);

            } else {
                // validate if user edit item already created
                var DataJson = JSON.parse(valjson);
                if (elementId == 0) {
                    jsonBlock.idElement = 0;

                    DataJson.forEach(function (item) {
                        if (item.idElement > jsonBlock.idElement) {
                            jsonBlock.idElement = item.idElement;
                        }
                    });

                    jsonBlock.idElement = jsonBlock.idElement + 1;
                    jsonBlock.weight = jsonBlock.idElement;
                    DataJson.push(jsonBlock);

                    var hiddenInfo = JSON.stringify(DataJson);
                    //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                    //localStorage.setItem("json-ars-data", hiddenInfo);
                    sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                    sessionStorage.setItem("json-ars-data", hiddenInfo);

                    var ars_block = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.waiver_block + '">' +
                        '<div class="content">' +
                        '<div class="left">' +
                        '<input id="ars-waiver-' + jsonBlock.idElement + '" class="ars-waiver-checkbox" disabled checked type="checkbox" name="ars-waiver-' + jsonBlock.idElement + '" value="">' +
                        '</div>' +
                        '<div class="right">' + default_text + '</div>' +
                        '</div>' +
                        '<div class="options">' +
                        '<a data-modal-from="' + modal_from + '" data-element-reveal="ars-waiver-block" title="Waiver" class="edit-ars-component" data-block-id="0" data-element-id="' + jsonBlock.idElement + '"></a>' +
                        '<a  title="Delete Content" class="delete-ars-component" data-block-id="0"  data-element-id="' + jsonBlock.idElement + '"></a>' +
                        '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                        '</div>' +
                        '</div>';
                    $('#ars-page-conf .content_page').append(ars_block);
                } else {
                    DataJson.forEach(function (item) {
                        if (item.idElement == jsonBlock.idElement) {
                            item.waiver = jsonBlock.waiver;
                            item.salesforceField = jsonBlock.salesforceField;
                            item.objectToSave = objectToSave;
                            item.cssClass = cssClass;
                            item.subsiteId = subsiteId;
                        }
                    });

                    var hiddenInfo = JSON.stringify(DataJson);
                    var htmlWaiver = '<div class="left">' +
                        '<input id="ars-waiver-' + elementId + '" class="ars-waiver-checkbox" disabled checked type="checkbox" name="ars-waiver-' + elementId + '" value="">' +
                        '</div>' +
                        '<div class="right">' + default_text + '</div>';

                    //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                    //localStorage.setItem("json-ars-data", hiddenInfo);
                    sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                    sessionStorage.setItem("json-ars-data", hiddenInfo);
                    $('#ars-page-conf .content_page .ars_block[data-element-id=' + elementId + '] .content').html(htmlWaiver);
                }
            }
            $("#blocks-ars-waiver-conf").foundation("close");
        }

        $('#ars-type-block').prop('selectedIndex', 0);
    });
}
function delete_ars_block() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a.delete-ars-component', function () {
        var elementId = $(this).data('element-id');


        Swal.fire({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_block,
            icon: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false

        }).then(function (result) {
            if (result.isConfirmed) {
                var itemstoDelete = [];
                //var jsonPage = localStorage.getItem("json-ars-data");
                var jsonPage = sessionStorage.getItem("json-ars-data");

                if (jsonPage != '' || jsonPage != null) {
                    var DataJson = JSON.parse(jsonPage);
                    DataJson.forEach(function (item) {
                        if (item.idElement == elementId) {
                            item.isdeleted = true;
                        }
                    });
                    var hiddenInfo = JSON.stringify(DataJson);
                    //localStorage.setItem("json-ars-data-old", localStorage.getItem(pues si, "json-ars-data"));
                    //localStorage.setItem("json-ars-data", hiddenInfo);
                    sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                    sessionStorage.setItem("json-ars-data", hiddenInfo);
                    $('.ars_block[data-element-id="' + elementId + '"]').hide();
                }

                //ars_hide_show_donation_option(true);

                ars_hide_show_form_option();

                Swal.close();

            }
        });

    });
}
function ars_confirm_page_changes() {
    if (!is_backend_page()) return;
    $(document).on('click', 'button.ars-page-close', function () {

        //var jsonPage = localStorage.getItem("json-ars-data");
        var jsonPage = sessionStorage.getItem("json-ars-data");
        //var jsonPageOld = localStorage.getItem("json-ars-data-old");
        var jsonPageOld = sessionStorage.getItem("json-ars-data-old");
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        if (jsonPage != jsonPageOld) {

            Swal.fire({
                title: window.translation.discard,
                text: window.translation.discard_changes,
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: false

            }).then(function (result) {
                if (result.isConfirmed) {
                    if (jsonPage !== '' || jsonPage !== null) {
                        var DataJson = JSON.parse(jsonPage);
                        var DataJsonOld = JSON.parse(jsonPageOld);
                        var deleteAll = (!jsonPageOld) ? true : false;
                        var itemsNotDelete = [];

                        if (DataJsonOld) {
                            DataJsonOld.forEach(function (item) {
                                itemsNotDelete.push(item.blockId);
                            });
                        }

                        DataJson.forEach(function (item) {
                            if (itemsNotDelete.indexOf(item.blockId) === -1 || deleteAll) {
                                item.isdeleted = true;

                                if (item.blockId != 0) {
                                    $.ajax({
                                        method: "POST",
                                        url: urlSite + "admin/DeleteBlock",
                                        data: { blockID: item.blockId.toString() }
                                    }).done(function (data) {
                                        var jsonResult = JSON.parse(data);

                                        if (jsonResult.status.toString() !== "200") {
                                            console.log('Error descarting block in ARS Page');
                                        }
                                    });
                                }
                            }
                        });

                        var hiddenInfo = JSON.stringify(DataJson);
                        //localStorage.setItem("json-ars-data-old", localStorage.getItem("json-ars-data"));
                        //localStorage.setItem("json-ars-data", hiddenInfo);
                        sessionStorage.setItem("json-ars-data-old", sessionStorage.getItem("json-ars-data"));
                        sessionStorage.setItem("json-ars-data", hiddenInfo);
                    }

                    //ars_hide_show_donation_option(false);

                    ars_hide_show_form_option();

                    swal.close();

                    $('#ars-page-conf').foundation('close');

                }
            });

        }
        else {
            $('#ars-page-conf').foundation('close');
        }
    });
}
function backend_basic_search_edit_events() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="basic-search-edit-backend"]', function () {
        var blockID = parseInt($(this).data('block-id'));
        var elementReveal = $(this).data('element-reveal');
        var languageId = parseInt($('#' + elementReveal).data('language-id'));
        var titleMenu = '';
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

        //Apply validator to basic search form
        initiate_jquery_validate_reveal($("#basic-search-management"), 'basic-search-management')

        $('#' + elementReveal).foundation('open');

        $('#' + elementReveal).foundation();

        if (blockID != 0) {
            // show delete link
            $('#' + elementReveal).find('.delete_block').show();
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetBasicSearchInfo",
                data: { blockId: blockID },
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                hideVisibleOptions(jsonResult.uniqueRegion, '#basic-search-advanced-settings');

                $("#basic-search-management .rollback-link").attr("data-block-id", blockID);
                $("#basic-search-management .rollback-link").show();

                if (jsonResult.status === "200") {
                    var visibleToValue = (jsonResult.visibleTo) ? jsonResult.visibleTo : '0';
                    var self = $('#' + elementReveal + ' form');

                    //Reset form
                    $('#' + elementReveal + ' form')[0].reset();

                    //Assing values
                    // 1 - Titles
                    jsonResult.titles.forEach(function (item) {
                        if (item.Key !== null) {
                            var key = item.Key.ID;
                            var value = item.Value;

                            if (parseInt(key) === languageId) {
                                titleMenu = value;
                            }

                            $('input[name="title-' + key + '"]').val(value);
                        }
                    });

                    // 2 - Show title, Show keywords, Show advanced link
                    if (jsonResult.showTitleToUser) {
                        $('#show_title_bsearch').val(jsonResult.showTitleToUser);
                        $('input.show-title-bsearch').prop('checked', true);
                    }
                    else {
                        $('#show_title_bsearch').val(null);
                        $('input.show-title-bsearch').prop('checked', false);
                    }

                    $('input[name="radio-keywords"]').prop('checked', jsonResult.showKeywords);
                    $('input[name="radio-link"]').prop('checked', jsonResult.showAdvancedLink);
                    $('input[name="radio-dates-field"]').prop('checked', jsonResult.showDates);
                    $('input[name="radio-distance-field"]').prop('checked', jsonResult.showDistance);
                    $('input[name="show-code-injection"]').prop('checked', jsonResult.showInvitationCode);
                    $('input[name="location-type-field"]').prop('checked', jsonResult.ShowLocationType);
                    $('select[name="format"]').val(jsonResult.format);

                    if (jsonResult.SubsiteId !== '0' && jsonResult.SubsiteId !== 0) {
                        if (self.find('select[name="subsite_id"]').length > 0) {
                            self.find('select[name="subsite_id"]').val(jsonResult.SubsiteId);
                        } else {
                            self.find('input[name="subsite_id"]').val(jsonResult.SubsiteId);
                        }
                    }


                    // 3 - Advanced settings
                    $('#basic-search-management input[name="css_class"]').val(jsonResult.cssClass);
                    $('input[name="weight-bsearch"]').val(jsonResult.weight);
                    if (jsonResult.enabled) {
                        $('#enabled-bsearch').prop('checked', jsonResult.enabled);
                    }
                    $('input[name="visible_bsearch__to"]#visibility_bsearch_' + visibleToValue).prop('checked', true);
                    if (jsonResult.urls) {
                        $('#exception_url_bsearch').val(jsonResult.urls.join('\n'));
                    }
                    if (jsonResult.visibleTo !== 0) {
                        $('#exception_url_container_bsearch').removeClass('is-hidden');
                    }

                    // 4 - Hidden of block-id and search-id
                    $('#' + elementReveal).find('input[name="block_id"]').val(blockID);
                    // 5- Assigning System Name Block
                    if (jsonResult.systemName != "") {
                        $('input[name="basicsearch_system_name"]').val(jsonResult.systemName);
                    }
                    // 6- Assigning region of the block
                    $('select[name="basicsearch_region"]').val(jsonResult.regionId);

                    // 7- Search Result Blocks
                    $('select[name="searchresultblock"]').empty();
                    $('select[name="searchresultblock"]').append('<option value="">' + window.translation.select_one + '</option>');

                    if (jsonResult.searchresultblocks.length > 0) {
                        jsonResult.searchresultblocks.forEach(function (searchresultblock) {
                            var searchId = searchresultblock.ID;

                            if (searchresultblock.TitlesInfo.length > 0) {
                                var title = searchresultblock.TitlesInfo[0].title;
                                var option = '<option value="' + searchId + '">' + title + '</option>';

                                $('select[name="searchresultblock"]').append(option);
                            }
                        });
                    }

                    if (jsonResult.searchResultId) {
                        $('select[name="searchresultblock"]').val(jsonResult.searchResultId);
                    }

                    // 8 - Labels and Placeholder
                    if (jsonResult.languagesBasicSearch) {
                        if (jsonResult.languagesBasicSearch.length > 0) {
                            jsonResult.languagesBasicSearch.forEach(function (bsLanguage) {
                                var languageId = bsLanguage['LanguageId'];

                                self.find('input[name="labelKeywords-' + languageId + '"]').val(bsLanguage['LabelKeywords']);
                                self.find('input[name="placeholderKeywords-' + languageId + '"]').val(bsLanguage['PlaceholderKeywords']);
                                self.find('input[name="labelCityState-' + languageId + '"]').val(bsLanguage['LabelCityAndState']);
                                self.find('input[name="placeholderCityState-' + languageId + '"]').val(bsLanguage['PlaceholderCityAndState']);
                                self.find('input[name="labelDistance-' + languageId + '"]').val(bsLanguage['LabelDistance']);
                                self.find('input[name="placeholderDistance-' + languageId + '"]').val(bsLanguage['PlaceholderDistance']);
                                self.find('input[name="labelDateStart-' + languageId + '"]').val(bsLanguage['LabelDateStart']);
                                self.find('input[name="placeholderDateStart-' + languageId + '"]').val(bsLanguage['PlaceholderDateStart']);
                                self.find('input[name="labelDateEnd-' + languageId + '"]').val(bsLanguage['LabelDateEnd']);
                                self.find('input[name="placeholderDateEnd-' + languageId + '"]').val(bsLanguage['PlaceholderDateEnd']);
                                self.find('input[name="labelButtonSearch-' + languageId + '"]').val(bsLanguage['LabelButtonSearch']);

                                self.find('input[name="labelInvitation-' + languageId + '"]').val(bsLanguage['LabelInvitationCode']);
                                self.find('input[name="placeholderInvitation-' + languageId + '"]').val(bsLanguage['PlaceholderInvitationCode']);
                                self.find('input[name="labelLocationType-' + languageId + '"]').val(bsLanguage['LabelLocationType']);
                                self.find('input[name="placeholderLocationType-' + languageId + '"]').val(bsLanguage['PlaceholderLocationType']);

                            });
                        }
                    }

                    // 9 - Multiregions field
                    if (jsonResult.regionsMultiple) {
                        //Apply multiselect widget to region select
                        apply_backend_multiselect_group('#' + elementReveal + ' select[name="basicsearch_region_multiple"]', false, jsonResult.regionsMultiple);
                    }
                }
                add_event_for_fields_in_modal('#basic-search-management');
                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });

        } else {
            //Assing values by default
            var formSelector = '#basic-search-management';
            $(formSelector + ' select[name="basicsearch_region"]').val($('select[name="basicsearch_region"] option:first-child').val());
            $(formSelector + ' #enabled-bsearch').prop('checked', true);
            $(formSelector + ' #weight-bsearch').val(0);
            $(formSelector).find('input[name="block_id"]').val('');
            $('select[name="format"]').val(0);
            $('#' + elementReveal).find('input[name="visible_bsearch__to"][value="2"]').prop('checked', true);
            $('#exception_url_container_bsearch').removeClass('is-hidden');
            $('#exception_url_bsearch').val('');
            $("#basic-search-management .rollback-link").hide();
            $('#' + elementReveal).find('.delete_block').hide();
            $(formSelector).find('select[name="subsite_id"]').val('0');
            $(formSelector).find('input[name="subsite_id"]').val('');
            //Manage multiregions field
            apply_backend_multiselect_group('#' + elementReveal + ' select[name="basicsearch_region_multiple"]', false, '');


            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetSearchResultBlocks",
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.length > 0) {
                    $('select[name="searchresultblock"]').empty();
                    $('select[name="searchresultblock"]').append('<option value="">' + window.translation.select_one + '</option>');

                    jsonResult.forEach(function (searchresultblock) {
                        var searchId = searchresultblock.ID;

                        if (searchresultblock.TitlesInfo.length > 0) {
                            var title = searchresultblock.TitlesInfo[0].title;
                            var option = '<option value="' + searchId + '">' + title + '</option>';

                            $('select[name="searchresultblock"]').append(option);
                        }
                    });
                }

                add_event_for_fields_in_modal('#basic-search-management');

                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });


        }

        $('#' + elementReveal).find('input[type="submit"].custom-button').on('click', function () {
            if (!validate_url_fields_backend('#' + elementReveal, 'input[name="visible_bsearch__to"]', 'textarea[name="visibility_bsearch_urls"]'))
                return false;
        });

    });
    $(document).on('change', '#basic-search-management input.show-title-bsearch', function () {
        var checked = $(this).prop('checked');
        $('#basic-search-management input.show-title-bsearch').prop('checked', checked);
        if (checked) {
            $('#show_title_bsearch').val(checked);
        }
        else {
            $('#show_title_bsearch').val(null);
        }
    });
}

function backend_advanced_search_edit_events() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="advanced-search-edit-backend"]', function () {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var languageId = parseInt($('#' + elementReveal).data('language-id'));
        var formSelector = "#advanced-search-management";
        var titleMenu = '';

        $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

        //Apply validator to advance search form
        initiate_jquery_validate_reveal($("#advanced-search-management"), 'advanced-search-management');

        $('#' + elementReveal).foundation('open');

        //Reload foundation elements inside revel
        $('#' + elementReveal).foundation();

        if (blockID != 0) {
            // show delete link
            $('#' + elementReveal).find('.delete_block').show();
            $('#' + elementReveal).find('.rollback-link').show();
            $('#' + elementReveal).find('.rollback-link').attr("data-block-id", blockID);

            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetAdvancedSearchInfo",
                data: { blockId: blockID },
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                hideVisibleOptions(jsonResult.uniqueRegion, '#advanced-search-advanced-settings');


                $('#' + elementReveal).find("#title_tabs li.tabs-title").on("click", function () {
                    $(this).parents(".overview-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
                });



                if (jsonResult.status === "200") {
                    var visibleToValue = (jsonResult.visibleTo) ? jsonResult.visibleTo : '0';

                    //Reset form
                    $('#' + elementReveal + ' form')[0].reset();



                    //Assing values
                    // 1 - Titles
                    jsonResult.titles.forEach(function (item) {
                        if (item.Key !== null) {
                            var key = item.Key.ID;
                            var value = item.Value;

                            if (parseInt(key) === languageId) {
                                titleMenu = value;
                            }

                            $('input[name="title-' + key + '"]').val(value);

                        }
                    });

                    // 2 - Show title, Show keywords, Show advanced link
                    if (jsonResult.showTitleToUser) {
                        $('#show_title_asearch').val(jsonResult.showTitleToUser);
                        $('input.show-title-asearch').prop('checked', true);
                    }
                    else {
                        $('#show_title_asearch').val(null);
                        $('input.show-title-asearch').prop('checked', false);
                    }
                    $('input[name="share-section-1"]').prop('checked', jsonResult.showSaveShareSection);
                    $('input[name="available-section-1"]').prop('checked', jsonResult.showAvailableSection);
                    $('input[name="like-todo-section-1"]').prop('checked', jsonResult.showLikeToDoSection);
                    $('input[name="like-serve-section-1"]').prop('checked', jsonResult.showLikeToServeSection);
                    $('input[name="appropiate-section-1"]').prop('checked', jsonResult.showAppropiateForSection);
                    $('input[name="icode-section-1"]').prop('checked', jsonResult.showInvitationCodeSection);
                    $('input[name="show-keywords-field"]').prop('checked', jsonResult.showKeywordsField);
                    $('input[name="show-schedule-type"]').prop('checked', jsonResult.showScheduleTypeField);
                    $('input[name="show-location-field"]').prop('checked', jsonResult.showLocationNameField);
                    $('input[name="show-distance-field"]').prop('checked', jsonResult.showDistanceField);
                    $('input[name="show-zipcode-field"]').prop('checked', jsonResult.showZipCodeField);
                    $('input[name="show-location-type"]').prop('checked', jsonResult.showLocationType);


                    if (jsonResult.subsiteId !== '0' && jsonResult.subsiteId !== 0) {
                        if ($('#' + elementReveal).find('select[name="subsite_id"]').length > 0) {
                            $('#' + elementReveal).find('select[name="subsite_id"]').val(jsonResult.subsiteId);
                        } else {
                            $('#' + elementReveal).find('input[name="subsite_id"]').val(jsonResult.subsiteId);
                        }
                    }
                    // 3 - Advanced settings
                    $('#advanced-search-management input[name="css_class"]').val(jsonResult.cssClass);
                    $('input[name="weight-asearch"]').val(jsonResult.weight);
                    if (jsonResult.enabled) {
                        $('#enabled-asearch').prop('checked', jsonResult.enabled);
                    }
                    $('input[name="visible_asearch__to"]#visibility_asearch_' + visibleToValue).prop('checked', true);
                    if (jsonResult.urls) {
                        $('#exception_url_asearch').val(jsonResult.urls.join('\n'));
                    }
                    if (jsonResult.visibleTo !== 0) {
                        $('#exception_url_container_asearch').removeClass('is-hidden');
                    }

                    // 4 - Hidden of block-id and search-id
                    $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

                    // 5- Assigning System Name Block
                    if (jsonResult.systemName != "") {
                        $('input[name="advanced_search_system_name"]').val(jsonResult.systemName);
                    }

                    // 6- Assigning Region ID
                    if (jsonResult.regionId != "") {
                        $('select[name="advanced_search_region"]').val(jsonResult.regionId);
                    }

                    jsonResult.introSearch.forEach(function (item) {
                        var fieldCal = "#" + item.FieldName + "-" + item.LanguageID
                        $(fieldCal).val(item.Value);
                    });


                    $('#' + elementReveal).find(".search-ckeditor").each(function () {
                        initialize_ckeditor_ars($(this).attr("id"), "");
                        add_event_for_ckeditor($(this).attr("id"), formSelector);
                    });
                    // 7 - Multiregions field
                    if (jsonResult.regionsMultiple) {
                        //Apply multiselect widget to region select
                        apply_backend_multiselect_group('#' + elementReveal + ' select[name="advanced_search_region_multiple"]', false, jsonResult.regionsMultiple);
                    }
                }

                //Hide processing screen
                add_event_for_fields_in_modal(formSelector);
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }
        else {
            //Initialize fields
            $(formSelector + ' select[name="advanced_search_region"]').val($('select[name="advanced_search_region"] option:first-child').val());
            $(formSelector + ' #enabled-asearch').prop('checked', true);
            $('#exception_url_container_asearch').addClass('is-hidden');
            $('#exception_url_asearch').val('');
            $(formSelector + ' #enabled-asearch').prop('checked', true);
            $('#advanced-search-management input[name="css_class"]').val('');
            $('#' + elementReveal).find('select[name="subsite_id"]').val('0');
            $('#' + elementReveal).find('input[name="subsite_id"]').val('');
            // Hide delete link
            $('#' + elementReveal).find('.delete_block').hide();
            $('#' + elementReveal + ' .rollback-link').hide();

            //Manage multiregions field
            apply_backend_multiselect_group('#' + elementReveal + ' select[name="advanced_search_region_multiple"]', false, '');




            $('#' + elementReveal).find(".search-ckeditor").each(function () {
                initialize_ckeditor_ars($(this).attr("id"), "");
                add_event_for_ckeditor($(this).attr("id"), formSelector);
            });

            add_event_for_fields_in_modal(formSelector);
        }

    });
    $(document).on('change', '#advanced-search-management input.show-title-asearch', function () {
        var checked = $(this).prop('checked');
        $('#advanced-search-management input.show-title-asearch').prop('checked', checked);
        if (checked) {
            $('#show_title_asearch').val(checked);
        }
        else {
            $('#show_title_asearch').val(null);
        }
    });
    $(document).on('change', '#advanced-search-edit-backend input[name="show-zipcode-field"]', function () {
        var checked = $(this).prop('checked');
        var modal = $('#advanced-search-edit-backend');

        if (checked)
            event_toggle_advanced_search_block_modal(modal, !checked);
        else {
            modal.find('input[name="show-location-field"]').prop('checked', true);
            modal.find('input[name="show-distance-field"]').prop('checked', false);
        }
    });
    $(document).on('change', '#advanced-search-edit-backend input[name="show-distance-field"]', function () {
        var checked = $(this).prop('checked');
        var modal = $('#advanced-search-edit-backend');

        if (checked) {
            event_toggle_advanced_search_block_modal(modal, !checked);
            modal.find('input[name="show-zipcode-field"]').prop('checked', true);
        }
    });
    $(document).on('change', '#advanced-search-edit-backend input[name="show-location-field"]', function () {
        var checked = $(this).prop('checked');
        var modal = $('#advanced-search-edit-backend');

        if (checked)
            event_toggle_advanced_search_block_modal(modal, checked);
        else {
            modal.find('input[name="show-zipcode-field"]').prop('checked', true);
            modal.find('input[name="show-distance-field"]').prop('checked', true);

        }
    });
}

function backend_wysiwyg_block() {
    if (!is_backend_page()) return;
    var formSelector = '#block-wysiwyg-form';
    $(document).on('click', 'a[data-element-reveal="blocks-wysiwyg-conf"]', function () {
        var blockID = $(this).attr('data-block-id');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        //  Open Modal
        $('#blocks-wysiwyg-conf').foundation('open');

        //Reload elements inside modal
        $('#blocks-wysiwyg-conf').foundation();

        initiate_jquery_validate_reveal($('#block-wysiwyg-form'), 'block-wysiwyg-form');
        if (blockID != 0) {
            // Show delete link
            $('#blocks-wysiwyg-conf').find('.delete_block').show();
            $("#blocks-wysiwyg-conf .rollback-link").show();
            $("#blocks-wysiwyg-conf .rollback-link").attr("data-block-id", blockID);

            $.ajax({
                method: "GET",
                url: urlSite + "admin/GetWYSIWYGBlock?blockID=" + blockID,
                beforeSend: function () {
                    $('#blocks-wysiwyg-conf').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                hideVisibleOptions(jsonResult.uniqueRegion, '#block-advanced-settings');


                //Initialize wysiwyg with languages of site based in ids of tabs
                $('#blocks-wysiwyg-conf .tab-language').each(function () {
                    var languageId = $(this).data('language-id');
                    initialize_ckeditor_ars('wysiwyg-', languageId);
                    $('#wysiwyg-' + languageId).text('');
                    add_event_for_ckeditor('wysiwyg-' + languageId, formSelector);
                });

                jsonResult.items.forEach(function (item) {
                    $(formSelector + ' input[name="title-' + item.LanguageID + '"]').val(item.Title);
                    //$('#wysiwyg-' + item.LanguageID).text(item.Body);
                    let content = addNbspToEmptyIcons(item.Body);
                    $(formSelector + ' #wysiwyg-' + item.LanguageID).val(content);

                    $(formSelector + ' input[name="wysiwyg_system_name"]').val(item.SystemName);
                    $(formSelector + ' select[name="wysiwyg_region"]').val(item.regionId);
                    $(formSelector + ' input[name="css_class"]').val(item.CssClass);
                    $(formSelector + ' input[name="show_title"]').prop('checked', item.ShowTitle);

                    if (item.ShowTitle) {
                        $(formSelector + ' input[name="show_title"]').val(item.ShowTitle);
                        $(formSelector + ' input.wysiwyg-show-title').prop('checked', true);
                    }
                    else {
                        $(formSelector + ' input[name="show_title"]').val(null);
                        $(formSelector + ' input.wysiwyg-show-title').prop('checked', false);
                    }

                    $(formSelector + ' input[name="enabled"]').prop('checked', item.Enabled);
                    $(formSelector + ' input[name="weight"]').val(item.Weight);
                    $(formSelector + ' #visibility_wysiwyg_' + item.Visibility).prop('checked', true);
                    $(formSelector + ' textarea[name="visibility_urls"]').val(item.VisibilityUrls);
                    $(formSelector + ' input[name="block_id"]').val(item.BlockID);
                    $(formSelector + ' input[name="css_class"]').val(item.CssClass);

                    if (item.SubsiteId !== 0 && item.SubsiteId !== '0') {
                        if ($(formSelector + ' select[name="subsite_id"]').length > 0) {
                            $(formSelector + ' select[name="subsite_id"]').val(item.SubsiteId);
                        } else {
                            $(formSelector + ' input[name="subsite_id"]').val(item.SubsiteId);
                        }
                    }

                    if (item.Visibility == 1 || item.Visibility == 2) {
                        $('#wysiwyg_exception_url_container').removeClass('is-hidden');
                    } else {
                        $('#wysiwyg_exception_url_container').addClass('is-hidden');
                    }
                });

                //Manage multiregions
                if (jsonResult.regionsMultiple) {
                    //Apply multiselect widget to region select
                    apply_backend_multiselect_group('#blocks-wysiwyg-conf select[name="wysiwyg_region_multiple"]', false, jsonResult.regionsMultiple);
                }

                //Setting no pending changes
                add_event_for_fields_in_modal(formSelector);

                //Hide processing screen
                $('#blocks-wysiwyg-conf').find('.processing_screen').hide();
                validate_html_editor_save();
            });
        }
        else {
            $("#blocks-wysiwyg-conf .rollback-link").hide();
            //Initialize wysiwyg with languages of site based in ids of tabs
            $('#blocks-wysiwyg-conf .tab-language').each(function () {
                var languageId = $(this).data('language-id');


                initialize_ckeditor_ars('wysiwyg-', languageId);
                $('#wysiwyg-' + languageId).text('');
                add_event_for_ckeditor('wysiwyg-' + languageId, formSelector);
            });

            //Initialize fields
            $(formSelector + ' select[name="wysiwyg_region"]').val($('select[name="wysiwyg_region"] option:first-child').val());
            $(formSelector + ' #block-enabled').prop('checked', true);
            $('#wysiwyg_exception_url_container').removeClass('is-hidden');
            $(formSelector).find('input[name="visible_to"][value="2"]').prop('checked', true);
            $(formSelector + ' textarea[name="visibility_urls"]').val('');
            $(formSelector + ' #block-enabled').prop('checked', true);
            $(formSelector).find('input[name="block_id"]').val('');
            $(formSelector + ' input[name="css_class"]').val('');
            $(formSelector + ' select[name="subsite_id"]').val('0');
            $(formSelector + ' input[name="subsite_id"]').val('');
            $(formSelector + ' input[name="show_title"]').val(null);
            $(formSelector + ' input.wysiwyg-show-title').prop('checked', false);
            //Manage multiregions field
            apply_backend_multiselect_group('#block-wysiwyg-form select[name="wysiwyg_region_multiple"]', false, '');

            // Delete link
            $('#blocks-wysiwyg-conf').find('.delete_block').hide();


            add_event_for_fields_in_modal(formSelector);
            validate_html_editor_save();
        }

        $(formSelector).find('input[type="submit"].custom-button').on('click', function () {
            if (!validate_url_fields_backend(formSelector, 'input[name="visible_to"]', 'textarea[name="visibility_urls"]'))
                return false;
        });
    });

    $(document).on('change', formSelector +' input.wysiwyg-show-title', function () {
        var checked = $(this).prop('checked');
        $(formSelector + ' input.wysiwyg-show-title').prop('checked', checked);
        if (checked) {
            $(formSelector + ' input[name="show_title"]').val(checked);
        }
        else {
            $(formSelector + ' input[name="show_title"]').val(null);
        }
    });
}

function backend_invitation_code() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="invitation-code-edit-backend"]', function () {
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var languageId = parseInt($('#' + elementReveal).data('language-id'));
        var titleMenu = '';
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

        // Applying validation to invitation code block
        initiate_jquery_validate_reveal($('#invitation-code-management'), 'invitation-code-management');

        $('#' + elementReveal).foundation('open');

        //Reload components inside of modal
        $('#' + elementReveal).foundation();

        if (blockID != 0) {
            // show delete link
            $('#' + elementReveal).find('.delete_block').show();
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetInvitationCodeInfo",
                data: { blockId: blockID },
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status === "200") {
                    var visibleToValue = (jsonResult.visibleTo) ? jsonResult.visibleTo : '0';
                    //Reset form
                    $('#' + elementReveal + ' form')[0].reset();

                    //Assigning values
                    //1- Titles
                    jsonResult.titles.forEach(function (item) {
                        if (item.Key !== null) {
                            var key = item.Key.ID;
                            var value = item.Value;
                            if (parseInt(key) == languageId) {
                                titleMenu = value;
                            }
                            $('input[name="title-' + key + '"]').val(value);
                        }
                    });

                    //2- Show title, Show keywords, Show advanced link
                    if (jsonResult.showTitleToUser) {
                        $('#show_title_invitation_code').prop('checked', jsonResult.showTitleToUser);
                    }

                    //3- Advanced Settings
                    hideVisibleOptions(jsonResult.uniqueRegion, '#invitation-code-advanced-settings');
                    $('input[name="css_class_invitation_code"]').val(jsonResult.cssClass);
                    $('input[name="weight-invitation-code"]').val(jsonResult.weight);
                    if (jsonResult.enabled) {
                        $('#enabled-invitation-code').prop('checked', jsonResult.enabled);
                    }
                    $('input[name="visible_invitation_code__to"]#visibility_invitation_code_' + visibleToValue).prop('checked', true);
                    if (jsonResult.urls) {
                        $('#exception_url_invitation_code').val(jsonResult.urls.join('\n'));
                    }
                    if (jsonResult.visibleTo !== 0) {
                        $('#exception_url_container_invitation_code').removeClass('is-hidden');
                    }

                    //4- Hidden of block-id and search-id
                    $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

                    //5 - Assigning system name of the block.
                    if (jsonResult.systemName !== "") {
                        $('input[name="invitation_system_name"]').val(jsonResult.systemName);
                    }

                    //6 - Assigning region to block
                    if (jsonResult.regionId !== "") {
                        $('select[name="invitation_region"]').val(jsonResult.regionId);
                    }

                    //7 - Multiregions field
                    if (jsonResult.regionsMultiple) {
                        //Apply multiselect widget to region select
                        apply_backend_multiselect_group('#' + elementReveal + ' select[name="invitation_region_multiple"]', false, jsonResult.regionsMultiple);
                    }
                }

                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }
        else {
            //Assing values by default
            var formSelector = '#invitation-code-management';
            $(formSelector + ' select[name="invitation_region"]').val($('select[name="invitation_region"] option:first-child').val());
            $(formSelector + ' #enabled-invitation-code').prop('checked', true);
            $('#exception_url_container_invitation_code').addClass('is-hidden');
            $('#exception_url_invitation_code').val('');

            //Hide delete link
            $('#' + elementReveal).find('.delete_block').hide();

            //Manage multiregions field
            apply_backend_multiselect_group(formSelector + ' select[name="invitation_region_multiple"]', false, '');

        }

    });
}

function backend_ga_analytics_settings() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="ga-code-edit-backend"]', function () {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var siteID = $(this).data('site-id');
        var elementReveal = $(this).data('element-reveal');
        var modal = $('#' + elementReveal);
        $('#' + elementReveal).find('input[name=site_id]').val(siteID);
        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();

        $.ajax({
            method: "GET",
            url: urlSite + 'admin/GetGACode/' + siteID,
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            if (jsonResult.status === "200") {
                //Populate hidden with record of GACode
                $('#' + elementReveal).find('input[name=ga_code_id]').val(jsonResult.setting.ID);
                //$('#' + elementReveal).find('select#state-format-dropdown').val(jsonResult.state_format);

                //Populate Google Analitics Code
                if (jsonResult.setting.ID !== 0) {
                    if (jsonResult.setting.GACode !== null && jsonResult.setting.GACode !== "") {
                        $('#' + elementReveal).find('input[name="ga-code-text"]').val(jsonResult.setting.GACode);
                    }

                    if (jsonResult.setting.GTMCode !== null && jsonResult.setting.GTMCode !== '') {
                        $('#' + elementReveal).find('input[name="gtm-code-text"]').val(jsonResult.setting.GTMCode);
                    }
                    if (jsonResult.setting.FacebookDomainVerification !== null && jsonResult.setting.FacebookDomainVerification !== '') {
                        $('#' + elementReveal).find('input[name="facebook_domain_verification"]').val(jsonResult.setting.FacebookDomainVerification);
                    }
                    if (jsonResult.setting.OpenaiApiKey !== null && jsonResult.setting.OpenaiApiKey !== '') {
                        $('#' + elementReveal).find('input[name="openai_api_key"]').val(jsonResult.setting.OpenaiApiKey);
                    }
                    if (jsonResult.setting.AzureOpenaiEndpoint !== null && jsonResult.setting.AzureOpenaiEndpoint !== '') {
                        $('#' + elementReveal).find('input[name="azure_openai_endpoint"]').val(jsonResult.setting.AzureOpenaiEndpoint);
                    }
                    if (jsonResult.setting.AzureOpenaiApiKey !== null && jsonResult.setting.AzureOpenaiApiKey !== '') {
                        $('#' + elementReveal).find('input[name="azure_openai_api_key"]').val(jsonResult.setting.AzureOpenaiApiKey);
                    }
                    if (jsonResult.setting.AzureOpenaiModel !== null && jsonResult.setting.AzureOpenaiModel !== '') {
                        $('#' + elementReveal).find('select[name="azure_openai_model"]').val(jsonResult.setting.AzureOpenaiModel);
                    }
                }

                if (jsonResult.setting.ActiveGTM === null || jsonResult.setting.ActiveGTM === undefined || jsonResult.setting.ActiveGTM === false) {
                    $('#' + elementReveal).find('input[name="enable-google-tag-manager"]').prop('checked', false);
                    $('#' + elementReveal).find('.google-analytics-section').removeClass('hide');
                    $('#' + elementReveal).find('.google-tag-manager-section').addClass('hide');
                } else {
                    $('#' + elementReveal).find('input[name="enable-google-tag-manager"]').prop('checked', true);
                    $('#' + elementReveal).find('.google-analytics-section').addClass('hide');
                    $('#' + elementReveal).find('.google-tag-manager-section').removeClass('hide');

                }


                $('#' + elementReveal).find('input[name="enable-google-tag-manager"]').on('change', function () {
                    if ($(this).is(':checked')) {
                        $('#' + elementReveal).find('.google-analytics-section').addClass('hide');
                        $('#' + elementReveal).find('.google-tag-manager-section').removeClass('hide');
                    } else {
                        $('#' + elementReveal).find('.google-analytics-section').removeClass('hide');
                        $('#' + elementReveal).find('.google-tag-manager-section').addClass('hide');

                    }
                });

                //Populate Default zip code
                if (jsonResult.setting.DefaultSiteZipCode != null) {
                    if (jsonResult.setting.DefaultSiteZipCode !== null && jsonResult.setting.DefaultSiteZipCode !== "") {
                        $('#' + elementReveal).find('input[name=default_zip_code]').val(jsonResult.setting.DefaultSiteZipCode);
                    }
                }

                if (jsonResult.enableMasterOrder !== null && jsonResult.enableMasterOrder !== undefined) {
                    $('#' + elementReveal).find('input[name="enable-master-order"]').prop('checked', jsonResult.enableMasterOrder);
                }

                if (jsonResult.csvExportSeparator !== null && jsonResult.csvExportSeparator !== undefined) {
                    $('#' + elementReveal).find('select[name="csv-export-separator"]').val(jsonResult.csvExportSeparator);
                } 

                //Populate Solr query
                if (jsonResult.solrQuery !== null && jsonResult.solrQuery !== undefined) {
                    $('#' + elementReveal).find('textarea[name=solr_query]').val(jsonResult.solrQuery);
                }

                //Populate meta tags - By Language
                if (jsonResult['siteWideSettings']) {

                    for (var i in jsonResult['siteWideSettings']) {
                        var languageId = jsonResult['siteWideSettings'][i]['Language'];
                        var metaDescription = jsonResult['siteWideSettings'][i]['MetaDescription'];
                        var metaKeywords = jsonResult['siteWideSettings'][i]['MetaKeywords'];
                        var ogUrl = jsonResult['siteWideSettings'][i]['OgUrl'];
                        var ogTitle = jsonResult['siteWideSettings'][i]['OgTitle'];
                        var ogDescription = jsonResult['siteWideSettings'][i]['OgDescription'];
                        var ogSiteName = jsonResult['siteWideSettings'][i]['OgSiteName'];
                        var ogImage = jsonResult['siteWideSettings'][i]['OgImage'];
                        var metaGoogleKey = jsonResult['siteWideSettings'][i]['MetaGoogleKey'];
                        var metaGoogleValue = jsonResult['siteWideSettings'][i]['MetaGoogleValue'];
                        var customMetatag = jsonResult['siteWideSettings'][i]['CustomMeta'];

                        if (ogUrl) {
                            load_meta_tags_page(languageId, 'url', ogUrl, modal);
                        }
                        if (ogTitle) {
                            load_meta_tags_page(languageId, 'title', ogTitle, modal);
                        }
                        if (ogDescription) {
                            load_meta_tags_page(languageId, 'description', ogDescription, modal);
                        }
                        if (ogSiteName) {
                            load_meta_tags_page(languageId, 'site_name', ogSiteName, modal);
                        }
                        if (ogImage) {
                            load_meta_tags_page(languageId, 'image', ogImage, modal);
                        }
                        if (metaKeywords) {
                            load_meta_tags_page(languageId, 'keywords', metaKeywords, modal);
                        }
                        if (metaDescription) {
                            load_meta_tags_page(languageId, 'meta_description', metaDescription, modal);
                        }
                        if (metaGoogleKey) {
                            load_meta_tags_page(languageId, 'meta_key_google', metaGoogleKey, modal);
                        }
                        if (metaGoogleValue) {
                            load_meta_tags_page(languageId, 'meta_value_google', metaGoogleValue, modal);
                        }
                        if (customMetatag !== null && customMetatag !== undefined && customMetatag !== '') {
                            var listCustomMeta = JSON.parse(customMetatag);
                            listCustomMeta.forEach(function (value, index) {
                                load_meta_tags_page_custom(languageId, "meta_custom", value, modal);
                            });
                        }

                    }
                }
            }

            //Hide processing screen
            $('#' + elementReveal).find('.processing_screen').hide();
            $('#' + elementReveal).find('input[name="enable-master-order"]').on('change', function () {
                if ($(this).is(':checked')) {
                    $('#' + elementReveal).find('.execute-after-save-section').removeClass('hide');
                } else {
                    $('#' + elementReveal).find('.execute-after-save-section').addClass('hide');
                }
            });

        });
    });

    $(document).on('click', '#ga-code-edit-backend form button.submit-button', function () {
        var modal = $(this).parents('.reveal').first();
        var form = modal.find('form').first();
        var formData = form.serializeObject();
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $.ajax({
            method: "POST",
            url: urlSite + "admin/UpdateGACode",
            data: formData,
            beforeSend: function () {
                modal.find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (jsonResult.status.toString() === "ok") {
                Swal.fire({
                    title: window.translation.success,
                    icon: "success",
                    text: jsonResult.message,
                    confirmButtonText: "Ok",
                });

                modal.foundation('close');
                location.reload();
            }
            else if (jsonResult.status.toString() === "error") {
                Swal.fire({
                    title: window.translation.error,
                    icon: "error",
                    text: jsonResult.message,
                    confirmButtonText: "Ok",
                });
                console.log('Error in submit of GACodeForm', jsonResult.additional_error);
            }

            modal.find('.processing_screen').hide();
        });

        return false;
    });
}

function backend_rss_block_edit_events() {
    if (!is_backend_page()) return;

    var formSelector = '#rss-block-management';
    $(document).on('click', 'a[data-element-reveal="rss-block-edit-backend"]', function () {
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var languageId = parseInt($('#' + elementReveal).data('language-id'));
        var titleMenu = '';
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

        // Applying validate to rss form. 
        initiate_jquery_validate_reveal($("#rss-block-management"), 'rss-block-management');

        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        if (blockID != 0) {
            // show delete block link
            $('#' + elementReveal).find('.delete_block').show();
            $('#' + elementReveal).find('.rollback-link').show();
            $('#' + elementReveal).find('.rollback-link').attr("data-block-id", blockID);

            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetRSSBlockInfo",
                data: { blockId: blockID },
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                hideVisibleOptions(jsonResult.uniqueRegion, '#rss-block-advanced-settings');

                if (jsonResult.status === "200") {
                    var visibleToValue = (jsonResult.visibleTo) ? jsonResult.visibleTo : '0';

                    //Reset form
                    $('#' + elementReveal + ' form')[0].reset();

                    //Assing values
                    // 1 - Titles
                    jsonResult.titles.forEach(function (item) {
                        if (item.Key !== null) {
                            var key = item.Key.ID;
                            var value = item.Value;

                            if (parseInt(key) === languageId) {
                                titleMenu = value;
                            }

                            $('input[name="title-' + key + '"]').val(value);
                        }
                    });

                    // 2- Feeds URLs
                    jsonResult.feedUrls.forEach(function (item) {
                        if (item.Key !== null) {
                            var key = item.Key.ID;
                            var value = item.Value;
                            var feedURL = '';

                            if (parseInt(key) === languageId) {
                                feedURL = value;
                            }

                            $('input[name="feed_url_' + key + '"]').val(value);
                        }
                    });
                    //Feeds Read More URLs
                    jsonResult.feedReadMoreUrls.forEach(function (item) {
                        if (item.Key !== null) {
                            var key = item.Key.ID;
                            var value = item.Value;
                            var feedReadMoreURL = '';
                            if (parseInt(key) === languageId) {
                                feedReadMoreURL = value;
                            }
                            $('input[name="feed_read_more_url_' + key + '"]').val(value);
                        }
                    });
                    

                    // 3 - Number of Posts
                    if (jsonResult.numberOfPosts) {
                        $('input[name="feed_number_post"]').val(jsonResult.numberOfPosts);
                    }

                    if (jsonResult.subsiteId !== '0' && jsonResult.subsiteId !== 0) {
                        if ($('#' + elementReveal).find('select[name="subsite_id"]').length > 0) {
                            $('#' + elementReveal).find('select[name="subsite_id"]').val(jsonResult.subsiteId);
                        } else {
                            $('#' + elementReveal).find('input[name="subsite_id"]').val(jsonResult.subsiteId);
                        }
                    }

                    // 4 - Show title, Show keywords, Show advanced link
                    if (jsonResult.showTitleToUser) {
                        $('#show_title_rss').prop('checked', jsonResult.showTitleToUser);
                    }
                    if (jsonResult.showTitleToUser) {
                        $('#show_title_rss').val(jsonResult.showTitleToUser);
                        $('#' + elementReveal).find('input.show-title-rss').prop('checked', true);
                    }
                    else {
                        $('#show_title_rss').val(null);
                        $('#' + elementReveal).find('input.show-title-rss').prop('checked', false);
                    }

                    // 5 - Advanced settings
                    $('input[name="css_class_rss"]').val(jsonResult.cssClass);
                    $('input[name="weight-rss"]').val(jsonResult.weight);
                    $('#' + elementReveal).find('input[name="css_class"]').val(jsonResult.cssClass);

                    if (jsonResult.enabled) {
                        $('#enabled-rss').prop('checked', jsonResult.enabled);
                    }
                    $('input[name="visible_rss__to"]#visibility_rss_' + visibleToValue).prop('checked', true);
                    if (jsonResult.urls) {
                        $('#exception_url_rss').val(jsonResult.urls.join('\n'));
                    }
                    if (jsonResult.visibleTo !== 0) {
                        $('#exception_url_container_rss').removeClass('is-hidden');
                    }

                    // 6 - Hidden of block-id and search-id
                    $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

                    if (jsonResult.systemName !== "") {
                        $('input[name="rss_system_name"]').val(jsonResult.systemName);
                    }
                    if (jsonResult.regionId !== "") {
                        $('select[name="rss_region"]').val(jsonResult.regionId);
                    }

                    // 7 - Multi-regions
                    if (jsonResult.regionsMultiple) {
                        //Apply multiselect widget to region select
                        apply_backend_multiselect_group('#' + elementReveal + ' select[name="rss_region_multiple"]', false, jsonResult.regionsMultiple);
                    }


                }
                add_event_for_fields_in_modal(formSelector);
                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }
        else {
            //Assing values by default

            $('#' + elementReveal).find('input[name="css_class"]').val('');
            $(formSelector + ' select[name="rss_region"]').val($('select[name="rss_region"] option:first-child').val());
            $(formSelector + ' #enabled-rss').prop('checked', true);
            $('#exception_url_container_rss').removeClass('is-hidden');
            $('#' + elementReveal).find('input[name="visible_rss__to"][value="2"]').prop('checked', true);
            $('#exception_url_rss').val('');
            $('#' + elementReveal).find('select[name="subsite_id"]').val('0');
            $('#' + elementReveal).find('input[name="subsite_id"]').val('');
            // hide delete block link
            $('#' + elementReveal).find('.delete_block').hide();
            $('#' + elementReveal + ' .rollback-link').hide();

            //Manage multiregions field
            apply_backend_multiselect_group('#' + elementReveal + ' select[name="rss_region_multiple"]', false, '');


            add_event_for_fields_in_modal(formSelector);

        }

        $('#' + elementReveal).find('input[type="submit"].custom-button').on('click', function () {
            if (!validate_url_fields_backend('#' + elementReveal, 'input[name="visible_rss__to"]', 'textarea[name="visibility_rss_urls"]'))
                return false;
        });


    });

    $(document).on('change', '#rss-block-edit-backend input.show-title-rss', function () {
        var checked = $(this).prop('checked');
        $('#rss-block-edit-backend input.show-title-rss').prop('checked', checked);
        if (checked) {
            $('#rss-block-edit-backend input[name="show_title_rss"]').val(checked);
        }
        else {
            $('#rss-block-edit-backend input[name="show_title_rss"]').val(null);
        }
    });
}

function filterFirstByLanguage(images) {
    let seenLanguages = new Set();
    return images.filter(image => {
        if (!seenLanguages.has(image.LanguageID)) {
            seenLanguages.add(image.LanguageID);
            return true;
        }
        return false;
    });
}

function backend_image_block() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="blocks-image-configuration"]', function () {
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var formSelector = '#block-image-form';
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();
        window.scroll_current_pos_y = $(window).scrollTop();

        // Apply vlidate to image block
        initiate_jquery_validate_reveal($("#block-image-form"), 'block-image-form')
        if (blockID != 0) {
            // show delete block link
            $('#' + elementReveal).find('.delete_block').show();
            $("#blocks-image-configuration .rollback-link").show();
            $("#blocks-image-configuration .rollback-link").attr("data-block-id", blockID);

            $.ajax({
                method: "GET",
                url: urlSite + "admin/GetImagesBlock?blockID=" + blockID,
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                hideVisibleOptions(jsonResult.uniqueRegion, '#blocks-image-configuration');

                //Populate block info
                if (jsonResult.blockInfo) {
                    $(formSelector + ' input[name="image_block_id"]').val(jsonResult.blockInfo.ID);
                    $(formSelector + ' input[name="image_css_class"]').val(jsonResult.blockInfo.CssClass);
                    $(formSelector + ' input[name="sort_weight"]').val(jsonResult.blockInfo.Weight);
                    if (jsonResult.blockInfo.ShowTitle) {
                        $(formSelector + ' #image_show_title').val(jsonResult.showTitleToUser);
                        $(formSelector + ' .image-show-title').prop('checked', true);
                    }
                    else {
                        $(formSelector + ' #image_show_title').val(null);
                        $(formSelector + ' .image-show-title').prop('checked', false);
                    }

                    $(formSelector + ' #image-enabled').prop('checked', jsonResult.blockInfo.Enabled);
                    $(formSelector + ' input[name="image_visible_to"]').prop('checked', false);
                    $(formSelector + ' #image_visibility_' + jsonResult.blockInfo.Visibility).prop('checked', true);
                    $(formSelector + ' #image_exception_urls').val(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' #image_exception_urls').text(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' input[name="image_system_name"]').val(jsonResult.blockInfo.SystemName);
                    $(formSelector + ' input[name="css_class"]').val(jsonResult.blockInfo.CssClass);
                    $(formSelector + ' select[name="image_region"]').val(jsonResult.blockInfo.regionId);
                    if (jsonResult.blockInfo.Visibility == 1 || jsonResult.blockInfo.Visibility == 2) {
                        $(formSelector + " #image_exception_url_container").removeClass("is-hidden");
                    } else {
                        $(formSelector + " #image_exception_url_container").addClass("is-hidden");
                    }

                    if (jsonResult.blockInfo.SubsiteId !== '0' && jsonResult.blockInfo.SubsiteId !== 0) {
                        if ($(formSelector).find('select[name="subsite_id"]').length > 0) {
                            $(formSelector).find('select[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        } else {
                            $(formSelector).find('input[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        }
                    }
                }

                //Populate titles
                if (jsonResult.titles) {
                    jsonResult.titles.forEach(function (item) {
                        $(formSelector + ' input[name="title-' + item.languageID + '"]').val(item.title);
                    });
                }

                //Reinitialize ezdz widget
                initialize_block_image();

                //Populate images
                if (jsonResult.images) {
                    const filteredImages = filterFirstByLanguage(jsonResult.images);
                    filteredImages.forEach(function (item) {
                        $(formSelector + ' input[name="image_block_id_' + item.LanguageID + '"]').val(item.BlockID);
                        $(formSelector + ' input[name="image_id_' + item.LanguageID + '"]').val(item.ImageID);
                        $(formSelector + ' input[name="title_image_' + item.LanguageID + '"]').val(item.ImageTitle);
                        $(formSelector + ' input[name="alt_image_' + item.LanguageID + '"]').val(item.ImageAlt);
                        $(formSelector + ' input[name="html_title_image_' + item.LanguageID + '"]').val(item.HtmlTitleImage);
                        $(formSelector + ' input[name="link_image_' + item.LanguageID + '"]').val(item.RedirectUrl);
                        $(formSelector + ' input[name="image_width_' + item.LanguageID + '"]').val(item.Width);
                        $(formSelector + ' input[name="image_height_' + item.LanguageID + '"]').val(item.Height);
                        $(formSelector + ' select[name="link_type_' + item.LanguageID + '"]').val(item.LinkType);
                        $(formSelector + ' input[name="link_button_text_' + item.LanguageID + '"]').val(item.ButtonTitle);
                        $(formSelector + ' textarea[name="summary_' + item.LanguageID + '"]').val(item.Summary);
                        $(formSelector + ' input[name="title_color_' + item.LanguageID + '"]').val(item.ColorTitle);
                        $(formSelector + ' input[name="title_size_' + item.LanguageID + '"]').val(item.SizeTitle);


                        if (item.LinkType == 0) {
                            $(formSelector + ' input[name="link_image_' + item.LanguageID + '"]').parent().hide();
                            $(formSelector + ' #link-section-fields-' + item.LanguageID).hide();
                            $(formSelector + ' #button-section-fields-' + item.LanguageID).hide();
                        } else if (item.LinkType == 1) {
                            $(formSelector + ' input[name="link_image_' + item.LanguageID + '"]').parent().show();
                            $(formSelector + ' #link-section-fields-' + item.LanguageID).show();
                            $(formSelector + ' #button-section-fields-' + item.LanguageID).hide();
                        } else if (item.LinkType == 2) {
                            $(formSelector + ' input[name="link_image_' + item.LanguageID + '"]').parent().show();
                            $(formSelector + ' #link-section-fields-' + item.LanguageID).show();
                            $(formSelector + ' #button-section-fields-' + item.LanguageID).show();
                        }

                        var selector = $(formSelector + ' input[name="image_' + item.LanguageID + '"]');
                        var id = selector.attr('id');
                        var parent = selector.parent(".ezdz-dropzone");
                        var delete_image_link = '<a data-image="' + id + '" class="delete_image">' + window.translation.delete + '</a>';

                        //Update delete hidden to false
                        parent.parent().find('input[name="' + id + '_deleted"]').val('false');

                        if (item.PercentageSize == true) {
                            $(formSelector + ' .type_size_' + item.LanguageID).text("%");
                            $(formSelector + ' input[name="image_percentage_size_' + item.LanguageID + '"]').prop('checked', true);
                        } else {
                            $(formSelector + ' .type_size_' + item.LanguageID).text("px");
                            $(formSelector + ' input[name="image_percentage_size_' + item.LanguageID + '"]').prop('checked', false);
                        }

                        initialize_ckeditor_ars('summary_' + item.LanguageID, "");
                        add_event_for_ckeditor('summary_' + item.LanguageID, '#block-image-form');

                        if (item.ImageUrl == "") {
                            $(formSelector + ' input[name="image_url_' + item.LanguageID + '"]').val(false);
                        } else {
                            // Put link below image preview.
                            if (parent.parent().find('.delete_image').length == 0) {
                                parent.parent().find(".remove_image").append(delete_image_link);
                                parent.parent().find(".remove_image").removeClass("is-hidden");
                            }

                            setTimeout(function () {
                                $(formSelector + ' input[name="image_' + item.LanguageID + '"]').ezdz('preview', item.ImageUrl, function () {
                                    var edit_image_link = '<a data-image="' + id + '" class="edit_image edit_image_' + id + '">Edit</a>';
                                    // Put link below image preview.
                                    // Adding Edit link to allow Crop and resize options.
                                    //validate when user only close crop 

                                    if (parent.find("img").length > 0) {

                                        var tabSelector = "#image-block-" + item.LanguageID + " .ezdz-dropzone img";
                                        if ($(tabSelector).length > 0) {
                                            $(tabSelector).attr("id", "image-block-preview-lang-" + item.LanguageID);
                                        }
                                        parent.parent().find('.edit_image_' + id).remove();
                                        parent.parent().find(".remove_image").append(edit_image_link);
                                        $('.edit_image_' + id).on('click', function () {
                                            apply_cropper_event(id, parent.find("img").clone());
                                            $("#crop-image").foundation("open");
                                        });
                                    }

                                });


                            }, 100);

                            $(formSelector + ' input[name="image_url_' + item.LanguageID + '"]').val(false);
                        }
                    });

                    $("#" + elementReveal).find('input.color-picker-box-field').each(function () {
                        createColorPickerField($(this), null);
                    });
                }

                //Manage multiregions
                if (jsonResult.regionsMultiple) {
                    //Apply multiselect widget to region select
                    apply_backend_multiselect_group(formSelector + ' select[name="image_region_multiple"]', false, jsonResult.regionsMultiple);
                }

                add_event_for_fields_in_modal(formSelector);
                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }
        else {
            //Assing values by default
            $(formSelector + ' select[name="image_system_name"]').val($('select[name="image_system_name"] option:first-child').val());
            $(formSelector).find('input[name="image_block_id"]').val('');
            $(formSelector + ' input[name="image_css_class"]').val('');
            $(formSelector + ' input[name="sort_weight"]').val(0);
            $(formSelector + ' #image_show_title').prop('checked', false);
            $(formSelector + ' #image-enabled').prop('checked', true);

            $(formSelector + ' #image_exception_urls').val('');
            $(formSelector + ' input[name="image_system_name"]').val('');
            $(formSelector + ' input[name="css_class"]').val('');
            $(formSelector).find('input[name="image_visible_to"][value="2"]').prop('checked', true);
            $("#blocks-image-configuration .rollback-link").hide();

            //Reinitialize ezdz widget
            initialize_block_image();

            //Remove previous link "Delete and Edit"
            $('.remove_image').empty();

            // Hide delete block link
            $('#' + elementReveal).find('.delete_block').hide();

            //Initialize link type and fields associated
            $(formSelector + ' .link-type-field-form').each(function () {
                var langID = $(this).attr('data-language-id');

                $(formSelector + ' #link_type_' + langID).val(0);
                $(formSelector + ' input[name="link_image_' + langID + '"]').parent().hide();
                $(formSelector + ' #link-section-fields-' + langID).hide();
                $(formSelector + ' #button-section-fields-' + langID).hide();
                initialize_ckeditor_ars('summary_' + langID, "");
                add_event_for_ckeditor('summary_' + langID, '#block-image-form');
            });

            $('#image_exception_url_container').removeClass('is-hidden');
            $(formSelector + ' textarea[name="image_exception_urls"]').val('');
            $("#" + elementReveal).find('input.color-picker-box-field').each(function () {
                createColorPickerField($(this), null);
            });

            //Manage multiregions field
            apply_backend_multiselect_group('#' + elementReveal + ' select[name="image_region_multiple"]', false, '');


            add_event_for_fields_in_modal(formSelector);
        }

        //Event change of select "Button Link"
        $(formSelector + ' .link-type-field-form').each(function () {
            var langID = $(this).attr('data-language-id');

            $(formSelector + ' #link_type_' + langID).change(function () {
                if ($(this).val() == 0) {
                    $(formSelector + ' input[name="link_image_' + langID + '"]').parent().hide();
                    $(formSelector + ' #link-section-fields-' + langID).hide();
                    $(formSelector + ' #button-section-fields-' + langID).hide();
                } else if ($(this).val() == 1) {
                    $(formSelector + ' input[name="link_image_' + langID + '"]').parent().show();
                    $(formSelector + ' #link-section-fields-' + langID).show();
                    $(formSelector + ' #button-section-fields-' + langID).hide();
                } else if ($(this).val() == 2) {
                    $(formSelector + ' input[name="link_image_' + langID + '"]').parent().show();
                    $(formSelector + ' #link-section-fields-' + langID).show();
                    $(formSelector + ' #button-section-fields-' + langID).show();
                }
            });
        });


        //adding integration with ckfinder
        if ($('.browse-img-image-block').length > 0) {

            $('.browse-img-image-block').each(function () {
                var lang = $(this).attr("data-language-id");
                $(this).click(function (e) {
                    e.preventDefault();
                    selectFileWithCkFinder('image_url_' + lang, 'image-block-preview-lang-' + lang);
                    return false;
                });
            });


        }


        $('#' + elementReveal).find('input[type="submit"].custom-button').on('click', function () {
            if (!validate_url_fields_backend('#' + elementReveal, 'input[name="image_visible_to"]', 'textarea[name="image_visibility_urls"]'))
                return false;
        });



    });

    $(document).on('change', '#block-image-form input.image-show-title', function () {
        var checked = $(this).prop('checked');
        $('#block-image-form input.image-show-title').prop('checked', checked);
        if (checked) {
            $('#block-image-form  #image_show_title').val(checked);
        }
        else {
            $('#block-image-form  #image_show_title').val(null);
        }
    });
}

function backend_reporting_settings_modal() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="reporting-settings"]', function () {
        //Load modal info
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        //Open modal
        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        //Get info of folders to populate modal
        $.ajax({
            method: 'GET',
            url: urlSite + 'admin/GetFoldersReporting',
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            //Clean current listing of modal
            $('#' + elementReveal).find('.listing-folders-backend ul').empty();

            //Populate modal with folders
            if (jsonResult.folders) {
                var folders = JSON.parse(jsonResult.folders);
                folders.forEach(function (folder) {
                    var newRow = '<li class="row"><div class="small-4 columns"><span>' + folder.name + '</span></div>'
                        + '<div class="small-4 columns">'
                        + '<div class="switch large">'
                        + '<input class="switch-input" id="yes-no-visible--' + folder.SID + '" type="checkbox" name="yes-no-visible--' + folder.SID + '">'
                        + '<label class="switch-paddle" for="yes-no-visible--' + folder.SID + '">'
                        + '<span class="show-for-sr">Visible?</span>'
                        + '<span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span>'
                        + '<span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span>'
                        + '</label>'
                        + '</div>'
                        + '</div>'
                        + '<div class="small-4 columns">'
                        + '<div class="switch large">'
                        + '<input class="switch-input" id="visible-vl--' + folder.SID + '" type="checkbox" name="visible-vl--' + folder.SID + '">'
                        + '<label class="switch-paddle" for="visible-vl--' + folder.SID + '">'
                        + '<span class="show-for-sr">Visible?</span>'
                        + '<span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span>'
                        + '<span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span>'
                        + '</label>'
                        + '</div>'
                        + '</div>'
                        + '</li>';

                    $('#' + elementReveal).find('.listing-folders-backend ul').append(newRow);

                    if (folder.isVisible === true) {
                        $('.listing-folders-backend input#yes-no-visible--' + folder.SID).prop('checked', true);
                    }
                    if (folder.isVisibleVl === true) {
                        $('.listing-folders-backend input#visible-vl--' + folder.SID).prop('checked', true);
                    }
                });
            }

            //Hide processing screen
            $('#' + elementReveal).find('.processing_screen').hide();
        });
    });
}

function validate_image_form() {
    if (!is_backend_page()) return;
    $("#block-image-form input[type='file']").on("change", function () {
        var lang_id = $(this).attr("data-language-id");
        if ($(this).val() != "") {
            // Changing image hidden field when image is changed.
            var url_image = $(this).val();
            var array = url_image.split(".");
            if (array[array.length - 1] == "jpeg" || array[array.length - 1] == "png" || array[array.length - 1] == "jpg" || array[array.length - 1] == "gif") {
                $("input[name='image_url_" + lang_id + "']").val(true);
            } else {

                $("input[name='image_url_" + lang_id + "']").val(false);
            }
        } else {
            $("input[name='image_url_" + lang_id + "']").val(false);
        }

    });
}

function validate_corporate_image_form() {
    if (!is_backend_page()) return;

    $("#corporate-image-form input[type='file']").on("change", function () {
        var lang_id = $(this).attr("data-language-id");
        if ($(this).val() != "") {
            // Changing image hidden field when image is changed.
            var url_image = $(this).val();
            var array = url_image.split(".");
            if (array[array.length - 1] == "jpeg" || array[array.length - 1] == "png" || array[array.length - 1] == "jpg" || array[array.length - 1] == "gif") {
                $("#corporate-image-form input[name='image_url_" + lang_id + "']").val(true);
            } else {

                $("#corporate-image-form input[name='image_url_" + lang_id + "']").val(false);
            }
        } else {
            $("#corporate-image-form input[name='image_url_" + lang_id + "']").val(false);
        }

    });
}

function validate_sponsors_form() {
    if (!is_backend_page()) return;

    $("#sponsor-form").on('change', 'input[type="file"]', function () {
        if ($(this).val() != "") {
            // Changing image hidden field when image is changed.
            var url_image = $(this).val();
            var array = url_image.split(".");
            var position = $(this).attr('name').split('_')[1];

            if (array[array.length - 1] == "jpeg" || array[array.length - 1] == "png" || array[array.length - 1] == "jpg" || array[array.length - 1] == "gif") {
                $("#sponsor-form input[name='image_url_" + position + "']").val(true);
            } else {

                $("#sponsor-form input[name='image_url_" + position + "']").val(false);
            }
        } else {
            $("#sponsor-form input[name='image_url_" + position + "']").val(false);
        }
    });
}


function backend_login_block() {
    if (!is_backend_page()) return;
    var formSelector = '#login-configuration';
    $(document).on('click', 'a[data-element-reveal="login-configuration"]', function () {
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        $.ajax({
            method: "GET",
            url: urlSite + "admin/GetLoginBlockSettings",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            if (jsonResult.code == 200) {
                if (jsonResult.color != null) {
                    $('#' + elementReveal).find('input[name="color_setting_login"]').val(jsonResult.color);                    
                }
                if (jsonResult.colorHover != null) {
                    $('#' + elementReveal).find('input[name="color_hover_setting_login"]').val(jsonResult.colorHover);
                }
                if (jsonResult.registrationLink == 'NONE') {
                    $('#' + elementReveal).find('input[name="hide-registration-link"]').prop('checked', true);
                    $('#' + elementReveal).find('.custom-registration-link-section').hide();
                }
                else {
                    $('#' + elementReveal).find('input[name="hide-registration-link"]').prop('checked', false);
                    $('#' + elementReveal).find('input[name="custom_registration_link"]').val(jsonResult.registrationLink);
                    $('#' + elementReveal).find('.custom-registration-link-section').show();
                }
                $('#' + elementReveal).find('select[name="options_login_button_style"]').val(jsonResult.loginButtonStyle);
                if (jsonResult.loginButtonStyle == '3') {
                    $('#' + elementReveal).find('.button-style-section').hide();
                }
                else {
                    $('#' + elementReveal).find('.button-style-section').show();
                }
                $("#" + elementReveal).find('input.default-color-picker').attr('style', "");
                $("#" + elementReveal).find('input.default-color-picker').each(function () {
                    createColorPickerField($(this), null);
                });
                option_hidden();
            } else {
                Swal.fire({
                    title: window.translation.error,
                    icon: "error",
                    text: jsonResult.message,
                    confirmButtonText: "Ok",
                });
            }

            $('#' + elementReveal).find('.processing_screen').hide();
        });
    });
}

function backend_corporate_image_block() {
    //Load modal info
    if (!is_backend_page()) return;

    var formSelector = '#corporate-image-form';
    $(document).on('click', 'a[data-element-reveal="corporate-image-configuration"]', function () {
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        // Apply vlidate to corporate image block
        initiate_jquery_validate_reveal($("#corporate-image-form"), 'corporate-image-form');

        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        if (blockID != 0) {
            // show delete block link
            $('#' + elementReveal).find('.delete_block').show();
            $('#' + elementReveal + ' .rollback-link').show();
            $('#' + elementReveal + ' .rollback-link').attr('data-block-id', blockID);

            $.ajax({
                method: "GET",
                url: urlSite + "admin/GetCorporateImageBlock?blockID=" + blockID,
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);


                //Populate block info
                if (jsonResult.blockInfo) {
                    $(formSelector + ' input[name="block_id"]').val(jsonResult.blockInfo.ID);
                    $(formSelector + ' input[name="sort_weight"]').val(jsonResult.blockInfo.Weight);
                    $(formSelector + ' #image-enabled').prop('checked', jsonResult.blockInfo.Enabled);
                    $(formSelector + ' input[name="image_visible_to"]').prop('checked', false);
                    $(formSelector + ' #corporate_image_visibility_' + jsonResult.blockInfo.Visibility).prop('checked', true);
                    $(formSelector + ' #corporate_image_exception_urls').val(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' #corporate_image_exception_urls').text(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' input[name="corporate_image_system_name"]').val(jsonResult.blockInfo.SystemName);
                    $(formSelector + ' input[name="css_class"]').val(jsonResult.blockInfo.CssClass);
                    $(formSelector + ' select[name="corporate_image_region"]').val(jsonResult.blockInfo.regionId);
                    $(formSelector + ' input[name="url_to_redirect"]').val(jsonResult.urlToRedirect);

                    if (jsonResult.blockInfo.SubsiteId !== '0' && jsonResult.blockInfo.SubsiteId !== 0) {
                        if ($(formSelector + ' select[name="subsite_id"]').length > 0) {
                            $(formSelector + ' select[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        } else {
                            $(formSelector + ' input[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        }


                    }

                    if (jsonResult.blockInfo.Visibility == 1 || jsonResult.blockInfo.Visibility == 2) {
                        $(formSelector + " #corporate_image_exception_url_container").removeClass("is-hidden");
                    } else {
                        $(formSelector + " #corporate_image_exception_url_container").addClass("is-hidden");
                    }
                }

                //Populate images
                if (jsonResult.images) {
                    //Clean data of images loaded
                    $(formSelector).find('.tabs-panel').each(function () {
                        $(this).find('input[type="text"]').val('');
                        $(this).find('input[type="checkbox"]').prop('checked', false);
                        $(this).find('select').val('0');
                    });

                    //Reinitialize ezdz widget
                    initialize_block_image();

                    jsonResult.images.forEach(function (item) {
                        $(formSelector + ' input[name="corporate_block_id"]').val(item.BlockID);
                        $(formSelector + ' input[name="image_id_' + item.LanguageID + '"]').val(item.ImageID);
                        $(formSelector + ' input[name="html_alt_' + item.LanguageID + '"]').val(item.ImageAlt);
                        $(formSelector + ' input[name="html_title_' + item.LanguageID + '"]').val(item.HtmlTitleImage);

                        var selector = $(formSelector + ' input[name="image_' + item.LanguageID + '"]');
                        var id = selector.attr('id');
                        var parent = selector.parent(".ezdz-dropzone");
                        var delete_image_link = '<a data-image="' + id + '" class="delete_image">' + window.translation.delete + '</a>';

                        if (item.ImageUrl == "") {
                            $(formSelector + ' input[name="image_url_' + item.LanguageID + '"]').val(false);
                        } else {
                            // Put link below image preview.
                            if (parent.parent().find('.delete_image').length == 0) {
                                parent.parent().find(".remove_image").append(delete_image_link);
                                parent.parent().find(".remove_image").removeClass("is-hidden");
                            }

                            setTimeout(function () {
                                $(formSelector + ' input[name="image_' + item.LanguageID + '"]').ezdz('preview', item.ImageUrl, function () {
                                    var edit_image_link = '<a data-image="' + id + '" class="edit_image edit_image_' + id + '">' + window.translation.edit + '</a>';
                                    // Put link below image preview.
                                    // Adding Edit link to allow Crop and resize options.
                                    //validate when user only close crop
                                    if (parent.find("img").length > 0) {
                                        var tabSelector = "#corporate-image-" + item.LanguageID + " .ezdz-dropzone img";
                                        if ($(tabSelector).length > 0) {
                                            $(tabSelector).attr("id", "corporate-image-preview-lang-" + item.LanguageID);
                                        }

                                        parent.parent().find('.edit_image_' + id).remove();
                                        parent.parent().find(".remove_image").append(edit_image_link);
                                        $('.edit_image_' + id).on('click', function () {
                                            apply_cropper_event(id, parent.find("img").clone());
                                            $("#crop-image").foundation("open");
                                        });
                                    }
                                });
                                $(formSelector + ' input[name="image_url_' + item.LanguageID + '"]').val(false);
                                add_event_for_fields_in_modal(formSelector);
                            }, 200);
                        }
                    });
                }

                //Populate titles and slogan
                if (jsonResult.titles) {
                    jsonResult.titles.forEach(function (item) {
                        $(formSelector + ' input[name="title_' + item.languageID + '"]').val(item.title);
                    });
                }
                if (jsonResult.slogans) {
                    jsonResult.slogans.forEach(function (item) {
                        $(formSelector + ' input[name="slogan_' + item.languageID + '"]').val(item.slogan);
                    });
                }

                // Multiregions field
                if (jsonResult.regionsMultiple) {
                    //Apply multiselect widget to region select
                    apply_backend_multiselect_group('#' + elementReveal + ' select[name="corporate_image_region_multiple"]', false, jsonResult.regionsMultiple);
                }

                hideVisibleOptions(jsonResult.uniqueRegion, '#corporate-image-advanced-settings');

                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }
        else {
            //Assing values by default

            $(formSelector + ' select[name="corporate_image_region"]').val($('select[name="corporate_image_region"] option:first-child').val());
            $('#' + elementReveal + ' .rollback-link').hide();
            $('#' + elementReveal).find('input[name="block_id"]').val('');
            $('#' + elementReveal).find('input[name="corporate_block_id"]').val('');

            //Reinitialize ezdz widget
            initialize_block_image();

            //Remove previous link "Delete and Edit"
            $('.remove_image').empty();

            $(formSelector + " #corporate_image_exception_url_container").removeClass("is-hidden");
            $(formSelector).find('input[name="corporate_image_visible_to"][value="2"]').prop('checked', true);
            $(formSelector + ' #corporate_image_exception_urls').val('');
            $(formSelector + ' input[name="css_class"]').val('');
            $(formSelector + ' input[name="subsite_id"]').val('');
            $(formSelector + ' select[name="subsite_id"]').val('0');

            // hide delete block link
            $('#' + elementReveal).find('.delete_block').hide();

            //Manage multiregions field
            apply_backend_multiselect_group('#' + elementReveal + ' select[name="corporate_image_region_multiple"]', false, '');


            add_event_for_fields_in_modal(formSelector);
        }

        //Button
        if ($('.browse-img-corporate').length > 0) {

            $('.browse-img-corporate').each(function () {
                var lang = $(this).attr("data-language-id");
                $(this).click(function (e) {
                    e.preventDefault();
                    selectFileWithCkFinder('image_url_corporate_' + lang, 'corporate-image-preview-lang-' + lang);
                    return false;
                });
            });


        }

        $('#' + elementReveal).find('input[type="submit"].custom-button').on('click', function () {
            if (!validate_url_fields_backend('#' + elementReveal, 'input[name="corporate_image_visible_to"]', 'textarea[name="corporate_image_visibility_urls"]'))
                return false;
        });

    });
}

function backend_video_block() {
    if (!is_backend_page()) return;
    //Load modal info

    var formSelector = '#video-form';
    $(document).on('click', 'a[data-element-reveal="video-configuration"]', function () {
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        // Apply vlidate to video  block
        initiate_jquery_validate_reveal($("#video-form"), 'video-form');

        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        if (blockID != 0) {
            // show delete block link
            $('#' + elementReveal).find('.delete_block').show();
            $('#' + elementReveal + ' .rollback-link').attr('data-block-id', blockID);
            $('#' + elementReveal + ' .rollback-link').show();
            $.ajax({
                method: "GET",
                url: urlSite + "admin/GetVideoBlock?blockID=" + blockID,
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);


                //Populate block info
                if (jsonResult.blockInfo) {
                    $(formSelector + ' input[name="block_id"]').val(jsonResult.blockInfo.ID);
                    $(formSelector + ' input[name="sort_weight"]').val(jsonResult.blockInfo.Weight);
                    $(formSelector + ' #video-enabled').prop('checked', jsonResult.blockInfo.Enabled);
                    if (jsonResult.blockInfo.ShowTitle) {
                        $(formSelector + ' input[name="show_title_video"]').val(jsonResult.blockInfo.ShowTitle);
                        $(formSelector + ' input.show-title-video').prop('checked', true);
                    }
                    else {
                        $(formSelector + ' input[name="show_title_video"]').val(null);
                        $(formSelector + ' input.show-title-video').prop('checked', false);
                    }
                    $(formSelector + ' input[name="video_visible_to"]').prop('checked', false);
                    $(formSelector + ' #video_visibility_' + jsonResult.blockInfo.Visibility).prop('checked', true);
                    $(formSelector + ' #video_exception_urls').val(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' #video_exception_urls').text(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' input[name="video_block_system_name"]').val(jsonResult.blockInfo.SystemName);
                    $(formSelector + ' select[name="video_region"]').val(jsonResult.blockInfo.regionId);
                    $(formSelector + ' input[name="css_class"]').val(jsonResult.blockInfo.CssClass);
                    if (jsonResult.blockInfo.Visibility == 1 || jsonResult.blockInfo.Visibility == 2) {
                        $(formSelector + " #video_exception_url_container").removeClass("is-hidden");
                    } else {
                        $(formSelector + " #video_exception_url_container").addClass("is-hidden");
                    }

                    if (jsonResult.blockInfo.SubsiteId !== '0' && jsonResult.blockInfo.SubsiteId !== 0) {
                        if ($(formSelector + ' select[name="subsite_id"]').length > 0) {
                            $(formSelector + ' select[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        } else {
                            $(formSelector + ' input[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        }
                    }
                }

                //Populate titles
                if (jsonResult.titles) {
                    jsonResult.titles.forEach(function (item) {
                        $(formSelector + ' input[name="title-' + item.languageID + '"]').val(item.title);
                    });
                }

                //Populate video info
                if (jsonResult.videoInfo) {
                    $(formSelector + ' input[name="url_video"]').val(jsonResult.videoInfo.url);
                    $(formSelector + ' input[name="video_block_id"]').val(jsonResult.videoInfo.videoID);
                    $(formSelector + ' select[name="size_video"]').val(jsonResult.videoInfo.size);
                    $(formSelector + ' select[name="position_video"]').val(jsonResult.videoInfo.textAboveBelow);
                }

                //Populate video language info
                if (jsonResult.descriptions) {
                    $(formSelector).find('textarea[name*=description_video_]').text('');

                    jsonResult.descriptions.forEach(function (item) {
                        $(formSelector).find('textarea[name="description_video_' + item.LanguageId + '"]').text(item.Description);
                    });

                    //Destroy CKEDitors of descriptions
                    $(formSelector).find('textarea[name*=description_video_]').each(function () {
                        var editor;
                        var textId = $(this).attr('id');
                        if (CKEDITOR.instances[textId]) {
                            CKEDITOR.instances[textId].destroy(true);
                        }

                        initialize_ckeditor_ars(textId, "");
                        /*
                        //Reinitialize WYSIWYG
                        $('#cke_' + textId).remove();
                        editor = CKEDITOR.replace(textId, {
                            filebrowserBrowseUrl: '/file-browser?type=Files&block=wysiwyg',
                            filebrowserImageBrowseUrl: '/file-browser?type=Images&block=wysiwyg',
                            filebrowserUploadUrl: '/file-upload',
                            filebrowserImageUploadUrl: '/file-upload',
                            filebrowserWindowWidth: 800,
                            filebrowserWindowHeight: 700
                        });

                        */
                        add_event_for_ckeditor(textId, formSelector);
                    });
                }

                //Manage multiregions
                if (jsonResult.regionsMultiple) {
                    //Apply multiselect widget to region select
                    apply_backend_multiselect_group(formSelector + ' select[name="video_region_multiple"]', false, jsonResult.regionsMultiple);
                }

                hideVisibleOptions(jsonResult.uniqueRegion, '#video-advanced-settings');

                //Hide processing screen
                add_event_for_fields_in_modal(formSelector);
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }
        else {
            //Assing values by default

            $(formSelector + ' input[name*=title-]').val('');
            $(formSelector + ' select[name="video_region"]').val($('select[name="video_region"] option:first-child').val());
            $(formSelector).find('input[name="block_id"]').val('');
            $(formSelector).find('input[name="video_block_id"]').val('');
            $(formSelector + " #video_exception_url_container").removeClass("is-hidden");
            $(formSelector).find('input[name="video_visible_to"][value="2"]').prop('checked', true);
            $(formSelector + ' #video_exception_urls').val('');
            $('#video-form input[name="show_title_video"]').val(null);
            $('#video-form input.show-title-video').prop('checked', false);
            $(formSelector + ' #video-enabled').prop('checked', true);
            //$(formSelector + ' #video_visibility_0').prop('checked', true);
            $(formSelector + ' select[name="css_class"]').val('');
            $('#' + elementReveal + ' .rollback-link').hide();
            $(formSelector + ' select[name="subsite_id"]').val('0');
            $(formSelector + ' input[name="subsite_id"]').val('');
            // Hide delete block link
            $('#' + elementReveal).find('.delete_block').hide();

            //Destroy CKEDitors of descriptions
            $(formSelector).find('textarea[name*=description_video_]').each(function () {
                var editor;
                var textId = $(this).attr('id');
                if (CKEDITOR.instances[textId]) {
                    CKEDITOR.instances[textId].destroy(true);
                }

                initialize_ckeditor_ars(textId, "");
                /*
                //Reinitialize WYSIWYG
                $('#cke_' + textId).remove();
                editor = CKEDITOR.replace(textId, {
                    filebrowserBrowseUrl: '/file-browser?type=Files&block=wysiwyg',
                    filebrowserImageBrowseUrl: '/file-browser?type=Images&block=wysiwyg',
                    filebrowserUploadUrl: '/file-upload',
                    filebrowserImageUploadUrl: '/file-upload',
                    filebrowserWindowWidth: 800,
                    filebrowserWindowHeight: 700
                });

                */
                add_event_for_ckeditor(textId, formSelector);
            });

            //Set textareas to empty
            $(formSelector).find('textarea[name*=description_video_]').text('');

            //Manage multiregions field
            apply_backend_multiselect_group(formSelector + ' select[name="video_region_multiple"]', false, '');

            add_event_for_fields_in_modal(formSelector);
        }
        $(formSelector).find('input[type="submit"].custom-button').on('click', function () {
            if (!validate_url_fields_backend(formSelector, 'input[name="video_visible_to"]', 'textarea[name="video_visibility_urls"]'))
                return false;
        });


    });

    $(document).on('change', formSelector + ' input.show-title-video', function () {
        var checked = $(this).prop('checked');
        $(formSelector + ' input.show-title-video').prop('checked', checked);
        if (checked) {
            $(formSelector + ' input[name="show_title_video"]').val(checked);
        }
        else {
            $(formSelector + ' input[name="show_title_video"]').val(null);
        }
    });
}

function backend_social_network_block() {
    if (!is_backend_page()) return;
    //Load modal info
    var formSelector = '#social-network-form';
    $(document).on('click', 'a[data-element-reveal="social-network-configuration"]', function () {
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        // Apply vlidate to social network  block
        initiate_jquery_validate_reveal($("#social-network-form"), 'social-network-form');

        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();
        window.scroll_current_pos_y = $(window).scrollTop();

        if (blockID != 0) {
            // show delete block link
            $('#' + elementReveal).find('.delete_block').show();
            $('#' + elementReveal + ' .rollback-link').attr('data-block-id', blockID);
            $('#' + elementReveal + ' .rollback-link').show();
            $.ajax({
                method: "GET",
                url: urlSite + "admin/GetSocialNetworkBlock?blockID=" + blockID,
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);


                //Populate block info
                if (jsonResult.blockInfo) {
                    $(formSelector + ' input[name="block_id"]').val(jsonResult.blockInfo.ID);
                    $(formSelector + ' input[name="css_class"]').val(jsonResult.blockInfo.CssClass);
                    $(formSelector + ' input[name="sort_weight"]').val(jsonResult.blockInfo.Weight);
                    $(formSelector + ' #social-network-enabled').prop('checked', jsonResult.blockInfo.Enabled);
                    if (jsonResult.blockInfo.ShowTitle) {
                        $(formSelector + ' input[name="show_title"]').val(jsonResult.blockInfo.ShowTitle);
                        $(formSelector + ' input.social-network-show-title').prop('checked', true);
                    }
                    else {
                        $(formSelector + ' input[name="show_title"]').val(null);
                        $(formSelector + ' input.social-network-show-title').prop('checked', false);
                    }

                    $(formSelector + ' input[name="social_network_visible_to"]').prop('checked', false);
                    $(formSelector + ' #social_network_visibility_' + jsonResult.blockInfo.Visibility).prop('checked', true);
                    $(formSelector + ' #social_network_exception_urls').val(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' #social_network_exception_urls').text(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' input[name="social_network_system_name"]').val(jsonResult.blockInfo.SystemName);
                    $(formSelector + ' select[name="social_network_region"]').val(jsonResult.blockInfo.regionId);
                   

                    if (jsonResult.blockInfo.SubsiteId !== '0' && jsonResult.blockInfo.SubsiteId !== '0') {
                        if ($(formSelector + ' select[name="subsite_id"]').length > 0) {
                            $(formSelector + ' select[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        } else {
                            $(formSelector + ' input[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        }

                    }

                    if (jsonResult.blockInfo.Visibility == 1 || jsonResult.blockInfo.Visibility == 2) {
                        $(formSelector + " #social_network_exception_url_container").removeClass("is-hidden");
                    } else {
                        $(formSelector + " #social_network_exception_url_container").addClass("is-hidden");
                    }
                }

                //Populate titles
                if (jsonResult.titles) {
                    jsonResult.titles.forEach(function (item) {
                        $(formSelector + ' input[name="title-' + item.languageID + '"]').val(item.title);
                    });
                }

                //Populate social network block info
                if (jsonResult.socialNetworkInfo) {
                    $(formSelector + ' input[name="social_network_block_id"]').val(jsonResult.socialNetworkInfo.socialNetworkID);
                    $(formSelector + ' input[name="youtube_url"]').val(jsonResult.socialNetworkInfo.youtubeURL);
                    $(formSelector + ' input[name="linkedin_url"]').val(jsonResult.socialNetworkInfo.linkedinURL);
                    $(formSelector + ' input[name="twitter_url"]').val(jsonResult.socialNetworkInfo.twitterURL);
                    $(formSelector + ' input[name="facebook_url"]').val(jsonResult.socialNetworkInfo.facebookURL);
                    $(formSelector + ' input[name="instagram_url"]').val(jsonResult.socialNetworkInfo.instagramURL);
                    $(formSelector + ' input[name="tiktok_url"]').val(jsonResult.socialNetworkInfo.tiktokURL);
                    $(formSelector + ' select[name="title_display"]').val(jsonResult.socialNetworkInfo.titleDisplay);
                    $(formSelector + ' input[name="color_setting_social_network"]').val(jsonResult.socialNetworkInfo.colorIcon);
                    $(formSelector + ' input[name="color_hover_setting_social_network"]').val(jsonResult.socialNetworkInfo.colorIconHover);
                }

                //Manage multiregions
                if (jsonResult.regionsMultiple) {
                    //Apply multiselect widget to region select
                    apply_backend_multiselect_group(formSelector + ' select[name="social_network_region_multiple"]', false, jsonResult.regionsMultiple);
                }

                $(formSelector).find('input[name="color_setting_social_network"]').attr('style', "");
                createColorPickerField($(formSelector).find('input[name="color_setting_social_network"]'), null);

                $(formSelector).find('input[name="color_hover_setting_social_network"]').attr('style', "");
                createColorPickerField($(formSelector).find('input[name="color_hover_setting_social_network"]'), null);

                
              
                

                hideVisibleOptions(jsonResult.uniqueRegion, '#social-network-advanced-settings');
                //add_event_for_fields_in_modal(formSelector);
                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }
        else {
            //Assing values by default

            $(formSelector + ' select[name="social_network_region"]').val($('select[name="social_network_region"] option:first-child').val());
            $(formSelector).find('input[name="block_id"]').val('');
            $(formSelector).find('input[name="social_network_block_id"]').val('');
            $(formSelector).find('input[name="show_title"]').val(true);
            $(formSelector).find('input.social-network-show-title').prop('checked', true);
            $(formSelector).find('#social-network-enabled').prop('checked', true);
            $(formSelector + ' select[name="title_display"]').val(0);
            $(formSelector + " #social_network_exception_url_container").removeClass("is-hidden");
            $(formSelector).find('input[name="social_network_visible_to"][value="2"]').prop('checked', true);
            $(formSelector + ' #social_network_exception_urls').val('');
            $(formSelector + ' input[name="css_class"]').val('');
            $(formSelector + ' select[name="subsite_id"]').val('0');
            $(formSelector + ' input[name="subsite_id"]').val('');
            $(formSelector + ' input[name="color_setting_social_network"]').val('');
            $(formSelector + ' input[name="color_hover_setting_social_network"]').val('');

            $('#' + elementReveal + ' .rollback-link').hide();

            // hide delete block link
            $('#' + elementReveal).find('.delete_block').hide();

            //Manage multiregions field
            apply_backend_multiselect_group(formSelector + ' select[name="social_network_region_multiple"]', false, '');
            $(formSelector).find('input[name="color_setting_social_network"]').attr('style', "");
            createColorPickerField($(formSelector).find('input[name="color_setting_social_network"]'), null);

            $(formSelector).find('input[name="color_hover_setting_social_network"]').attr('style', "");
            createColorPickerField($(formSelector).find('input[name="color_hover_setting_social_network"]'), null);

            
            
        }


        

        add_event_for_fields_in_modal(formSelector);

        $(formSelector).find('input[type="submit"].custom-button').on('click', function () {
            if (!validate_url_fields_backend(formSelector, 'input[name="social_network_visible_to"]', 'textarea[name="social_network_visibility_urls"]'))
                return false;
        });


    });

    $(document).on('change', formSelector + ' input.social-network-show-title', function () {
        var checked = $(this).prop('checked');
        $(formSelector +' input.social-network-show-title').prop('checked', checked);
        if (checked) {
            $(formSelector +' input[name="show_title"]').val(checked);
        }
        else {
            $(formSelector +' input[name="show_title"]').val(null);
        }
    });

    $(document).on('click', formSelector + ' input[name="color_setting_social_network"]', function () {
        $(formSelector + ' input[name="pending-changes"]').val(true);
    });

    $(document).on('click', formSelector + ' input[name="color_hover_setting_social_network"]', function () {
        $(formSelector + ' input[name="pending-changes"]').val(true);
    });
}


function page_config() {
    if (!is_backend_page()) return;
    var languajeList = [];
    var tempRole = "null";
    var tempField = "null";
    var PreRole = "null";
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    //Edit page
    $(document).on('click', 'a[element-reveal="page-conf"]', function () {

        get_session_Variables(urlSite, '#page-advanced-settings');
        $('#page-conf-form input[name="new-llamapi-ars-success"]').val("false");

        var pageID = $(this).attr('data-page-id');
        var elementReveal = $(this).attr('element-reveal');
        var pageUrl = $(this).attr('data-url');
        var modal_open_from = $(this).data('modal-from');
        var self = $('#page-conf');
        var RoleFieldList = null;

        if (modal_open_from !== undefined && modal_open_from !== null && modal_open_from === "ars") {

            $('#' + elementReveal).find('input[name="create_page_from_ars"]').val("true");
            var datapagetype = $(this).attr('data-page-type');
            if ($('body').hasClass('llamapi-system')) {
                if (datapagetype === 'new-success') {
                    prepare_page_llamapi_success_registration(elementReveal, self);
                    return;
                } else {
                    $('#' + elementReveal).find('.friendly-url-section').addClass('hide');
                    $('#' + elementReveal).find('.tile-information-container').addClass('hide');
                    $('#' + elementReveal).find('#page-conf-form-summary').addClass('hide');
                    $('#' + elementReveal).find('a.remove-link').addClass('hide');
                    $('#' + elementReveal).find('.page-enabled-settings').addClass('hide');
                    $('#' + elementReveal).find('.visibility-field-section').addClass('hide');

                }
            }
            
        }

        // Cleaning ids pages in page conf
        $("#page-conf-form .page-id-hidden").val(0);
        // Show delete link
        $('#' + elementReveal).find('.remove-link.delete').show();
        $('#' + elementReveal).find('.save-page').parent().parent().removeClass("medium-12");
        $('#' + elementReveal).find('.save-page').parent().parent().addClass("medium-8");
        // Initialize jquery validations ti page config.
        $('#' + elementReveal).foundation('open');
        //Reload elements inside modal
        $('#' + elementReveal).foundation();
        //Initialize jQuery validate
        initiate_jquery_validate_reveal($('#page-conf-form'), 'page-conf-form');
        $("#page-conf-form #display-in-mobile-app").prop("checked", false);
        //Remove label errors
        $("#page-conf-form").find("label.error").remove();
        $(".title-field").prop('disabled', false);
        $('#page-conf').find('input[name="is_update_page"]').val(false);
        $('#' + elementReveal).find('.section-for-mobile-app').removeClass("hide");
        if (pageID) {

            //If page is homepage or search hide fields "Body, Corporate Page, Content Type and Show Advanced Settings"
            if (pageUrl === '' || pageUrl === 'search' || pageUrl === 'opportunity' || pageUrl === 'calendar') {
                //Textarea

                $('#' + elementReveal).find('.section-for-mobile-app').addClass("hide");
                $('#' + elementReveal).find('a.rollback-link').addClass("hide");
                if (IS_LLAMAPI_ENABLED !== true || (IS_LLAMAPI_ENABLED === true && pageUrl === '')) {

                    var disabledOldSearch = self.find('input[name="disabled-old-search"]').val() == 'true';

                    if (disabledOldSearch === false) {
                        self.find('textarea[name*=body]').each(function (index, el) {
                            $(this).parents('.row').first().addClass('hide-custom');
                        });

                    } else if (disabledOldSearch === true && pageUrl !== 'search' && pageUrl !== 'calendar') {
                        self.find('textarea[name*=body]').each(function (index, el) {
                            $(this).parents('.row').first().addClass('hide-custom');
                        });

                    }

                    //Corporate and content type fields
                    self.find('input.field-corporate-page').each(function (index, el) {
                        $(this).parents('.row').first().addClass('hide-custom');
                    });

                    if (pageUrl !== 'opportunity') {
                        //Link show advanced settings
                        self.find('a.advanced-link').addClass('hide-custom');

                        //Remove select visible to
                        self.find('.visible-to').addClass('hide-custom');

                        self.find('div.input-group-checkbox').removeClass('hide-custom');
                    } else {
                        self.find('div.input-group-checkbox').addClass('hide-custom');
                        self.find('a.advanced-link').removeClass('hide-custom');
                    }


                }

            }
            else {
                //Textarea
                $('#' + elementReveal).find('a.rollback-link').removeClass("hide");

                self.find('textarea[name*=body]').each(function (index, el) {
                    $(this).parents('.row').first().removeClass('hide-custom');
                });

                //Corporate and content type fields
                self.find('input.field-corporate-page').each(function (index, el) {
                    $(this).parents('.row').first().removeClass('hide-custom');
                });

                //Link show advanced settings
                self.find('a.advanced-link').removeClass('hide-custom');

                //Display select visible to
                self.find('.visible-to').removeClass('hide-custom');

                self.find('div.input-group-checkbox').removeClass('hide-custom');
            }

            $.ajax({
                method: 'POST',
                url: urlSite + 'admin/GetPagesByPath',
                data: { pageUrl: pageUrl },
                beforeSend: function () {
                    $('#page-conf .processing_screen').show();
                }
            }).done(function (data) {

                var json = JSON.parse(data);
                var jsonResult = JSON.parse(json.page);
                $('#page-conf').find('input[name="is_update_page"]').val(true);
                $('#page-conf textarea').each(function () {
                    var textID = $(this).attr('id');
                    if (CKEDITOR.instances[textID]) {
                        CKEDITOR.instances[textID].destroy(true);
                    }
                });

                //Validate if page is linked a menu item, to remove or add option Inherint from menu item
                if (!json.IsLinkedToMenuItem) {
                    $('#page-conf-form').find('select[name="visible_to"]').find('option[value="3"]').remove();
                }
                else {
                    var optionLinked = '<option value="3">Inherit from menu item</option>';

                    //Include it if not exists in select
                    var optionLinkedLenght = $('#page-conf-form').find('select[name="visible_to"]').find('option[value="3"]').length;
                    if (optionLinkedLenght === 0) {
                        $('#page-conf-form').find('select[name="visible_to"]').prepend(optionLinked);
                    }
                }

                // Validating if parental consent terms
                if (pageUrl == 'parental-consent-terms') {
                    $("#page-conf .rollback-link").addClass("is-hidden");
                    $('#page-conf #metas').addClass("is-hidden");
                    $('#page-conf .delete').addClass("is-hidden");
                    $('#page-conf .submit-button').parent().addClass("medium-12");
                    $("#page-conf .advanced-link").addClass("is-hidden");
                    $("#page-conf .field-corporate-page").parent().addClass("is-hidden");
                } else {
                    $("#page-conf .rollback-link").removeClass("is-hidden");
                    $('#page-conf #metas').removeClass("is-hidden");
                    $('#page-conf .delete').removeClass("is-hidden");
                    $('#page-conf .submit-button').parent().removeClass("medium-12");
                    $("#page-conf .advanced-link").removeClass("is-hidden");
                    $("#page-conf .field-corporate-page").parent().removeClass("is-hidden");
                }

                var bolDashboard = false;

                $('.dashboard-role').hide();
                $('#page-role-field').val(false);
                if (pageUrl == 'partner-portal/dashboard') {
                    bolDashboard = json.dashboardPP;
                    if (bolDashboard === true) {
                        var dashboardData = JSON.parse(json.dashboardData);
                        if (dashboardData != null) {
                            RoleFieldList = dashboardData.RolesFieldList;
                        }
                        $('.dashboard-role').show();
                        $('#page-role-field').val(true);
                    }
                }

                $('#page-conf li.tabs-title a[data-language-id]').each(function () {
                    var langID = $(this).attr('data-language-id');
                    $('#result-text-section-' + langID).addClass("is-hidden");
                    $('#organization-id-section-' + langID).addClass("is-hidden");
                    $("#tile-information-container-" + langID).addClass("is-hidden");
                });

                let criteriaRule = '';
                if (jsonResult.length > 0) {
                    var system_page = system_page = jsonResult[0].IsSystemPage;
                    $("#page-conf-form").find("input[name=page-id]").val(true);
                    for (var i = 0; i < jsonResult.length; i++) {
                        
                        var lang_id = jsonResult[i].Language;
                        var display_Page_Title = jsonResult[i].DisplayPageTitle;
                        var iso = jsonResult[i].iso;
                         

                        if (languajeList.indexOf(lang_id) == -1) {
                            languajeList.push(lang_id);
                        }

                        if (system_page === true) {
                            console.log('it is a systempage')
                            $('input[name="friendly-url"]').prop("readonly", true);
                            $('#page-conf .remove-link').addClass("is-hidden");
                            $('#page-conf .input-group-button').parent().removeClass("medium-8");
                            $('#page-conf .input-group-button').parent().addClass("medium-12");
                        } else {
                            $('input[name="friendly-url"]').prop("readonly", false);
                            $('#page-conf .remove-link').removeClass("is-hidden");
                            $('#page-conf .input-group-button').parent().removeClass("medium-12");
                            $('#page-conf .input-group-button').parent().addClass("medium-8");
                        }

                        if ($("#language-page-" + lang_id).length > 0) {
                            //loading data.
                            $("#page-conf .rollback-link").attr("data-page-id", jsonResult[0].ID);
                            $("#page-conf .rollback-link").show();
                            $("#page-conf-form").find("input[name=friendly-url]").val(jsonResult[0].FriendlyUrl);
                            //$("#page-conf-form #language-page-" + lang_id).find("input[name=title-" + lang_id + "]").val(jsonResult[i].PageName);
                            $("#page-conf-form #language-page-" + lang_id).find("input[name=description-" + lang_id + "]").val(jsonResult[i].MetaDescription);
                            $("#page-conf-form").find("input[name=css_class]").val(jsonResult[i].CssClass);
                            $("#page-conf-form").find("input[name=page_id-" + lang_id + "]").val(jsonResult[i].ID);
                            $("#page-conf-form").find("input[name=page_id-" + lang_id + "]").attr('value', jsonResult[i].ID);
                            $("#page-conf-form").find("select[name=visible_to]").val(jsonResult[i].Visibility);

                            if (jsonResult[i].VisibilitySessionVariablesSettings) {
                                var pagecustomFilters = JSON.parse(jsonResult[i].VisibilitySessionVariablesSettings);
                                
                                $('#page-conf-form #page-advanced-settings').find('.filter_rules .rule').remove();

                                if (pagecustomFilters.filters && pagecustomFilters.filters.length > 0) {
                                    var filters = pagecustomFilters.filters;
                                    try {
                                        filters = JSON.parse(pagecustomFilters.filters);
                                    } catch (err) {
                                        filters = pagecustomFilters.filters;
                                    }
                                    
                                    filters.forEach(function (item) {
                                        addRuleFilterMPageSetting(item.field, item.friendlyFieldName, item.comparisonValue, item.operator, item.typeField);
                                    });
                                }
                                criteriaRule = pagecustomFilters.criteria;
                            }
                            if (jsonResult[i].PageName == "Homepage") {
                                $("#page-conf-form").find("div[id=page-conf-form-summary]").hide();
                            }

                            if (jsonResult[0].Enabled) {
                                $("#page-conf-form").find("input[name=enabled]").prop('checked', true);
                            } else {
                                $("#page-conf-form").find("input[name=enabled]").prop('checked', false);
                            }

                            if (display_Page_Title) {
                                $("#page-conf-form").find("input[name='display-page-title_"+lang_id+"']").prop('checked', true);
                                $("#page-conf-form").find("input[name='display-page-title']").val(display_Page_Title);
                                $("#page-conf-form").find("select.align-title").removeClass('hide-custom');
                            } else {
                                $("#page-conf-form").find("input.display-page-title").prop('checked', false);
                                $("#page-conf-form").find("input[name='display-page-title']").val(null);
                                $("#page-conf-form").find("select.align-title").addClass('hide-custom');
                            }
                            if (jsonResult[0].AddOnSitemap) {
                                $("#page-conf-form").find("input[name=add_on_sitemap]").prop('checked', true);
                            } else {
                                $("#page-conf-form").find("input[name=add_on_sitemap]").prop('checked', false);
                            }

                            let content = addNbspToEmptyIcons(jsonResult[i].Body);
                            //loading body.
                            //$("#page-conf-form #language-page-" + lang_id).find("#body-" + lang_id).text(content);

                            if (bolDashboard === false) {
                               
                                $("#page-conf-form #language-page-" + lang_id).find("#body-" + lang_id).text(content);
                                $("#page-conf-form #language-page-" + lang_id).find("input[name=title-" + lang_id + "]").val(jsonResult[i].PageName);
                            } else if (bolDashboard === true && jsonResult[i].RoleAndField === null) {
                               
                                $("#page-conf-form #language-page-" + lang_id).find("#body-" + lang_id).text(content);
                                $("#page-conf-form #language-page-" + lang_id).find("input[name=title-" + lang_id + "]").val(jsonResult[i].PageName);
                            }

                            if ($('#body-' + lang_id).length > 0 && jsonResult[i].RoleAndField === null) {
                                var editor;
                                initialize_ckeditor_ars("body-", lang_id);
                                $('#bodyrole-null-null-' + lang_id).val(jsonResult[i].Body);
                                $('#titlerole-null-null-' + lang_id).val(jsonResult[i].PageName);
                                $('#page_id-null-null-' + lang_id).val(jsonResult[i].ID);
                                $("#page_id-null-null-" + lang_id).attr('value', jsonResult[i].ID);
                                add_event_for_ckeditor("body-" + lang_id, "#page-conf-form");
                            }

                            if (bolDashboard === true && jsonResult[i].RoleAndField) {
                                var result = $.grep(RoleFieldList, function (e) { return e.ID == jsonResult[i].RoleAndField; });
                                var tempField = result[0].Field;
                                if (result[0].Field == null)
                                    tempField = "null";
                                $('#bodyrole-' + result[0].RoleId + "-" + tempField + "-" + lang_id).val(jsonResult[i].Body);
                                $('#titlerole-' + result[0].RoleId + "-" + tempField + "-" + lang_id).val(jsonResult[i].PageName);
                                $("#page_id-" + result[0].RoleId + "-" + tempField + "-" + lang_id).val(jsonResult[i].ID);
                                $("#page_id-" + result[0].RoleId + "-" + tempField + "-" + lang_id).attr('value', jsonResult[i].ID);
                            }

                            //loading Result Text
                            $('#page-conf-form #language-page-' + lang_id).find('#result-text-' + lang_id).text(jsonResult[i].ResultText);
                            if ($('#result-text-' + lang_id).length > 0 && jsonResult[i].RoleAndField == null) {
                                var editor_result;
                                initialize_ckeditor_ars("result-text-", lang_id);
                                add_event_for_ckeditor("result-text-" + lang_id, "#page-conf-form");
                            }

                            //Open modal of tile information if exists
                            if (jsonResult[i].Summary || jsonResult[i].Categories) {
                                self.find('#tile-information-' + lang_id).prop('checked', true);
                                self.find('#tile-information-container-' + lang_id).removeClass('is-hidden');
                            }
                            else {
                                self.find('#tile-information-' + lang_id).prop('checked', false);
                                self.find('#tile-information-container-' + lang_id).addClass('is-hidden');
                            }

                            //Loading Summary Text (Tile Information)
                            $('#page-conf-form #language-page-' + lang_id).find('#page-summary-' + lang_id).text(jsonResult[i].Summary);
                            if ($('#page-summary-' + lang_id).length > 0 && jsonResult[i].RoleAndField == null) {
                                initialize_ckeditor_ars("page-summary-", lang_id);
                            }

                            //Load Page Categories (Tile Information) by each language tab
                            var tileInformationContainer = self.find('#tile-information-container-' + lang_id).find('.page-categories-container');
                            listingcmsblock_loadpagecategorylistingcheckbox(self, tileInformationContainer, lang_id, jsonResult[i].Categories);

                            $('#page-conf-form #language-page-' + lang_id).find('input[name=organization-id-' + lang_id + ']').val(jsonResult[i].OrganizationId);

                            //Corporate Page
                            if (jsonResult[i].CorporatePage) {
                                //$("#page-conf-form .corporate-page-setting-for-page").removeClass('hide');
                                $("#page-conf-form").find("input[name=corporate-page-" + lang_id + "]").prop('checked', true);
                                $("#page-conf-form #result-text-section-" + lang_id).removeClass("is-hidden");
                                $("#page-conf-form #organization-id-section-" + lang_id).removeClass("is-hidden");
                                $('#page-conf-form').find('.corporate-page-setting-for-page').removeClass('hide');
                            } else {
                                //$("#page-conf-form .corporate-page-setting-for-page").addClass('hide');
                                $("#page-conf-form").find("input[name=corporate-page-" + lang_id + "]").prop('checked', false);
                                $("#page-conf-form #result-text-section-" + lang_id).addClass("is-hidden");
                                $("#page-conf-form #organization-id-section-" + lang_id).addClass("is-hidden");
                                $('#page-conf-form').find('.corporate-page-setting-for-page').addClass('hide');

                            }

                            $('#page-conf-form').find('input[name="display-in-mobile-app"]').prop('checked', jsonResult[i].DisplayInMobileApp);
                            $('#page-conf-form').find('select[name="loading-method"]').val(jsonResult[i].PageLoadingMethod);
                            // Loading meta tags.
                            $(".metatag_items_" + lang_id).empty();
                            if (jsonResult[i].OgUrl != "" && jsonResult[i].OgUrl != null) {
                                load_meta_tags_page(lang_id, 'url', jsonResult[i].OgUrl, self);
                            }
                            if (jsonResult[i].OgTitle != "" && jsonResult[i].OgTitle != null) {
                                load_meta_tags_page(lang_id, 'title', jsonResult[i].OgTitle, self);
                            }
                            if (jsonResult[i].OgDescription != "" && jsonResult[i].OgDescription != null) {
                                load_meta_tags_page(lang_id, 'description', jsonResult[i].OgDescription, self);
                            }
                            if (jsonResult[i].OgSiteName != "" && jsonResult[i].OgSiteName != null) {
                                load_meta_tags_page(lang_id, 'site_name', jsonResult[i].OgSiteName, self);
                            }
                            if (jsonResult[i].OgImage != "" && jsonResult[i].OgImage != null) {
                                load_meta_tags_page(lang_id, 'image', jsonResult[i].OgImage, self);
                            }
                            if (jsonResult[i].MetaKeywords != "" && jsonResult[i].MetaKeywords != null) {
                                load_meta_tags_page(lang_id, 'keywords', jsonResult[i].MetaKeywords, self);
                            }
                            if (jsonResult[i].HTMLTitle != "" && jsonResult[i].HTMLTitle != null) {
                                load_meta_tags_page(lang_id, 'htmlTitle', jsonResult[i].HTMLTitle, self);
                            }
                            if (jsonResult[0].CssClass != null) {
                                $("#page-conf-form").find("input[name=css_class]").val(jsonResult[0].CssClass);
                            }
                            var align = jsonResult[0].AlignTitle;
                            

                            $("#page-conf-form").find("select.align-title").val(align);
                            $("#page-conf-form").find("input[name='align_title']").val(align);


                            $("#page-conf-form").find("input[name=display-print-button]").prop('checked', false);
                            $("#page-conf-form").find('.type-print-presentation').addClass('is-hidden');
                            if (jsonResult[0].DisplayPrintFriendlyButton === true || jsonResult[0].DisplayPrintFriendlyButton === 'true') {
                                $("#page-conf-form").find("input[name=display-print-button]").prop('checked', true);
                                $("#page-conf-form").find('.type-print-presentation').removeClass('is-hidden');
                                if (json.orientationPrintFriendly !== null && json.orientationPrintFriendly !== undefined) {
                                    $("#page-conf-form").find('select[name="orientation-print-version"]').val(json.orientationPrintFriendly);
                                }
                            }

                            $("#page-conf-form").find("input[name=visible_to]").prop('checked', false);
                            if (jsonResult[0].Visibility == 2) {
                                $("#page-conf-form").find("#all_users").prop('checked', true);
                            }
                            if (jsonResult[0].Visibility == 1) {
                                $("#page-conf-form").find("#autenticated_users").prop('checked', true);
                            }
                            if (jsonResult[0].Visibility == 0) {
                                $("#page-conf-form").find("#anonymous_users").prop('checked', true);
                            }


                            if ($('.visibility-per-role select#select-rol-page').length > 0) {
                                if ((jsonResult[0].VisibilityPerRole !== null &&
                                    jsonResult[0].VisibilityPerRole !== undefined &&
                                    jsonResult[0].VisibilityPerRole.trim() !== '') && jsonResult[0].Visibility === 1) {

                                    var value = jsonResult[0].VisibilityPerRole;

                                    if (IS_LLAMAPI_ENABLED === false) {
                                        $('.visibility-per-role select#select-rol-page').val(value);
                                        $('.visibility-per-role').removeClass('hide');

                                    } else {
                                        var arrayValues = value.split(',');


                                        $('.visibility-per-role').removeClass('hide');
                                        var selectorSelect = ".visibility-per-role select#select-rol-page";
                                        
                                        $(selectorSelect).multiselect('unload');
                                        if ($(".visibility-per-role select#select-rol-page").closest('.input-group-select').find('.ms-options-wrap').length > 0) {
                                            $(".visibility-per-role select#select-rol-page").closest('.input-group-select').find('.ms-options-wrap').remove();
                                        }
                                        setTimeout(function () {


                                            $(selectorSelect).multiselect({
                                                'selectAll': true,
                                                'columns': 1,
                                                'showCheckbox': true,
                                                'search': false,
                                                'maxPlaceholderOpts': 1,
                                                texts: {
                                                    placeholder: window.translation.select_options,
                                                    search: window.translation.search,
                                                    selectedOptions: ' ' + window.translation.selected,
                                                    selectAll: window.translation.select_all,
                                                    unselectAll: window.translation.unselect_all
                                                }
                                            });
                                            $(selectorSelect).val(arrayValues);
                                            $(selectorSelect).multiselect('reload');

                                        }, 1000);

                                    }
                                } else {
                                    if (IS_LLAMAPI_ENABLED === false) {
                                        $(selectorSelect).val('');
                                    }
                                    else {

                                        $('.visibility-per-role').addClass('hide');
                                        var selectorSelect = ".visibility-per-role select#select-rol-page";

                                        $(selectorSelect).multiselect('unload');
                                        if ($(".visibility-per-role select#select-rol-page").closest('.input-group-select').find('.ms-options-wrap').length > 0) {
                                            $(".visibility-per-role select#select-rol-page").closest('.input-group-select').find('.ms-options-wrap').remove();
                                        }
                                        setTimeout(function () {


                                            $(selectorSelect).multiselect({
                                                'selectAll': true,
                                                'columns': 1,
                                                'showCheckbox': true,
                                                'search': false,
                                                'maxPlaceholderOpts': 1,
                                                texts: {
                                                    placeholder: window.translation.select_options,
                                                    search: window.translation.search,
                                                    selectedOptions: ' ' + window.translation.selected,
                                                    selectAll: window.translation.select_all,
                                                }
                                            });
                                            $(selectorSelect).val('');
                                            $(selectorSelect).multiselect('reload');

                                        }, 1000);
                                    }
                                }

                            }

                        }
                    }
                    if (system_page === true) {
                        $('#page-advanced-settings select[name="visible_to"] option[value="4"]').hide();
                        $('#page-advanced-settings .visibility-per-role').attr('style', 'display: none !important;');
                    } else {
                        $('#page-advanced-settings select[name="visible_to"] option[value="4"]').show();
                        $('#page-advanced-settings .visibility-per-role').attr('style', 'display:');
                    }
                    if (bolDashboard) {
                        for (var i = 0; i < languajeList.length; i++) {
                            $("#language-page-" + languajeList[i]).find("input[name=title-" + languajeList[i] + "]").val($("#titlerole-null-null-" + languajeList[i]).val());
                            $("#language-page-" + languajeList[i]).find("#body-" + languajeList[i]).text($("#bodyrole-null-null-" + languajeList[i]).val());
                            //CKEDITOR.instances["body-" + languajeList[i]].setData($("#bodyrole-null-null-" + languajeList[i]).val());
                            $("#page_id-" + languajeList[i]).val($("#page_id-null-null-" + languajeList[i]).val());
                            /*$('.hidden_title-' + languajeList[i]).each(function () {
                                $(this).val($("#titlerole-null-null-" + languajeList[i]).val());
                            });*/
                        }
                    }
                    add_event_for_fields_in_modal('#page-conf');
                }

                $("#page-conf input[name='advanced-criteria-input']").val(criteriaRule);
                $("#page-conf input.activator").prop("checked", criteriaRule && criteriaRule != '')
                stdEnableCustomLogic(criteriaRule && criteriaRule != '', $("#page-conf input.activator"));


                 show_hide_page_session_vars_config();
            }).then(function (data, textStatus, jqXHR) {
                if (IS_LLAMAPI_ENABLED !== true) {
                    if (!(pageUrl === '' || pageUrl === 'search')) {
                        setTimeout(function () {
                            $("#page-conf-form textarea").each(function () {
                                var bodyId = $(this).attr("id");
                                if ($("#cke_" + bodyId).length === 0) {
                                    $("#cke_body-" + bodyId).remove();
                                    initialize_ckeditor_ars(bodyId, "");
                                    add_event_for_ckeditor(bodyId, '#page-conf');
                                }
                            });
                        }, 3000);
                    }

                } else {
                    if (!(pageUrl === '')) {
                        setTimeout(function () {
                            $("#page-conf-form textarea").each(function () {
                                var bodyId = $(this).attr("id");
                                if ($("#cke_" + bodyId).length === 0) {
                                    $("#cke_body-" + bodyId).remove();
                                    initialize_ckeditor_ars(bodyId, "");
                                    add_event_for_ckeditor(bodyId, '#page-conf');
                                }
                            });
                        }, 3000);

                    }
                }
            });
        }

        if (IS_LLAMAPI_ENABLED === true) {
            $("#page-conf-form .section-for-mobile-app").addClass('hide');
        } else {
            $("#page-conf-form .section-for-mobile-app").removeClass('hide');
        }

        
        $('#page-conf-form').find("#title_tabs li.tabs-title").on("click", function () {
            $(this).parents(".page-conf-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
        });



        $("#selectbox_field").prop('disabled', true);
        if ($('.visibility-per-role select#select-rol-page').length > 0 || $('.visibility-by-session-vars').length >0) {
            $('select[name="visible_to"]').on('change', function () {
                var value = $(this).val();
                if (value === '1') {
                    $(".visibility-per-role").removeClass('hide');
                } else {
                    $(".visibility-per-role").addClass('hide');
                }
                show_hide_page_session_vars_config();
            });

        }


        $('input[name="display-print-button"]').on('change', function () {
            if ($(this).is(':checked')) {
                $('.type-print-presentation').removeClass('is-hidden');
            } else {
                $('.type-print-presentation').addClass('is-hidden');
            }
        });


        show_hide_page_session_vars_config();
    });

    //Create new page
    $(document).on('click', 'a[data-element-reveal="page-conf"]', function () {
        get_session_Variables(urlSite, '#page-advanced-settings');
        $('#page-conf-form #page-advanced-settings').find('.filter_rules .rule').remove();
        var elementReveal = $(this).data('element-reveal');
        var self = $('#page-conf');
        $('#page-conf-form input[name="new-llamapi-ars-success"]').val("false");

        // Consulting if modal was open from menu modal or page manage modal
        var modal_open_from = $(this).attr('data-modal-from');

        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        //Initialize to validate if exists changes in menu
        $('#' + elementReveal).find('input[name="page_conf_changes"]').val("false");

        //Reset form
        $('#' + elementReveal + ' form')[0].reset();
        $("#page-conf .rollback-link").hide();
        $("#page-conf-form").find("label.error").remove();
        $("#page-conf-form").find(".metatag-item").remove();
        $("#page-conf-form input[type=hidden]:not([name=__RequestVerificationToken]").val("");
        $("#page-conf-form input[type=hidden]:not([name=__RequestVerificationToken]").attr("value", "");
        $("#page-conf-form #page-id").val("true");
        $("#page-conf-form #page-id").attr("value", false);
        $("#page-conf-form #display-in-mobile-app").prop("checked", false);
        $('.visibility-per-role').addClass('hide');
        $('.visibility-by-session-vars').addClass('hide');
        $("#page-conf-form input.display-page-title").prop('checked', false);
        $("#page-conf-form").find("input[name='display-page-title']").val(null);
        $("#page-conf-form").find("input[name='align-title']").val($("#page-conf-form").first("select.align-title").val());


        if (IS_LLAMAPI_ENABLED === true) {
            $("#page-conf-form .section-for-mobile-app").addClass('hide');
        } else {
            $("#page-conf-form .section-for-mobile-app").removeClass('hide');
        }

        //$("#page-conf-form .corporate-page-setting-for-page").addClass('hide');
        
        $("#page-conf-form .keywords").each(function () {
            $("#page-conf-form #page-id").val("true");
        });
        $('#page-conf-form').find('select[name="visible_to"]').find('option[value="3"]').remove();

        //Validating if modal was open from menu item modal
        if (modal_open_from == "menu-item-conf-form") {
            $("#page-conf-form input[name='create_page_from_menu']").val(true);
        } else {
            $("#page-conf-form input[name='create_page_from_menu']").val(false);
        }
        $("#page-conf-form").find('.type-print-presentation').addClass('is-hidden');
        $("#page-conf-form").find("input[name=display-print-button]").prop('checked', false);


        $('li.tabs-title a[data-language-id]').each(function () {
            var langID = $(this).attr('data-language-id');
            $('#result-text-section-' + langID).addClass("is-hidden");
            $('#organization-id-section-' + langID).addClass("is-hidden");
            $('#tile-information-container-' + langID).addClass('is-hidden');
        });


        $("#page-conf-form textarea").each(function () {
            $(this).val("");
            var bodyId = $(this).attr("id");
            if ($("#" + bodyId).length > 0) {

                initialize_ckeditor_ars(bodyId, "");
                add_event_for_ckeditor(bodyId, '#page-conf');
            }
        });

        // Show delete link when page already created.
        $('#' + elementReveal).find('.remove-link.delete').hide();
        $('#' + elementReveal).find('.save-page').parent().parent().removeClass("medium-8");
        $('#' + elementReveal).find('.save-page').parent().parent().addClass("medium-12");

        self.find('input[name="friendly-url"]').removeAttr('readonly');

        //Load Page Categories (Tile Information) by each language tab
        self.find('.tile-information-container').each(function () {
            var tileContainer = $(this);
            var tileInformationContainer = tileContainer.find('.page-categories-container');
            var lang_id = tileContainer.parent().find('input.field-tile-information').attr('data-language-id');

            listingcmsblock_loadpagecategorylistingcheckbox(self, tileInformationContainer, lang_id, null);
        });

        //Display textarea
        self.find('textarea[name*=body]').each(function (index, el) {
            $(this).parents('.row').first().removeClass('hide-custom');
        });

        //Display corporate and content type fields
        self.find('input.field-corporate-page').each(function (index, el) {
            $(this).parents('.row').first().removeClass('hide-custom');
        });

        self.find('.corporate-page-setting-for-page').addClass('hide');

        //Display link show advanced settings
        self.find('a.advanced-link').removeClass('hide-custom');


        $('select[name="visible_to"]').on('change', function () {
            var value = $(this).val();
            if (value === '1') {
                $(".visibility-per-role").removeClass('hide');
            } else {
                $(".visibility-per-role").addClass('hide');
            }
            show_hide_page_session_vars_config();
        });

        $('input[name="display-print-button"]').on('change', function () {
            if ($(this).is(':checked')) {
                $('.type-print-presentation').removeClass('is-hidden');
            } else {
                $('.type-print-presentation').addClass('is-hidden');
            }
        });
             
        $("#page-conf-form").find("input.display-page-title").prop('checked', false);
        $("#page-conf-form").find("input[name='display-page-title']").val(null);
        $("#page-conf-form").find("input[name='align-title']").val($("#page-conf-form").first("select.align-title").val());
        $("#page-conf-form").find("select.align-title").addClass('hide-custom');
       
        $('#page-conf-form').find("#title_tabs li.tabs-title").on("click", function () {
            $(this).parents(".page-conf-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
        });


        add_event_for_fields_in_modal('#page-conf');

    });

    //Change event of select role dropdown
    $(document).on('change', '#selectbox_role, #selectbox_field', function () {
        var pre = "-" + tempRole + "-" + tempField;
        PreRole = tempRole;

        if ($('#selectbox_role').val() != "null") {
            $("#selectbox_field").prop('disabled', false);
        } else {
            $("#selectbox_field").prop('disabled', true);
            $("#selectbox_field").val("null");
        }

        tempRole = $('#selectbox_role').val();
        tempField = $('#selectbox_field').val();

        for (var i = 0; i < languajeList.length; i++) {
            var langID = languajeList[i];
            var textPre = pre + "-" + langID;

            if (PreRole == "null") {
                $("#titlerole" + textPre).val($("#title-" + langID).val());
            }

            $("#bodyrole" + textPre).val(CKEDITOR.instances["body-" + langID].getData());
            $("#title-" + langID).val($("#titlerole-null-null-" + langID).val());
            
            CKEDITOR.instances["body-" + langID].setData($("#bodyrole-" + tempRole + "-" + tempField + "-" + langID).val());
            $("#body-" + langID).text($("#bodyrole-" + tempRole + "-" + tempField + "-" + langID).val());

        };

        if (tempRole != "null") {
            $(".title-field").prop('disabled', true);
        } else {
            $(".title-field").prop('disabled', false);
        }
    });

    //Change event of friendly url field
    $(document).on('change', '#page-conf-form input.title-field.default-title-page', function () {
        var self = $(this);
        let pageName = self.val();

        let newFriendlyUrl = '/' + pageName.replaceAll(' ', '-');
        newFriendlyUrl = newFriendlyUrl.replaceAll('*', '-');
        newFriendlyUrl = newFriendlyUrl.replaceAll('&', '-');
        newFriendlyUrl = newFriendlyUrl.replaceAll('[', '-');
        newFriendlyUrl = newFriendlyUrl.replaceAll(']', '-');
        newFriendlyUrl = newFriendlyUrl.replaceAll('(', '-');
        newFriendlyUrl = newFriendlyUrl.replaceAll(')', '-');
        newFriendlyUrl = newFriendlyUrl.toLowerCase();
        let isUpdate = false;

        if ($('#page-conf-form').find('input[name="is_update_page"]').length > 0) {
            isUpdate = $('#page-conf-form').find('input[name="is_update_page"]').val() === 'true';
        }

        let found = false;
        if (($('#page-conf-form').find('input[name="friendly-url"]').attr('readonly') !== undefined) || isUpdate === true) {
            console.log("Can not change the url");
        } else {
            $('#page-conf-form').find('input[name="friendly-url"]').val(newFriendlyUrl);
            $('#page-conf-form').find('input[name="friendly-url"]').trigger('change');

        }
    });

    $(document).on('change', '#page-conf-form input[name="friendly-url"]', function () {
        var self = $(this);
        var pageUrl = self.val();

        $.ajax({
            method: 'POST',
            url: urlSite + 'admin/GetIfPageIsLinked',
            data: { pageUrl: pageUrl },
            beforeSend: function () {
                $('#page-conf-form').find('.friendly-url-row').find('.icon-div').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (jsonResult) {
                if (jsonResult.status == 'ok') {
                    var pageIsLinked = jsonResult.IsLinked;
                    var finalUrl = jsonResult.FinalUrl;
                    if (finalUrl != pageUrl) {
                        $('#page-conf-form input[name="friendly-url"]').val(finalUrl);
                    }
                    //Include or remove option 'Inherit to menu item' in 'visible to' field
                    if (pageIsLinked) {
                        var optionLinked = '<option value="3">Inherit from menu item</option>';

                        //Include it if not exists in select
                        var optionLinkedLenght = $('#page-conf-form').find('select[name="visible_to"]').find('option[value="3"]').length;
                        if (optionLinkedLenght === 0) {
                            $('#page-conf-form').find('select[name="visible_to"]').prepend(optionLinked);
                        }

                        //Select option of 'Inherit to menu item'
                        $('#page-conf-form').find('select[name="visible_to"]').val(3);
                    }
                    else {
                        $('#page-conf-form').find('select[name="visible_to"]').find('option[value="3"]').remove();
                    }
                }
                else {
                    Swal.fire({
                        title: window.translation.error,
                        text: jsonResult.error,
                        icon: "error",
                        closeOnConfirm: true
                    });
                }
            }

            $('#page-conf-form').find('.friendly-url-row').find('.icon-div').hide();
        });
    });

    $(document).on('change', '#page-conf-form input.display-page-title', function () {
        if ($(this).is(':checked')) {
            $('#page-conf-form input.display-page-title').prop('checked', true);
            $('#page-conf-form input[name="display-page-title"]').val(true);
            $('#page-conf-form select.align-title').removeClass('hide-custom');
        } else {
            $('#page-conf-form input.display-page-title').prop('checked', false);
            $('#page-conf-form input[name="display-page-title"]').val(null);
            $('#page-conf-form select.align-title').addClass('hide-custom');
        }
    });

    $(document).on('change', '#page-conf-form select.align-title', function () {
        $("#page-conf-form").find("input[name='align_title']").val($(this).val());
        $("#page-conf-form").find("select.align-title").val($(this).val());
    });

    $(document).on('click', '#page-advanced-settings button.add_rule', function () {
        var fieldToFilter = $('#page-advanced-settings select[name="field_to_filter"]').val();
        var friendlyFieldName = $('#page-advanced-settings select[name="field_to_filter"] option:selected').text();
        var filter_value = $('#page-advanced-settings input[name="filter_value"]').val();
        var operator = $('#page-advanced-settings select[name="filter_operator"]').val();
        if (fieldToFilter === null || fieldToFilter === '') {
            var textError = window.translation.please_choose_at_least_a_field;
            var error = '<span class="error">' + textError + '</span>';
            if ($('#page-advanced-settings .rule_filter span.error').length > 0) {
                $('#page-advanced-settings .rule_filter span.error').first().text(textError);
            } else {
                $('#page-advanced-settings .rule_filter').append(error);
            }
        } else {
            addRuleFilterMPageSetting(fieldToFilter, friendlyFieldName, filter_value, operator);
        }
        $(this).addClass('event-applied');
        return false;
    });

    $(document).on('click', '#page-advanced-settings .delete_rule a', function () {
        if ($('#page-advanced-settings .filter_rules .rule').length === 1) {
            $('#page-advanced-settings .without_rules').removeClass('hide-custom');
        }
        $(this).parent().parent().remove();
        $('#page-advanced-settings input[name="pending-changes"]').val('true').trigger('change');
        $('#page-advanced-settings .filter_rules .rule').each(function (index) {
            $(this).find('.field_order').text((index + 1) + '.');
        });
        return false;
    });
   
}

function events_std_visibility_per_role_block(){
    $('select[name="std_visible_to"]').on('change', function () {

        var value = $(this).val();

        if (value == '1') {
            $(this).parents('.std-visibility-block-rules').find('.std-visible-per-role').removeClass('hide');
            $(this).parents('.std-visibility-block-rules').find('.std-by-session-vars').addClass('hide');
            $(this).parents('.std-visibility-block-rules').find('a.ms-selectall').trigger('click');
        }
        else if (value == '4') {
            $(this).parents('.std-visibility-block-rules').find('.std-by-session-vars').removeClass('hide');
            $(this).parents('.std-visibility-block-rules').find('.std-by-session-vars').show();
            $(this).parents('.std-visibility-block-rules').find('.std-visible-per-role').addClass('hide');

        } else {
            $(this).parents('.std-visibility-block-rules').find('.std-visible-per-role').addClass('hide');
            $(this).parents('.std-visibility-block-rules').find('.std-by-session-vars').addClass('hide');
        }

        $(this).parents('.reveal').find('input[name="pending-changes"]').val('true');
    });

    if ($('button.std-add_rule').length > 0) {
        $('button.std-add_rule').each(function () {

            if (!$(this).hasClass('event-applied')) {
                $(this).click(function () {
                    var mainSection = $(this).parents('.std-visibility-block-rules');

                    var editAction = mainSection.find('input.std-filter_edit_session').prop('checked');

                    var innerSection = !editAction ? '.visible-rules' : '.editable-rules';

                    var currentSection = mainSection.find(innerSection);
                    var fieldToFilter = mainSection.find('select[name="std-field_to_filter"]').val();
                    var friendlyFieldName = mainSection.find('select[name="std-field_to_filter"] option:selected').text();
                    var filter_value = mainSection.find('input[name="std-filter_value"]').val();
                    var operator = mainSection.find('select[name="std-filter_operator"]').val();
                    if (fieldToFilter === null || fieldToFilter === '') {
                        var textError = window.translation.please_choose_at_least_a_field;
                        var error = '<span class="error">' + textError + '</span>';
                        if (mainSection.find('.rule_filter span.error').length > 0) {
                            mainSection.find('.rule_filter span.error').first().text(textError);
                        } else {
                            mainSection.find('.rule_filter').append(error);
                        }
                    } else {
                        stdAddRuleFilterMPageSetting(mainSection, fieldToFilter, friendlyFieldName, filter_value, operator, innerSection);
                    }
                    $(this).addClass('event-applied');
                    $(this).parents('.reveal').find('input[name="pending-changes"]').val('true');
                    return false;
                });
            }
        });
    }
    $(document).on('click', '.std-delete_rule a', function () {
        var dataContext = $(this).data('context');
        var currentSection = $(this).parents('.std-visibility-block-rules');
        if (currentSection.find(dataContext +' .rule').length === 1) {
            currentSection.find(dataContext + ' .without_rules').removeClass('hide-custom');
        }
        $(this).parent().parent().remove();
        currentSection.find(dataContext +' .std-filter_rules .rule').each(function (index) {
            $(this).find('.field_order').text((index + 1) + '.');
        });

        if (currentSection.find('.std-filter_rules .rule').length == 0) {
            var modalReveal = '#' + currentSection.parents('.reveal').attr('id');
            modalReveal.find('input[name="pending-changes"]').val('true');
            std_restart_rules(modalReveal, dataContext);
        }
        return false;
    });

    $('select[name="std_visible_to"]').val('2');
    $('select[name="std_visible_to"]').trigger('change');

}


function adv_checkbox_rules() {
    $('.advanced-criteria-section input[type="checkbox"].activator').on('change', function () {
        var status = $(this).prop('checked');
        stdEnableCustomLogic(status, $(this));

    })
}
function stdEnableCustomLogic(status, currentCheck) {

    var innerSection = currentCheck.parents('.advanced-criteria-section').first();
    if (status) {
        innerSection.find('.custom-logic-section-input').removeClass('hide');
        innerSection.parents('.rules-section').first().find('.rule .operation').html('&nbsp;');
    }
    else {
        innerSection.find('.custom-logic-section-input').addClass('hide');
        innerSection.find('.custom-logic-section-input').find('input[type="text"]').val('');
        innerSection.parents('.rules-section').first().find('.rule .operation').html('AND');
    }
}
function getAuthorizedForBlock(currentSection) {
    var result = {};
    var section = $(currentSection);
    if (section.length > 0) {
        result.authorizedFor = section.find('select[name="std_visible_to"]').val();
        result.authorizedForRole = [];
        result.authorizedSsessionVariables = {};
        if (result.authorizedFor == '1') {
            result.authorizedForRole = section.find('select[name="std-select-rol"]').val();
            if (section.find('select[name="std-select-rol"] option').length == result.authorizedForRole.length) {
                result.authorizedForRole = 'all';
            }
        }
        else if (result.authorizedFor == '4') {
            var ruleList = [];
            var ruleListEdit = [];
            var filterRules = {
                criteria: section.find('input[name="std-advanced-criteria-input"]').val(),
                filters: [],
                criteriaEdit: section.find('input[name="std-advanced-criteria-edit-input"]').val(),
                filtersEdit: []
            }
            section.find('.visible-rules .std-filter_rules .rule').each(function (index) {
                var rule = $(this);
                var field = rule.data('field');
                var operator = rule.data('operator');
                var ruleValue = rule.data('value');
                var typeField = '';
                var friendlyField = rule.find('.field_rule').first().text();
                ruleList.push({
                    fieldId: index + 1,
                    field: field,
                    typeField: typeField,
                    operator: operator,
                    comparisonValue: ruleValue,
                    friendlyFieldName: friendlyField,
                });
            });
            filterRules.filters = ruleList;

            section.find('.editable-rules .std-filter_rules .rule').each(function (index) {
                var rule = $(this);
                var field = rule.data('field');
                var operator = rule.data('operator');
                var ruleValue = rule.data('value');
                var typeField = '';
                var friendlyField = rule.find('.field_rule').first().text();
                ruleListEdit.push({
                    fieldId: index + 1,
                    field: field,
                    typeField: typeField,
                    operator: operator,
                    comparisonValue: ruleValue,
                    friendlyFieldName: friendlyField,
                });
            });
            filterRules.filtersEdit = ruleListEdit;

            if (ruleList.length > 0 || ruleListEdit.length > 0) {
                result.authorizedSsessionVariables = filterRules;
            }
            else {
                result.authorizedSsessionVariables = null;
            }
        }
        result.authorizedEditable = section.find('input.std-editable-cms-imp').prop('checked');
    }
    return result;
    
}

function loadAuthorizedForBlock(currentSection, data) {
    if (data && data.authorizedFor != undefined) {
        var section = $(currentSection);
        if (section.length > 0) {
            section.find('select[name="std_visible_to"]').val(data.authorizedFor);
            section.find('select[name="std_visible_to"]').trigger('change');
            section.find('input.std-editable-cms-imp').prop('checked', data.authorizedEditable);
            if (data.authorizedFor == '1') {
                section.find('select[name="std_visible_to"]').trigger('change');
                if (data.authorizedForRole != 'all') {
                    load_ms_adv(currentSection + ' select[name="std-select-rol"]', data.authorizedForRole);
                }
                else {       
                    load_ms_adv(currentSection + ' select[name="std-select-rol"]', '');
                    setTimeout(function () {
                        section.find('a.ms-selectall').trigger('click');
                    }, 1200);
                }
                
            }
            else if (data.authorizedFor == '4') {
                //here
                if (data.authorizedSsessionVariables) {
                    var customFilters = data.authorizedSsessionVariables;

                    section.find('.filter_rules .rule').remove();
                    if (customFilters.criteria != null && customFilters.criteria != '') {
                        section.find('input[name="std-advanced-criteria-input"]').val(customFilters.criteria);

                        section.find('input[name="std-advanced-criteria-input"]').parents('.advanced-criteria-section').first().find('.custom-logic-section-input').removeClass('hide');
                        section.find('input[name="std-advanced-criteria-input"]').parents('.advanced-criteria-section').first().parents('.rules-section').first().find('.rule .operation').html('&nbsp;');
                        section.find('input[name="std-advanced-criteria-input"]').parents('.advanced-criteria-section').first().parents('.rules-section').first().find('.activator').prop('checked', true);
                    }
                    else {
                        section.find('input[name="std-advanced-criteria-input"]').parents('.advanced-criteria-section').first().find('input[name="std-advanced-criteria-input"]').val('');
                        section.find('input[name="std-advanced-criteria-input"]').parents('.advanced-criteria-section').first().find('.custom-logic-section-input').addClass('hide');
                        section.find('input[name="std-advanced-criteria-input"]').parents('.advanced-criteria-section').first().parents('.rules-section').first().find('.rule .operation').html('AND');
                        section.find('input[name="std-advanced-criteria-input"]').parents('.advanced-criteria-section').first().parents('.rules-section').first().find('.activator').prop('checked', false);
                    }
                    if (customFilters.criteriaEdit != null && customFilters.criteriaEdit!='') {
                        section.find('input[name="std-advanced-criteria-edit-input"]').val(customFilters.criteriaEdit);
                        section.find('input[name="std-advanced-criteria-edit-input"]').parents('.advanced-criteria-section').first().find('.custom-logic-section-input').removeClass('hide');
                        section.find('input[name="std-advanced-criteria-edit-input"]').parents('.advanced-criteria-section').first().parents('.rules-section').first().find('.rule .operation').html('&nbsp;');
                        section.find('input[name="std-advanced-criteria-edit-input"]').parents('.advanced-criteria-section').first().parents('.rules-section').first().find('.activator').prop('checked', true);
                    }
                    else {
                        section.find('input[name="std-advanced-criteria-edit-input"]').val('');

                        section.find('input[name="std-advanced-criteria-edit-input"]').parents('.advanced-criteria-section').first().find('.custom-logic-section-input').addClass('hide');
                        section.find('input[name="std-advanced-criteria-edit-input"]').parents('.advanced-criteria-section').first().parents('.rules-section').first().find('.rule .operation').html('AND');
                        section.find('input[name="std-advanced-criteria-edit-input"]').parents('.advanced-criteria-section').first().parents('.rules-section').first().find('.activator').prop('checked', false);
                    }

                    if (customFilters.filters && customFilters.filters.length > 0) {
                        section.find('.visible-rules .without_rules').addClass('hide');
                        var filtersS = customFilters.filters;
                        try {
                            filtersS = JSON.parse(customFilters.filters);
                        } catch (e) {   
                        }
                        filtersS.forEach(function (item) {
                            stdAddRuleFilterMPageSetting(section, item.field, item.friendlyFieldName, item.comparisonValue, item.operator, '.visible-rules');
                        });
                    }

                    if (customFilters.filtersEdit && customFilters.filtersEdit.length > 0) {
                        section.find('.editable-rules .without_rules').addClass('hide');

                        var filtersS = customFilters.filtersEdit;
                        try {
                            filtersS = JSON.parse(customFilters.filtersEdit);
                        } catch (e) {
                        }
                        filtersS.forEach(function (item) {
                            stdAddRuleFilterMPageSetting(section, item.field, item.friendlyFieldName, item.comparisonValue, item.operator, '.editable-rules');
                        });
                    }
                }
            }
        }
    }

}
function stdAddRuleFilterMPageSetting(currentSection, fieldToFilter, friendlyFieldName, filter_value, operator, innerSection) {
    if (!innerSection) {
        innerSection = '.visible-rules';
    }
    currentSection.find('.std-rule_filter span.error').remove();
    var ruleQuantity = currentSection.find(innerSection + ' .std-filter_rules .rule').length;
    var value_rule = filter_value === '' ? '<span class="empty">Empty</span>' : filter_value;

    var operatorText = currentSection.find('select[name="std-filter_operator"] option[value="' + operator + '"]').text();
    if (operatorText === "") {
        operatorText = operator;
    }

    //var rule = '<div class="rule columns" data-field="' + fieldToFilter + '" data-operator="' + operator + '"  data-value="' + filter_value + '">'
    //    + '<div class="field_order columns small-1">' + (ruleQuantity + 1) + '.' + '</div>'
    //    + '<div class="field_rule columns small-3">' + friendlyFieldName + '</div>'
    //    + '<div class="operator_rule columns small-3">' + operatorText + '</div>'
    //    + '<div class="value_rule columns small-3">' + value_rule + '</div>'
    //    + '<div class="columns small-1 operation">AND</div>'
    //    + '<div class="std-delete_rule  columns small-1"><a href="#" aria-label="delete rule" data-context="' + innerSection +'"></a></div>'
    //    + '<div/>';
    var andText = currentSection.find(innerSection).find('input[type="checkbox"].activator').is(":checked");
    var rule = '<div class="rule columns" data-field="' + fieldToFilter + '" data-operator="' + operator + '"  data-value="' + filter_value + '">'
        + '<div class="field_order columns small-1">' + (ruleQuantity + 1) + '.' + '</div>'

        + '<div class="columns small-8">'
            + '<div class="row">'
                + '<div class="field_rule columns small-12" style="text-align:left !important;">' + friendlyFieldName + '</div>'
                + '<div class="operator_rule columns small-12" style="text-align:left !important; padding-left: 15px;">' + operatorText + '</div>'
                + '<div class="value_rule columns small-12" style="text-align:left !important;">' + value_rule + '</div>'
            + '</div>'
        + '</div>'

        + '<div class="columns small-2 operation">' + (andText ? '&nbsp;' : 'AND')+'</div>'
        + '<div class="std-delete_rule  columns small-1"><a href="#" aria-label="delete rule" data-context="' + innerSection + '"></a></div>'
        + '<div/>';


    // adding new rule    
    currentSection.find(innerSection + ' .without_rules').addClass('hide-custom');
    currentSection.find(innerSection + ' .std-filter_rules').append(rule);
    currentSection.find('input[name="std-filter_value"]').val('');
}

function std_restart_rules(modalReveal, dataContext) {
    if (!dataContext || dataContext == '') {
        dataContext = '';
    }
    else {
        dataContext = ' ' + dataContext;
    }
    $(modalReveal + dataContext + ' span.error').remove();
    $(modalReveal + dataContext + ' .std-filter_rules .rule').remove();
    $(modalReveal + dataContext + ' .without_rules').removeClass('hide-custom'); 
}

function std_visibility_per_role_block(modalReveal) {
    events_std_visibility_per_role_block();
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    get_session_Variables(urlSite, modalReveal, 'std-');

    std_restart_rules(modalReveal);
    if (window.menuItemsInfo && window.menuItemsInfo.sessionVariables) {
        $(modalReveal + ' select[name="std_field_to_filter"] option').remove();
        var optionsSessions = '<option value ="">' + window.translation.select_a_variable + '</option>';
        var itemsToAutoComplete = [];
        itemsToAutoComplete.push('s:currentUserID');
        itemsToAutoComplete.push('s:currentContactAccountID');
        itemsToAutoComplete.push("s:currentBrowserSessionID");
        if (!window.is_llamapi) {
            itemsToAutoComplete.push('s:currentAccountID');
        }

        window.menuItemsInfo.sessionVariables.forEach(function (item) {
            optionsSessions += '<option value ="' + item.label + '">' + item.label + '</option>';
            itemsToAutoComplete.push(item.label);
        });
        $(modalReveal + ' select[name="std_field_to_filter"]').append(optionsSessions);
        $(modalReveal + ' input[name="std_filter_value"]').autocomplete({
            source: itemsToAutoComplete,
        });
    }
}
function show_hide_page_session_vars_config(){
    let visible_to = $('#page-conf-form #page-advanced-settings select[name="visible_to"]').val();
    if (visible_to === '4') {
        $("#page-conf-form #page-advanced-settings .visibility-by-session-vars").removeClass('hide');
    } else {
        $("#page-conf-form #page-advanced-settings .visibility-by-session-vars").addClass('hide');
    }
}


function get_session_Variables(urlSite, sectionSelector, use_std_prefix){

    if (!use_std_prefix) {
        use_std_prefix = '';
    }
    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetSessionVariables",
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        window.Result = jsonResult;
        if (window.Result.sessionVariables) {
            $(sectionSelector).find('select[name="' + use_std_prefix + 'field_to_filter"] option').remove();
            var optionsSessions = '<option value ="">' + window.translation.select_a_variable +'</option>';
            var itemsToAutoComplete = [];
            itemsToAutoComplete.push('s:currentUserID');
            itemsToAutoComplete.push('s:currentContactAccountID');
            if (!window.is_llamapi) {
                itemsToAutoComplete.push('s:currentAccountID');
            }
            itemsToAutoComplete.push("s:currentBrowserSessionID");
            window.Result.sessionVariables.forEach(function (item) {
                optionsSessions += '<option value ="' + item.label + '">' + item.label + '</option>';
                itemsToAutoComplete.push(item.label);
            });
            $(sectionSelector).find('select[name="' + use_std_prefix + 'field_to_filter"]').append(optionsSessions);
            $(sectionSelector).find('input[name="' + use_std_prefix + 'filter_value"]').autocomplete({
                source: itemsToAutoComplete,
            });
        }
        
    });
}

function delete_block() {
    if (!is_backend_page()) return;

    $(document).on("click", "form .delete_block", function () {
        var blockId = $(this).parents("form").find("input[name='block_id']").val();
        var datareveal = $(this).parents(".reveal").attr("id");
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        if (datareveal == "blocks-slider-conf") {
            blockId = $(this).parents("form").find("input[name='slider_block_id']").val();
        }
        else if (datareveal == "blocks-image-configuration") {
            blockId = $(this).parents("form").find("input[name='image_block_id']").val();
        }

        Swal.fire({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_block,
            icon: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false

        }).then(function (result) {
            if (result.isConfirmed) {
                if (blockId !== null && blockId !== 0) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/DeleteBlock",
                        data: { blockID: blockId.toString() },
                        beforeSend: function () {
                            $(this).parents(".reveal").find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status.toString() === "200") {

                            Swal.fire({
                                title: window.translation.success,
                                text: jsonResult.message,
                                icon: "success",
                                closeOnConfirm: true

                            }).then(function (result2) {
                                $('#' + datareveal).foundation('close');
                                window.location.reload();
                            });

                            
                        } else {

                            Swal.fire({
                                title: window.translation.error,
                                text: jsonResult.message,
                                icon: "error",
                                closeOnConfirm: true

                            }).then(function (result2) {
                                $('#' + datareveal).foundation('close');
                                window.location.reload();

                            });
                        }
                    });
                }

            }
        });

    });
}

function delete_block_image() {
    if (!is_backend_page()) return;

    $('.backend-page').on('click', 'a.delete_image', function () {
        var image_field = $(this).attr('data-image');
        var parent = $(this).parent('.remove_image');
        var parentForm = $(this).parents('form');
        var image_field_to_delete = image_field;

        $(this).siblings(".edit_image").remove();

        parentForm.find('#' + image_field).val('');
        parentForm.find('#' + image_field_to_delete + '_deleted').val('true');
        parentForm.find('#' + image_field).parents('.ezdz-dropzone').removeClass('ezdz-accept');
        parentForm.find('#' + image_field).parents('.ezdz-dropzone').find('img').remove();
        parentForm.find('#' + image_field).parents('.ezdz-dropzone').find('div').append('Add a picture / Drop a picture');

        $(this).siblings(".edit_image").remove();
        $(this).remove();
        if (!parent.hasClass('is-hidden')) {
            parent.addClass('is-hidden');
        }
        return false;
    });
}

function edit_meta_tag() {
    if (!is_backend_page()) return;

    $('.backend-page').on('click', 'a.edit', function () {
        var metatag_item = $(this).closest('.metatag-item');
        var parent = $(this).parent();
        metatag_item.find('.og_content_item').attr('readonly', false);
        parent.html('<a class="save"></a>');
    });
}

function get_ckeditor_file() {


    if ($('#ckeditor-file-manager').length > 0) {

        var funcNum = '1';
        $('.wysiwyg').on('click', 'img', function () {
            var fileUrl = $(this).attr('title');
            funcNum = $('#ckEditorFuncNum').val();
            window.opener.CKEDITOR.tools.callFunction(funcNum, fileUrl);
            window.close();
        });

        $('.image-browse').on('click', 'img, a', function () {
            var imgUrl = $(this).attr('title');
            var blockId = $(this).attr('data-block-id');
            var lang = $(this).attr('data-lang');
            window.opener.$('#' + blockId + ' input[name="image_' + lang + '"]').ezdz('preview', imgUrl);
            window.opener.$('#' + blockId + ' input[name="image_url_' + lang + '"]').val(imgUrl);

            var id = 'image_' + lang;
            var parent = window.opener.$('#' + blockId + ' input[name="image_' + lang + '"]').parent(".ezdz-dropzone");
            var remove_image = parent.siblings('p').find('.remove_image').first();
            var delete_image_link = '<a data-image="' + id + '" class="delete_image">Delete</a>';
            // Put link below image preview.
            if (remove_image.find('.delete_image').length == 0) {
                remove_image.append(delete_image_link);
                remove_image.removeClass("is-hidden");
            }
            window.close();
        });
        $('.slide-browse').on('click', 'img, a', function () {
            var imgUrl = $(this).attr('title');
            var blockId = $(this).attr('data-block-id');
            var lang = $(this).attr('data-lang');
            var slide_id = $(this).attr('data-slide-id');
            window.opener.$('#' + blockId + ' input[name="slide_' + slide_id + '_' + lang + '"]').ezdz('preview', imgUrl);
            window.opener.$('#' + blockId + ' input[name="image_slide_' + slide_id + '_url_' + lang + '"]').val(imgUrl);

            var id = 'slide_' + slide_id + '_' + lang;
            var parent = window.opener.$('#' + blockId + ' input[name="slide_' + slide_id + '_' + lang + '"]').parent(".ezdz-dropzone");
            var remove_image = parent.siblings('p').find('.remove_image').first();
            var delete_image_link = '<a data-image="' + id + '" class="delete_image">Delete</a>';
            // Put link below image preview.
            if (remove_image.find('.delete_image').length == 0) {
                remove_image.append(delete_image_link);
                remove_image.removeClass("is-hidden");
            }
            window.close();
        });
        $('.ckeditor-file .thumbnail img').hover(function () {
            $(this).css('cursor', 'pointer');
        });


        $('body#ckeditor-file-manager').on('click', 'a#upload_file_btn', function () {
            upload_ckeditor_file();
        });
    }
}

function initiate_dragula() {

    if (!is_backend_page()) return;

    var firstWeight;
    var countRegions = 0;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    /*
		Important Notes:

		1 - In the array "regions" must be included the id of each region, remember this ID must be the div parent of region. Please maintain a standard name of the IDs
			with the format "region-[Theme Name]-[Region Name]". Ex. region-default-header. NOTE: Please do not repeat regions "sidebar" and "main-content" 
			because this regions are using in most of the themes.
		2 - Each region must have the class "container" in the HTML. Ex. <div id="region-default-header" class="container"></div>
		3 - In the array "orientation" edit to include the orientation of block inside the region. vertical (if the blocks will be stacked vertically) and
			horizontal (if the blocks will be stacked horizontally)
	*/

    if (window.TemplateRegions !== undefined && window.OrientationRegions !== undefined &&
        window.TemplateRegions !== null && window.OrientationRegions !== null) {
        TemplateRegions.forEach(function (region) {
            dragula(
                [document.getElementById(region)],
                {
                    moves: function (el, container, handle) {
                        return handle.className === 'move';
                    },
                    direction: OrientationRegions[countRegions]
                })
                .on('drag', function (el) {
                    firstWeight = ($(el).parents('.container').find('div').first().data('block-weight')) ? $(el).parents('.container').find('div').first().data('block-weight') : 0;

                    //Add class to parent to identify region where block can be moved
                    $(el).parents('.container').addClass('region-selectable');
                }).on('drop', function (el) {
                    var itemsContainer = $(el).parents('.container').find('div.blockContainer');
                    var objectUpdate = {};
                    objectUpdate['items'] = [];

                    //Assign new weights
                    itemsContainer.each(function () {
                        var item = $(this);
                        var itemBlockId = item.data('block-id');
                        var itemBlockWeight = item.data('block-weight');
                        var row = {};

                        row['id'] = itemBlockId;
                        row['weight'] = firstWeight;
                        objectUpdate["items"].push(row);

                        item.attr('data-block-weight', parseInt(firstWeight));

                        firstWeight = parseInt(firstWeight) + 1;
                    });

                    objectUpdate['length'] = objectUpdate['items'].length;

                    //Service to update
                    if (objectUpdate['items'].length > 0) {
                        $.ajax({
                            method: "POST",
                            url: urlSite + "admin/UpdateBlockWeight",
                            data: objectUpdate,
                            beforeSend: function () {
                                $('.loading-drag-drop').css('display', 'block');
                            }
                        }).done(function (data) {
                            var jsonResult = JSON.parse(data);

                            $('.loading-drag-drop').css('display', 'none');
                            $.growl.notice({ title: jsonResult.title, message: jsonResult.message, duration: 5000 });
                        });
                    }
                }).on('dragend', function (el) {
                    //Remove class to parent to identify region where block can be moved
                    $(el).parents('.container').removeClass('region-selectable');
                });
            countRegions = countRegions + 1;
        });
    }
}

function initiate_dragula_ars_configuration_page() {
    if (!is_backend_page()) return;
    if ($('form#ars-page-conf-form').length !== 0) {
        dragula(
            [document.getElementById('page-ars-region-configuration')],
            {
                moves: function (el, container, handle) {
                    return handle.className === 'move';
                },
                direction: 'vertical'
            })
            .on('drag', function (el) {
            }).on('drop', function (el) {
                var height = 0;
                var blocksPage = $(el).parents('.container').find('div.blockContainer');

                blocksPage.each(function () {
                    var element = $(this);
                    var elementId = element.data('element-id');

                    //Assign new weigths
                    //_assign_value_local_storage('json-ars-data', 'weight', height, elementId, false);
                    _assign_value_session_storage('json-ars-data', 'weight', height, elementId, false);

                    height = height + 1;
                });
            }).on('dragend', function (el) {
                $(".ars_block").removeClass("moveblock");
            });
    }
}

function populate_link_to_edit_page() {
    if (!is_backend_page()) return;

    if ($("#main-content .config-manager-page").length > 0) {
        var link_page = $("#main-content .config-manager-page").first();
        if ($(".sticky-container .title-bar-left ul.manage").length > 0) {
            // Showing link if pages isn't ars type.
            if ($("body .ars-page").length == 0) {
                link_page.text("Edit this page");
                link_page.removeClass('config-manager-page');
                link_page.addClass('edit-this-page');


                $(".sticky-container .title-bar-left ul.manage").append('<li class="current_page"></li>');
                link_page.appendTo(".sticky-container .title-bar-left ul li.current_page");
            }
        }
    }
}

function radio_button_change() {
    if (!is_backend_page()) return;


    $('.backend-page').on('change', '#menu-advanced-settings input[type=radio]', function () {
        var name = $('#menu-advanced-settings input[type=radio]:checked').attr('id');
        switch (name) {
            case 'visibility_2':
            case 'visibility_1':
                $('#exception_url_container').removeClass('is-hidden');
                break;
            case 'visibility_0':
                $('#exception_url_container').addClass('is-hidden');
                $('#exception_url_container').val('');
                break;
        }
    });
    $('.backend-page').on('change', '#basic-search-advanced-settings input[name="visible_bsearch__to"]', function () {
        var name = $('input[name="visible_bsearch__to"]:checked').attr('id');
        switch (name) {
            case 'visibility_bsearch_2':
            case 'visibility_bsearch_1':
                $('#exception_url_container_bsearch').removeClass('is-hidden');
                break;
            case 'visibility_bsearch_0':
                $('#exception_url_container_bsearch').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '#advanced-search-advanced-settings input[name="visible_asearch__to"]', function () {
        var name = $('input[name="visible_asearch__to"]:checked').attr('id');
        switch (name) {
            case 'visibility_asearch_2':
            case 'visibility_asearch_1':
                $('#exception_url_container_asearch').removeClass('is-hidden');
                break;
            case 'visibility_asearch_0':
                $('#exception_url_container_asearch').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '#blocks-wysiwyg-conf input[type=radio]', function () {
        var name = $('#blocks-wysiwyg-conf input[type=radio]:checked').attr('id');
        switch (name) {
            case 'visibility_wysiwyg_2':
            case 'visibility_wysiwyg_1':
                $('#wysiwyg_exception_url_container').removeClass('is-hidden');
                break;
            case 'visibility_wysiwyg_0':
                $('#wysiwyg_exception_url_container').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '#rss-block-advanced-settings input[name="visible_rss__to"]', function () {
        var name = $('input[name="visible_rss__to"]:checked').attr('id');
        switch (name) {
            case 'visibility_rss_2':
            case 'visibility_rss_1':
                $('#exception_url_container_rss').removeClass('is-hidden');
                break;
            case 'visibility_rss_0':
                $('#exception_url_container_rss').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '#slider-advanced-settings input[name="slider_visible_to"]', function () {
        var name = $('input[name="slider_visible_to"]:checked').attr('id');
        switch (name) {
            case 'slider_visibility_2':
            case 'slider_visibility_1':
                $('#slider_exception_url_container').removeClass('is-hidden');
                break;
            case 'slider_visibility_0':
                $('#slider_exception_url_container').addClass('is-hidden');
                break;
        }
    });

    $('.backend-page').on('change', '#image-advanced-settings input[name="image_visible_to"]', function () {
        var name = $('input[name="image_visible_to"]:checked').attr('id');
        switch (name) {
            case 'image_visibility_2':
            case 'image_visibility_1':
                $('#image_exception_url_container').removeClass('is-hidden');
                break;
            case 'image_visibility_0':
                $('#image_exception_url_container').addClass('is-hidden');
                break;
        }
    });

    $('.backend-page').on('change', '#corporate-image-advanced-settings input[name="corporate_image_visible_to"]', function () {
        var name = $('input[name="corporate_image_visible_to"]:checked').attr('id');
        switch (name) {
            case 'corporate_image_visibility_2':
            case 'corporate_image_visibility_1':
                $('#corporate_image_exception_url_container').removeClass('is-hidden');
                break;
            case 'corporate_image_visibility_0':
                $('#corporate_image_exception_url_container').addClass('is-hidden');
                break;
        }
    });

    $('.backend-page').on('change', '#video-advanced-settings input[name="video_visible_to"]', function () {
        var name = $('input[name="video_visible_to"]:checked').attr('id');
        switch (name) {
            case 'video_visibility_2':
            case 'video_visibility_1':
                $('#video_exception_url_container').removeClass('is-hidden');
                break;
            case 'video_visibility_0':
                $('#video_exception_url_container').addClass('is-hidden');
                break;
        }
    });

    $('.backend-page').on('change', '#social-network-advanced-settings input[name="social_network_visible_to"]', function () {
        var name = $('input[name="social_network_visible_to"]:checked').attr('id');
        switch (name) {
            case 'social_network_visibility_2':
            case 'social_network_visibility_1':
                $('#social_network_exception_url_container').removeClass('is-hidden');
                break;
            case 'social_network_visibility_0':
                $('#social_network_exception_url_container').addClass('is-hidden');
                break;
        }
    });

    $('.backend-page').on('change', '#sponsor-advanced-settings input[name="sponsor_visible_to"]', function () {
        var name = $('input[name="sponsor_visible_to"]:checked').attr('id');
        switch (name) {
            case 'sponsor_visibility_2':
            case 'sponsor_visibility_1':
                $('#sponsor_exception_url_container').removeClass('is-hidden');
                break;
            case 'sponsor_visibility_0':
                $('#sponsor_exception_url_container').addClass('is-hidden');
                break;
        }
    });

    $('.backend-page').on('change', '#invitation-code-advanced-settings input[name="visible_invitation_code__to"]', function () {
        var name = $('input[name="visible_invitation_code__to"]:checked').attr('id');
        switch (name) {
            case 'visibility_invitation_code_2':
            case 'visibility_invitation_code_1':
                $('#exception_url_container_invitation_code').removeClass('is-hidden');
                break;
            case 'visibility_invitation_code_0':
                $('#exception_url_container_invitation_code').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '#form-builder-advanced-settings input[name="form_builder_visible_to"]', function () {
        var name = $('input[name="form_builder_visible_to"]:checked').attr('id');
        switch (name) {
            case 'form_builder_visibility_2':
            case 'form_builder_visibility_1':
                $('#form_builder_exception_url_container').removeClass('is-hidden');
                break;
            case 'form_builder_visibility_0':
                $('#form_builder_exception_url_container').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '#featured-opp-form input[name="oppBlockInfo.Block.Visibility"]', function () {
        var name = $('input[name="oppBlockInfo.Block.Visibility"]:checked').attr('id');
        switch (name) {
            case 'featured_visibility_2':
            case 'featured_visibility_1':
                $('#featured_exception_url_container').removeClass('is-hidden');
                break;
            case 'featured_visibility_0':
                $('#featured_exception_url_container').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '#listingcmsblock-advanced-settings input[name="listingcms_visible_to"]', function () {
        var name = $('input[name="listingcms_visible_to"]:checked').attr('id');
        switch (name) {
            case 'listingcms_visibility_2':
            case 'listingcms_visibility_1':
                $('#listingcms_exception_url_container').removeClass('is-hidden');
                break;
            case 'listingcms_visibility_0':
                $('#listingcms_exception_url_container').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '#button-block-advanced-settings input[name="button_visible_to"]', function () {
        var name = $('input[name="button_visible_to"]:checked').attr('id');
        switch (name) {
            case 'button_visibility_2':
            case 'button_visibility_1':
                $('#button_exception_url_container').removeClass('is-hidden');
                break;
            case 'button_visibility_0':
                $('#button_exception_url_container').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '#searchresult-advanced-settings input[name="searchresult_visible_to"]', function () {
        var name = $('input[name="searchresult_visible_to"]:checked').attr('id');
        switch (name) {
            case 'searchresult_visibility_2':
            case 'searchresult_visibility_1':
                $('#searchresult_exception_url_container').removeClass('is-hidden');
                break;
            case 'searchresult_visibility_0':
                $('#searchresult_exception_url_container').addClass('is-hidden');
                break;
        }
    });
    $('.backend-page').on('change', '.image_percentage_size', function () {

        var lang_id = $(this).attr("data-language-id");

        if ($(this).is(":checked")) {
            $(".type_size_" + lang_id).text("%");
        } else {
            $(".type_size_" + lang_id).text("px");
        }
    });
    if ($('#page-conf-form').length > 0) {
        $('.backend-page').on('change', '#page-conf-form input[type="checkbox"].field-corporate-page', function () {
            var lang_id = $(this).attr("data-language-id");
            if ($(this).is(":checked")) {
                $('#result-text-section-' + lang_id).removeClass("is-hidden");
                $('#organization-id-section-' + lang_id).removeClass("is-hidden");
                $('input#organization-id-' + lang_id).attr("data-required", "true");
                verifyCorporatePage($(this).attr('id'), 1);
            } else {
                $('#result-text-section-' + lang_id).addClass("is-hidden");
                $('#organization-id-section-' + lang_id).addClass("is-hidden");
                $('input#organization-id-' + lang_id).removeAttr("data-required");
                verifyCorporatePage($(this).attr('id'), 2);
            }
        });
        $('.backend-page').on('change', '#page-conf-form input[type="checkbox"].field-tile-information', function () {
            var lang_id = $(this).attr("data-language-id");
            if ($(this).is(":checked")) {
                $('#tile-information-container-' + lang_id).removeClass('is-hidden');
                verifyTileInformation($(this).attr('id'), 1);
            }
            else {
                $('#tile-information-container-' + lang_id).addClass('is-hidden');
                verifyTileInformation($(this).attr('id'), 2);
            }
        });
        $('.backend-page').on('change', '#page-conf-form input.field-organization-id', function () {
            var org_id = $(this).val();
            var element = this;
            $('.backend-page #page-conf-form input.field-organization-id').each(function () {
                if (this != element) {
                    $(this).val(org_id);
                }
            });
        });
    }
}

function recycle_bin_events() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $(document).on('click', 'a[data-element-reveal="recycle-bin-configuration"]', function () {
        var elementReveal = $(this).data('element-reveal');
        var typeRecycle = $(this).data('type');

        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        $.ajax({
            method: "GET",
            url: urlSite + "admin/GetDeletedComponents",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            var objectTablePage = $('#recycle-bin-table-page');
            var objectTableMenu = $('#recycle-bin-table-menu');
            var objectTableBlock = $('#recycle-bin-table-block');
            var objectTableMenuItem = $('#recycle-bin-table-menu-item');
            var objectTableSignUpWorkflow = $('#recycle-bin-table-signup-workflows');
            var timeZone = jsonResult.timeZone;
            var locale = jsonResult.locale;

            moment.locale(locale);
            $('.dataTables_paginate').remove();

            //Load pages deleted
            if (jsonResult.pages) {
                datatable_destory_by_id('recycle-bin-table-page');
                objectTablePage.find('tbody').empty();
                for (var i = 0; i < jsonResult.pages.length; i++) {
                    var dataForRow = jsonResult.pages[i];
                    var lastUpdatedDate = moment.tz(dataForRow.LastModifiedDate, timeZone).format('MM/DD/YYYY hh:mm a');
                    var itemRow = '<tr><td>' + dataForRow.PageName + '</td><td>/' + dataForRow.FriendlyUrl + '</td><td>' + lastUpdatedDate + '</td><td><a href="#" class="restore" data-component="page" data-table-parent="recycle-bin-table-page" data-component-id="' + dataForRow.ID + '">' + window.translation.restore + '</a></td></tr>';

                    if (objectTablePage.find('tbody').length > 0) {
                        objectTablePage.find('tbody').append(itemRow);
                    }
                }
            }
            else {
                objectTablePage.find('tbody').empty();
            }

            //Load menus deleted
            if (jsonResult.menus) {
                datatable_destory_by_id('recycle-bin-table-menu');
                objectTableMenu.find('tbody').empty();
                for (var i = 0; i < jsonResult.menus.length; i++) {
                    var dataForRow = jsonResult.menus[i];
                    var lastUpdatedDate = moment.tz(dataForRow.LastModifiedDate, timeZone).format('MM/DD/YYYY hh:mm a');
                    var itemRow = '<tr><td>' + dataForRow.SystemName + '</td><td>' + dataForRow.TypeString + '</td><td>' + lastUpdatedDate + '</td><td><a href="#" class="restore" data-component="block" data-table-parent="recycle-bin-table-menu" data-component-id="' + dataForRow.ID + '">' + window.translation.restore + '</a></td></tr>';

                    if (objectTableMenu.find('tbody').length > 0) {
                        objectTableMenu.find('tbody').append(itemRow);
                    }
                }
            }
            else {
                objectTableMenu.find('tbody').empty();
            }

            //Load menuItems deleted
            if (jsonResult.menuItems) {
                datatable_destory_by_id('recycle-bin-table-menu-item');
                objectTableMenuItem.find('tbody').empty();
                for (var i = 0; i < jsonResult.menuItems.length; i++) {
                    var dataForRow = jsonResult.menuItems[i];
                    var menuSystemName = (dataForRow.menuSystem) ? dataForRow.menuSystem : '';
                    var lastUpdatedDate = moment.tz(dataForRow.LastModifiedDate, timeZone).format('MM/DD/YYYY hh:mm a');
                    var itemRow = '<tr><td>' + menuSystemName + '</td><td>' + dataForRow.url + '</td><td>' + lastUpdatedDate + '</td><td><a href="#" class="restore" data-component="menuItem" data-table-parent="recycle-bin-table-menu-item" data-component-id="' + dataForRow.ID + '">' + window.translation.restore + '</a></td></tr>';

                    if (objectTableMenuItem.find('tbody').length > 0) {
                        objectTableMenuItem.find('tbody').append(itemRow);
                    }
                }
            }
            else {
                objectTableMenuItem.find('tbody').empty();
            }

            //Load blocks deleted
            if (jsonResult.blocks) {
                datatable_destory_by_id('recycle-bin-table-block');
                objectTableBlock.find('tbody').empty();
                for (var i = 0; i < jsonResult.blocks.length; i++) {
                    var dataForRow = jsonResult.blocks[i];
                    var lastUpdatedDate = moment.tz(dataForRow.LastModifiedDate, timeZone).format('MM/DD/YYYY hh:mm a');
                    var itemRow = '<tr><td>' + dataForRow.SystemName + '</td><td>' + dataForRow.TypeString + '</td><td>' + lastUpdatedDate + '</td><td><a href="#" class="restore" data-component="block" data-table-parent="recycle-bin-table-block" data-component-id="' + dataForRow.ID + '">' + window.translation.restore + '</a></td></tr>';

                    if (objectTableMenu.find('tbody').length > 0) {
                        objectTableBlock.find('tbody').append(itemRow);
                    }
                }
            }
            else {
                objectTableBlock.find('tbody').empty();
            }

            //Load sign up workflows deleted
            if (jsonResult.signUpWorkflows) {
                datatable_destory_by_id('recycle-bin-table-signup-workflows');
                objectTableSignUpWorkflow.find('tbody').empty();
                for (var i = 0; i < jsonResult.signUpWorkflows.length; i++) {
                    var dataForRow = jsonResult.signUpWorkflows[i];
                    var lastUpdatedDate = moment.tz(dataForRow.LastModifiedDate, timeZone).format('MM/DD/YYYY hh:mm a');
                    var itemRow = '<tr><td>' + dataForRow.Name + '</td><td>' + lastUpdatedDate + '</td><td><a href="#" class="restore" data-component="workflow-rule" data-table-parent="recycle-bin-table-signup-workflows" data-component-id="' + dataForRow.ID + '">' + window.translation.restore + '</a></td></tr>';

                    if (objectTableSignUpWorkflow.find('tbody').length > 0) {
                        objectTableSignUpWorkflow.find('tbody').append(itemRow);
                    }
                }
            }
            else {
                objectTableSignUpWorkflow.find('tbody').empty();
            }



            datatable_initialize_notAjax_with_params(objectTablePage, null, null, false, false, true);
            datatable_initialize_notAjax_with_params(objectTableBlock, null, null, false, false, true);
            datatable_initialize_notAjax_with_params(objectTableMenuItem, null, null, false, false, true);
            datatable_initialize_notAjax_with_params(objectTableMenu, null, null, false, false, true);
            datatable_initialize_notAjax_with_params(objectTableSignUpWorkflow, null, null, false, false, true);

            //Options to fix display of recycle tables
            $('.tabs-recycle-bin').show();
            $('#recycle-tabs').find('li').show();
            $('#recycle-tabs').find('li').find('a').attr('aria-selected', false);
            $('#recycle-tabs').find('li.is-active').removeClass('is-active');
            $('.content-recycle-bin').removeClass('medium-12');
            $('.content-recycle-bin').removeClass('medium-9');
            $('.content-recycle-bin').find('.tabs-panel').attr('aria-hidden', true);
            $('.content-recycle-bin').find('.tabs-panel.is-active').removeClass('is-active');

            //Display/Hide tables depending of recycle
            if (typeRecycle === 'general') {
                $('.tabs-recycle-bin').show();

                $('li.menu-item-bin').addClass('is-active');
                $('#menu-item-recycle').attr('aria-hidden', true);

                $('.content-recycle-bin').addClass('medium-9');

                $('#page-recycle').addClass('is-active');
                $('#page-recycle').attr('aria-hidden', true);

                $('li.page-bin').addClass('is-active');
                $('li.page-bin').find('a').attr('aria-selected', true);
            }

            //Reload elements inside modal
            $('#' + elementReveal).foundation();

            //Hide processing screen
            $('#' + elementReveal).find('.processing_screen').hide();
        });
    });

    $(document).on('click', '#recycle-bin-management a.restore', function () {
        var componentType = $(this).data('component');
        var componentId = $(this).data('component-id');
        var tableParent = $(this).data('table-parent');
        var objectTable = $('#' + tableParent);
        var row = $(this).parents('tr');

        Swal.fire({
            title: window.translation.restore_item,
            text: window.translation.do_you_want_restore,
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#ff0000',
            confirmButtonText: window.translation.yes,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false

        }).then(function (result) {

            if (result.isConfirmed) {
                //Restore item
                $.ajax({
                    method: 'POST',
                    url: urlSite + 'admin/UpdateDeletedComponent',
                    data: { componentId: componentId, componentType: componentType },
                    beforeSend: function () {
                        $('#recycle-bin-configuration').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    //Remove row of table and reinitialize
                    datatable_destory_by_id(tableParent);
                    row.remove();
                    datatable_initialize_notAjax_with_params(objectTable, null, null, false, false, true);

                    Swal.fire({
                        title: window.translation.restored,
                        text: window.translation.your_item_restored,
                        icon: 'success'
                    });

                    $('#recycle-bin-configuration').find('input[name="recycle_changes"]').val("true");

                    //Hide processing screen
                    $('#recycle-bin-configuration').find('.processing_screen').hide();
                });
            } 
            

        });

    });
}

function reset_modals() {
    if (!is_backend_page()) return;


    $(document).on('closed.zf.reveal', '[data-reveal]', function () {
        if ($(this).attr('id') === 'menu-item-configuration-backend') {
            var menuBlockId = $(this).find('input[name="menu_block_id"]').val();
            var existsChanges = $(this).find('input[name="menu_item_changes"]').val();

            linkObjectParent = $('a.menu-item.edit-component.menu-item[data-menu-id="' + menuBlockId.toString() + '"]');
            $(this).find('#select-rol-menu').multiselect("unload");
            $(this).find('#select-rol-menu').attr('class', '');
            $(this).find('#select-rol-menu').attr('style', '');
            if (existsChanges === 'true') {
                populate_menu_edit_settings(linkObjectParent, true);
            }
        }
        else if ($(this).attr('id') === 'menu-item-edit-backend') {
            var existsChanges = $(this).find('input[name="block_changes"]').val();

            if (existsChanges === 'true') {
                window.location.reload();
            }
        }
        else if ($(this).attr('id') === 'recycle-bin-configuration') {
            var existsChanges = $(this).find('input[name="recycle_changes"]').val();

            if (existsChanges === 'true') {
                window.location.reload();
            }
        }
        else if ($(this).attr('id') == 'page-conf') {
            var existsChanges = $(this).find('input[name="page_conf_changes"]').val();

            if (existsChanges === 'true') {
                page_list_load();
            }
        }
        else if ($(this).attr('id') == 'rollback-list') {
            var objectTable = $('table#rollback-list-table');

            if ($.fn.dataTable.isDataTable(objectTable)) {
                objectTable.DataTable().destroy();
            }
        }

        if ($(this).attr('id') === 'blocks-slider-conf' || $(this).attr('id') === 'blocks-image-configuration' || $(this).attr('id') === 'corporate-image-configuration' || $(this).attr('id') === 'sponsor-block-configuration') {
            $('body.backend-page input[type="file"]').each(function () {
                if ($(this).parent().hasClass('ezdz-dropzone')) {
                    var type = $(this).attr('data-filetype');
                    var mimeTypes = $(this).attr('accept');
                    var textCustom = 'Add a picture / Drop a picture';

                    var remove_image = $(this).parent('.ezdz-dropzone').next('.remove_image');
                    var delete_link = remove_image.find('.delete_image');

                    if (delete_link.length !== 0) {
                        $(delete_link).remove();
                    }

                    if (remove_image.length !== 0 && !remove_image.hasClass('is-hidden')) {
                        remove_image.addClass('is-hidden');
                    }

                    $(this).ezdz('destroy');
                }
            });
        }

        if ($('#exception_url_container').length > 0) {
            $('#exception_url_container').each(function () {
                var hasClass = $(this).hasClass('is-hidden');
                if (!hasClass) {
                    $(this).addClass('is-hidden');
                    if ($(this).find('#exception_url') != '') {
                        $(this).find('#exception_url').val('');
                    }
                }
            });
        }
        if ($('a.advanced-link').length > 0) {
            $('a.advanced-link').each(function () {
                var toggle = '#' + $(this).attr('data-toggle');
                var parentReveal = '#' + $(this).parents('.reveal').attr('id');
                var forTextSettings = $(this).hasClass('advanced-text');
                var hasClass = $(parentReveal + ' ' + toggle).hasClass('is-hidden');
                if (!hasClass) {
                    $(parentReveal + ' ' + toggle).addClass('is-hidden');
                    $(this).html(forTextSettings ? "Show more" : translation.show_advanced_settings);
                }
            });
        }
        if ($('.metatag-item').length > 0) {
            $('.metatag-item').remove();
        }
        if ($(this).attr('id') === 'opportunity-detail-settings-edit-backend') {
            $('#opportunity-detail-settings-edit-backend').find('select.no-custom-multiple').multiselect('unload');
            $('#opportunity-detail-settings-edit-backend').find('select.no-custom-multiple').attr('class', 'no-custom-multiple');
        }
    });
}

function remove_meta_tag() {
    if (!is_backend_page()) return;

    $('.backend-page').on('click', 'a.delete', function () {
        var metatag_item = $(this).closest('.metatag-item');
        metatag_item.remove();
    });
}
function rollback_event() {
    $(document).on('click', 'a[data-element-reveal="rollback-list"]', function () {
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        var blockId = $(this).data('block-id');
        var menuItemId = $(this).data('menu-item');
        var pageId = $(this).data('page-id');
        var componentId = $(this).data('component-id');
        var componentType = $(this).data('component-type');
        var objectTableRollBack = $('#rollback-list-table');
        var layoutId = $(this).data('layout-id');
        var pageName = $(this).data('page-name');

        objectTableRollBack.find('tbody').empty();

        $('#' + elementReveal).foundation('open');
        //Reload elements inside modal
        $('#' + elementReveal).foundation();
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetVersionsbyComponent",
            data: { blockId: blockId, menuItemId: menuItemId, pageId: pageId, componentId: componentId, componentType: componentType, pageName: pageName, layoutId: layoutId },
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            //Load versions by componenet
            if (jsonResult.versions != undefined
                && jsonResult.versions != null
                && Array.isArray(jsonResult.versions)
                && jsonResult.versions.length > 0) {

                var band = true;
                var count = 0;
                var cant = jsonResult.versions.length;
                var maxVersion = jsonResult.versions[cant - 1][0];

                objectTableRollBack.find('tbody').empty();

                for (var i = 0; i < cant - 1 && count < 30; i++) {
                    var dataForRow = jsonResult.versions[i];
                    var current_version = "";
                    if (band) {
                        current_version = "(" + window.translation.current + ")"; band = false;
                    }
                    var rollbackButton = '<a  title="RollBack" data-version-value="' + dataForRow.IdVersionInTable + '" data-version-new="' + dataForRow.NewFormat + '" class="rollback_action"  data-block-id="' + blockId + '" data-component-type="' + componentType + '" data-version-id="' + dataForRow.VersionNum + '" data-pagename="' + pageName + '" data-idsversion="' + dataForRow.IdsVersion + '">' + window.translation.retrieve + '</a>';
                    var itemRow = '<tr><td>' + maxVersion + ' ' + current_version + '</td><td>' + dataForRow.Date + '</td><td>' + dataForRow.Operation + '</td><td class="action">' + rollbackButton + '</td></tr>';

                    if (objectTableRollBack.find('tbody').length > 0) {
                        objectTableRollBack.find('tbody').append(itemRow);
                    }

                    maxVersion = maxVersion - 1;
                    count = count + 1;
                }
            }

            //Reload datatable of tables
            $("#rollback-list .dataTables_paginate").remove();
            datatable_initialize_notAjax_with_params(objectTableRollBack, null, null, false, false, false);

            //Hide processing screen
            $('#' + elementReveal).find('.processing_screen').hide();
        });

    });

    $(document).on('click', 'a.rollback_action', function () {

        var versionId = $(this).data('version-id');
        var componentType = $(this).data('component-type');
        var pageName = $(this).data('pagename');
        var blockId = $(this).data('block-id');
        var idsversion = $(this).data('idsversion');
        var idversionvalue = $(this).attr('data-version-value');
        var newversion = $(this).attr('data-version-new');
        var revertVersion = false;

        //Logic for CSRF token
        var theForm = $(this).closest('form');
        var requestVerificationToken = '';
        if (theForm !== null) {
            var theDataForm = theForm.serializeObject();
            requestVerificationToken = theDataForm['__RequestVerificationToken'];
        }

        if (componentType === 'Layout') {
            var layoutId = $('form#layout-form-modal-management').find('input[name="LayoutID"]').val();

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.warning_version_revert,
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#DD6B55',
                confirmButtonText: window.translation.yes_revert_it,
                closeOnConfirm: true

            }).then(function (result) {
                revert_component_version(versionId, componentType, pageName, layoutId, idsversion, blockId, idversionvalue, newversion, requestVerificationToken);

            });

        }
        else {
            revert_component_version(versionId, componentType, pageName, 0, idsversion, blockId, idversionvalue, newversion, requestVerificationToken);
        }
    });
}

function revert_component_version(versionId, componentType, pageName, layoutId, idsversion, blockId, idversionvalue, newversion, requestVerificationToken) {
    if (((versionId > 0 && newversion == "NO") || (newversion == "YES")) && componentType !== 'ListingCMSBlock' && componentType !== 'SearchResultBlock' && componentType !== 'DonationBlock') {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $.ajax({
            method: "POST",
            url: urlSite + "admin/RestoreComponent",
            data: {
                versionId: versionId,
                pageName: pageName,
                layoutId: layoutId,
                componentType: componentType,
                idsversion: idsversion,
                blockId: blockId,
                idversionvalue: idversionvalue,
                newversion: newversion,
                "__RequestVerificationToken": requestVerificationToken
            },
            beforeSend: function () {
                $('#rollback-list .processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (componentType === 'Layout') {
                window.location.reload();
            }
            else {
                $('#rollback-list').foundation('close');
                $('#rollback-list .processing_screen').hide();
            }

            //Load versions by componenet
            if (componentType === 'Page') {
                rollback_page(jsonResult.data);
            }
            else if (componentType === 'WysiwygBlock') {
                rollback_wysiwyg(jsonResult);
            }
            else if (componentType === 'VideoBlock') {
                rollback_videoBlock(jsonResult);
            }
            else if (componentType === 'ImageBlock') {
                rollback_image(jsonResult);
            }
            else if (componentType === 'SocialNetworkBlock') {
                rollback_socialNetworkBlock(jsonResult);
            }
            else if (componentType === 'CorporateImageBlock') {
                rollback_corporateImageBlock(jsonResult);
            }
            else if (componentType === 'SliderBlock') {
                rollback_sliderBlock(jsonResult);
            }
            else if (componentType === 'SponsorBlock') {
                rollback_sponsorBlock(jsonResult);
            }
            else if (componentType === 'MenuBlock') {
                rollback_menuBlock(jsonResult);
            }
            else if (componentType === 'BasicSearchBlock') {
                rollback_basicSearchBlock(jsonResult);
            }
            else if (componentType === 'MenuItem') {
                rollback_menuItem(jsonResult);
            }
            else if (componentType === 'RSSBlock') {
                rollback_rssBlock(jsonResult);
            }
            else if (componentType === 'VolunteerForm') {
                rollback_volunteerForm(jsonResult);
            }
            else if (componentType === 'CalendarBlock') {
                rollback_calendarBlock(jsonResult);
            }
            else if (componentType === 'AdvancedSearchBlock') {
                rollback_advancedSeachBlock(jsonResult);
            }
            else if (componentType === 'FormSettings') {
                rollback_FormSetting(jsonResult, pageName);
            }
            else if (componentType === 'PageCategory') {
                rollback_pageCategory(jsonResult);
            }
            else if (IS_LLAMAPI_ENABLED !== true && componentType === 'FeaturedOpportunityBlock') {
                rollback_FeaturedOppBlock(jsonResult);
            }
            else if (componentType === 'ButtonBlock') {
                rollback_ButtonBlock(jsonResult);
            }
        });
    }
}

function rollback_basicSearchBlock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#basic-search-advanced-settings');

    var formSelector = '#basic-search-management';
    // Loading BasicSearch  data    
    if (typeof jsonResult.blockBasicSearchData != 'undefined' && jsonResult.blockBasicSearchData.length > 0) {
        jsonResult.blockBasicSearchData.forEach(function (item) {
            // Show keywords, Show advanced link
            $('input[name="radio-keywords"]').prop('checked', item.ShowKeywords);
            $('input[name="radio-link"]').prop('checked', item.ShowAdvancedLink);
            $('input[name="radio-dates-field"]').prop('checked', item.ShowDatesField);
            $('input[name="radio-distance-field"]').prop('checked', item.ShowDistanceField);
            $('input[name="location-type-field"]').prop('checked', item.ShowLocationType);

            if (item.SearchResultId) {
                $('select[name="searchresultblock"]').val(item.SearchResultId);
            }
            else {
                $('select[name="searchresultblock"]').val('');
            }

            $(formSelector + ' select[name="format"]').val(item.Format);
        });
    }

    // Loading data titles
    if (typeof jsonResult.blockTitles != 'undefined' && jsonResult.blockTitles.length > 0) {
        // Populate titles
        jsonResult.blockTitles.forEach(function (item) {
            $(formSelector + ' input[name="title-' + item.Language + '"]').val(item.Title);
        });
    }

    // Loading language information (Labels and Placeholders)
    if (typeof jsonResult.blockLanguageBasicSearch != 'undefined' && jsonResult.blockLanguageBasicSearch.length > 0) {

        //Populate labels and placeholders
        jsonResult.blockLanguageBasicSearch.forEach(function (bsLanguage) {
            var languageId = bsLanguage.ID;
            var self = $(formSelector);

            self.find('input[name="labelKeywords-' + languageId + '"]').val(bsLanguage['LabelKeywords']);
            self.find('input[name="placeholderKeywords-' + languageId + '"]').val(bsLanguage['PlaceholderKeywords']);
            self.find('input[name="labelCityState-' + languageId + '"]').val(bsLanguage['LabelCityAndState']);
            self.find('input[name="placeholderCityState-' + languageId + '"]').val(bsLanguage['PlaceholderCityAndState']);
            self.find('input[name="labelDistance-' + languageId + '"]').val(bsLanguage['LabelDistance']);
            self.find('input[name="placeholderDistance-' + languageId + '"]').val(bsLanguage['PlaceholderDistance']);
            self.find('input[name="labelDateStart-' + languageId + '"]').val(bsLanguage['LabelDateStart']);
            self.find('input[name="placeholderDateStart-' + languageId + '"]').val(bsLanguage['PlaceholderDateStart']);
            self.find('input[name="labelDateEnd-' + languageId + '"]').val(bsLanguage['LabelDateEnd']);
            self.find('input[name="placeholderDateEnd-' + languageId + '"]').val(bsLanguage['PlaceholderDateEnd']);
            self.find('input[name="labelButtonSearch-' + languageId + '"]').val(bsLanguage['LabelButtonSearch']);
            self.find('input[name="placeholderLocationType-' + languageId + '"]').val(bsLanguage['PlaceholderLocationType']);
            self.find('input[name="labelLocationType-' + languageId + '"]').val(bsLanguage['LabelLocationType']);
        });
    }

    // loading data block
    if (typeof jsonResult.blockData != 'undefined') {
        $(formSelector + ' input[name="basicsearch_system_name"]').val(jsonResult.blockData.BlockName);
        $(formSelector + ' select[name="basicsearch_region"]').val(jsonResult.blockData.Region);
        $(formSelector + ' input[name="css_class_bsearch"]').val(jsonResult.blockData.CssClass);
        if (jsonResult.blockData.ShowTitle) {
            $('#show_title_bsearch').val(jsonResult.blockData.ShowTitle);
            $('input.show-title-bsearch').prop('checked', true);
        }
        else {
            $('#show_title_bsearch').val(null);
            $('input.show-title-bsearch').prop('checked', false);
        }
        $(formSelector + ' input[name="enabled-bsearch"]').prop('checked', jsonResult.blockData.Enabled);
        $(formSelector + ' input[name="weight-bsearch"]').val(jsonResult.blockData.Weight);
        $(formSelector + ' #visibility_bsearch_' + jsonResult.blockData.Visibility).prop('checked', true);
        $(formSelector + ' textarea[name="visibility_bsearch_urls"]').val(jsonResult.blockData.VisibilityUrls);
        $(formSelector + ' input[name="block_id"]').val(jsonResult.blockData.ID);

        if (jsonResult.blockData.Visibility == 1 || jsonResult.blockData.Visibility == 2) {
            $('#exception_url_container_bsearch').removeClass('is-hidden');
        } else {
            $('#exception_url_container_bsearch').addClass('is-hidden');
        }
    }
}
function rollback_page(jsonResult) {
    var modal = $("#page-conf-form");

    for (var i = 0; i < jsonResult.length; i++) {
        var lang_id = jsonResult[i].Language;
        var iso = jsonResult[i].iso;

        if ($("#language-page-" + lang_id).length > 0) {
            //Loading data.
            modal.find("input[name=friendly-url]").val(jsonResult[0].FriendlyUrl);
            $("#language-page-" + lang_id).find("input[name=title-" + lang_id + "]").val(jsonResult[i].PageName);
            $("#language-page-" + lang_id).find("input[name=description-" + lang_id + "]").val(jsonResult[i].MetaDescription);
            modal.find("input[name=css_class]").val(jsonResult[i].CssClass);
            modal.find("select[name=visible_to]").val(jsonResult[i].Visibility);

            //Enabled
            if (jsonResult[0].Enabled) {
                modal.find("input[name=enabled]").prop('checked', true);
            } else {
                modal.find("input[name=enabled]").prop('checked', false);
            }

            //Display Title Page
            if (jsonResult[0].DisplayPageTitle) {
                modal.find("input.display-page-title").val(jsonResult[0].DisplayPageTitle);
                modal.find("input[name='display-page-title']").val('checked', jsonResult[0].DisplayPageTitle);
            } else {
                modal.find("input.display-page-title").val(null);
                modal.find("input[name='display-page-title']").val('checked', false);
            }

             //Remove on Sitemap
            if (jsonResult[0].AddOnSitemap) {
                modal.find("input[name=add_on_sitemap]").prop('checked', true);
            } else {
                modal.find("input[name=add_on_sitemap]").prop('checked', false);
            }

            //Loading body.
            $("#language-page-" + lang_id).find("#body-" + lang_id).text(jsonResult[i].Body);
            if ($('#body-' + lang_id).length > 0) {
                var editor;
                if ($("#cke_body-" + lang_id).length > 0) {
                    editor = CKEDITOR.instances['body-' + lang_id].setData(jsonResult[i].Body);
                }
            }

            //Loading Result Text
            $('#language-page-' + lang_id).find('#result-text-' + lang_id).text(jsonResult[i].ResultText);
            if ($('#result-text-' + lang_id).length > 0) {
                var editor_result;
                if ($('#cke_result-text-' + lang_id).length > 0) {
                    editor_result = CKEDITOR.instances['result-text-' + lang_id].setData(jsonResult[i].ResultText);
                }
            }

            //Organization Id
            $('#language-page-' + lang_id).find('input[name=organization-id-' + lang_id + ']').val(jsonResult[i].OrganizationId);

            //Load page categories and summary
            if (jsonResult[i].Summary || jsonResult[i].Categories) {
                var self = $("#page-conf-form");
                var categories = (jsonResult[i].Categories) ? jsonResult[i].Categories.split(',') : '';
                $('#tile-information-' + lang_id).prop('checked', true);
                $("#tile-information-container-" + lang_id).removeClass('is-hidden');

                //Load info of summary and categories
                if ($("#cke_page-summary-" + lang_id).length > 0) {
                    editor = CKEDITOR.instances['page-summary-' + lang_id].setData(jsonResult[i].Summary);
                }
                if (categories) {
                    categories.forEach(function (category) {
                        self.find('#pageCategory-' + category + '-' + lang_id).prop('checked', true);
                    });
                }
            }
            else {
                $("#tile-information-container-" + lang_id).addClass('is-hidden');
            }

            //Corporate Page
            if (jsonResult[i].CorporatePage) {
                modal.find("input[name=corporate-page-" + lang_id + "]").prop('checked', true);
            } else {
                modal.find("input[name=corporate-page-" + lang_id + "]").prop('checked', false);
                $("#result-text-section-" + lang_id).addClass("is-hidden");
                $("#organization-id-section-" + lang_id).addClass("is-hidden");
            }

            // Loading meta tags.
            $(".metatag_items_" + lang_id).empty();
            if (jsonResult[i].OgUrl != "" && jsonResult[i].OgUrl != null) {
                load_meta_tags_page(lang_id, 'url', jsonResult[i].OgUrl, modal);
            }
            if (jsonResult[i].OgTitle != "" && jsonResult[i].OgTitle != null) {
                load_meta_tags_page(lang_id, 'title', jsonResult[i].OgTitle, modal);
            }
            if (jsonResult[i].OgDescription != "" && jsonResult[i].OgDescription != null) {
                load_meta_tags_page(lang_id, 'description', jsonResult[i].OgDescription, modal);
            }
            if (jsonResult[i].OgSiteName != "" && jsonResult[i].OgSiteName != null) {
                load_meta_tags_page(lang_id, 'site_name', jsonResult[i].OgSiteName, modal);
            }
            if (jsonResult[i].OgImage != "" && jsonResult[i].OgImage != null) {
                load_meta_tags_page(lang_id, 'image', jsonResult[i].OgImage, modal);
            }
            if (jsonResult[i].MetaKeywords != "" && jsonResult[i].MetaKeywords != null) {
                load_meta_tags_page(lang_id, 'keywords', jsonResult[i].MetaKeywords, modal);
            }
            if (jsonResult[0].CssClass != null) {
                $("#page-conf-form").find("input[name=css_class]").val(jsonResult[0].CssClass);
            }
        }
    }
}
function rollback_sliderBlock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#slider-advanced-settings');

    // Loading image slider data
    var formSelector = '#block-slider-form';

    if (typeof jsonResult.blockSliderData != 'undefined' && jsonResult.blockSliderData.length > 0) {
        jsonResult.blockSliderData.forEach(function (item) {
            if (item.DisableAutomatic !== null) {
                $(formSelector + ' input[name="slider_block_disabled_autoplay"]').prop('checked', item.DisableAutomatic);
                $(formSelector + ' select[name="slider_effect"]').val(item.Effect);
                $(formSelector + ' input[name="images_per_slider"]').val(parseInt(item.ImagePerSlider));
            }
        });
    }

    //Populate block info
    if (jsonResult.blockData) {
        $(formSelector + ' input[name="slider_block_id"]').val(jsonResult.blockData.ID);
        $(formSelector + ' input[name="slider_css_class"]').val(jsonResult.blockData.CssClass);
        $(formSelector + ' input[name="sort_weight"]').val(jsonResult.blockData.Weight);
        if (jsonResult.blockData.ShowTitle) {
            $(formSelector + ' #slider_show-title').val(jsonResult.blockData.ShowTitle);
            $(formSelector + ' .slider-show-title').prop('checked', true);
        }
        else {
            $(formSelector + ' #slider_show-title').val(null);
            $(formSelector + ' .slider-show-title').prop('checked', false);
        }
        $(formSelector + ' #slider_block_enabled').prop('checked', jsonResult.blockData.Enabled);
        $(formSelector + ' input[name="slider_visible_to"]').prop('checked', false);
        $(formSelector + ' #slider_visibility_' + jsonResult.blockData.Visibility).prop('checked', true);
        $(formSelector + ' #slider_exception_urls').val(jsonResult.blockData.VisibilityUrls);
        $(formSelector + ' #slider_exception_urls').text(jsonResult.blockData.VisibilityUrls);
        $(formSelector + ' input[name="block_slider_id"]').val(jsonResult.blockData.ID);
        $(formSelector + ' input[name="slider_system_name"]').val(jsonResult.blockData.BlockName);
        $(formSelector + ' select[name="slider_region"]').val(jsonResult.blockData.Region);

        if (jsonResult.blockData.Visibility == 1 || jsonResult.blockData.Visibility == 2) {
            $(formSelector + " #slider_exception_url_container").removeClass("is-hidden");
        }
        else {
            $(formSelector + " #slider_exception_url_container").addClass("is-hidden");
        }
    }

    //Populate titles
    if (jsonResult.blockTitles) {
        jsonResult.blockTitles.forEach(function (item) {
            $(formSelector + ' input[name="title_slider_' + item.Language + '"]').val(item.Title);
        });
    }

    //Populate items
    if (jsonResult.blockImageData) {
        var band = 0;
        var lanjsonObj = [];

        jsonResult.blockImageData.forEach(function (item) {
            if (lanjsonObj.indexOf(item.Language) == -1 && (item.isDeleted === false || item.isDeleted === null)) {
                lanjsonObj.push(item.Language);
            }
        });
        lanjsonObj.forEach(function (item) {
            $('.slides_' + item).empty();
        });
        jsonResult.blockImageData.forEach(function (item) {
            var itemImage = [];
            if (item.isDeleted === false || item.isDeleted === null) {
                itemImage.ImageTitle = item.Title;
                itemImage.ImageID = item.ID;
                itemImage.ImageAlt = item.Alt;
                itemImage.Weight = item.Weight;
                itemImage.RedirectUrl = item.Redirect_Url;
                itemImage.ImageUrl = item.Url;
                itemImage.Summary = item.Summary;
                itemImage.LinkType = item.LinkType;
                itemImage.ButtonTitle = item.ButtonTitle;
                load_slider_items(item.Language, itemImage, formSelector);
                validate_sliderimage_form();
            }
        });
        lanjsonObj.forEach(function (item) {
            var cant_slides = $(".slides_" + item + " .slide-item").length;
            $('input[name="count_slides_' + item + '"]').val(cant_slides);
        });
    }
}
function rollback_image(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#image-advanced-settings');
    // Loading image data
    var formSelector = '#block-image-form';
    if (typeof jsonResult.blockImageData != 'undefined' && jsonResult.blockImageData.length > 0) {
        //Clean data of images loaded
        $(formSelector).find('.tabs-panel').each(function () {
            $(this).find('input[type="text"]').val('');
            $(this).find('input[type="checkbox"]').prop('checked', false);
            $(this).find('select').val('0');
        });

        //Reinitialize ezdz widget
        initialize_block_image();

        jsonResult.blockImageData.forEach(function (imageItem) {
            var lang = imageItem.Language;
            $(formSelector + ' input[name="image_id_' + lang + '"]').val(imageItem.ID);
            $(formSelector + ' input[name="title_image_' + lang + '"]').val(imageItem.Title);
            $(formSelector + ' input[name="alt_image_' + lang + '"]').val(imageItem.Alt);
            $(formSelector + ' input[name="link_image_' + lang + '"]').val(imageItem.Redirect_Url);
            $(formSelector + ' input[name="image_width_' + lang + '"]').val(imageItem.Widht);
            $(formSelector + ' input[name="image_height_' + lang + '"]').val(imageItem.Height);
            $(formSelector + ' select[name="link_type_' + lang + '"]').val(imageItem.LinkType);
            $(formSelector + ' input[name="link_button_text_' + lang + '"]').val(imageItem.ButtonTitle);
            $(formSelector + ' textarea[name="summary_' + lang + '"]').val(imageItem.Summary);

            if (imageItem.LinkType == 0) {
                $(formSelector + ' #link-section-fields-' + lang).hide();
                $(formSelector + ' #button-section-fields-' + lang).hide();
            } else if (imageItem.LinkType == 1) {
                $(formSelector + ' #link-section-fields-' + lang).show();
                $(formSelector + ' #button-section-fields-' + lang).hide();
            } else if (imageItem.LinkType == 2) {
                $(formSelector + ' #link-section-fields-' + lang).show();
                $(formSelector + ' #button-section-fields-' + lang).show();
            }

            var selector = $(formSelector + ' input[name="image_' + lang + '"]');
            var id = selector.attr('id');
            var parent = selector.parent(".ezdz-dropzone");
            var delete_image_link = '<a data-image="' + id + '" class="delete_image">Delete</a>';

            // Put link below image preview.
            if (parent.parent().find('.delete_image').length == 0) {
                parent.parent().find(".remove_image").append(delete_image_link);
                parent.parent().find(".remove_image").removeClass("is-hidden");
            }
            if (imageItem.Percentage_Size == true) {
                $(formSelector + ' .type_size_' + lang).text("%");
                $(formSelector + ' input[name="image_percentage_size_' + lang + '"]').prop('checked', true);
            } else {
                $(formSelector + ' .type_size_' + lang).text("px");
                $(formSelector + ' input[name="image_percentage_size_' + lang + '"]').prop('checked', false);
            }
            if (imageItem.Url == "") {
                $(formSelector + ' input[name="image_url_' + lang + '"]').val(false);
            } else {
                setTimeout(function () {
                    var url = imageItem.Url;
                    $(formSelector + ' input[name="image_' + lang + '"]').ezdz('preview', url, function () {
                        var edit_image_link = '<a data-image="' + id + '" class="edit_image edit_image_' + id + '">Edit</a>';
                        // Put link below image preview.
                        // Adding Edit link to allow Crop and resize options.
                        //validate when user only close crop 

                        if (parent.find("img").length > 0) {
                            parent.parent().find('.edit_image_' + id).remove();
                            parent.parent().find(".remove_image").append(edit_image_link);
                            $('.edit_image_' + id).on('click', function () {
                                apply_cropper_event(id, parent.find("img").clone());
                                $("#crop-image").foundation("open");
                            });
                        }

                    });
                }, 100);
                $(formSelector + ' input[name="image_url_' + lang + '"]').val(false);
            }
        });
    }
    //Populate block info
    if (jsonResult.blockData) {
        $(formSelector + ' input[name="image_block_id"]').val(jsonResult.blockData.ID);
        $(formSelector + ' input[name="image_css_class"]').val(jsonResult.blockData.CssClass);
        $(formSelector + ' input[name="sort_weight"]').val(jsonResult.blockData.Weight);
        $(formSelector + ' #image_show_title').prop('checked', jsonResult.blockData.ShowTitle);
        $(formSelector + ' #image-enabled').prop('checked', jsonResult.blockData.Enabled);
        $(formSelector + ' input[name="image_visible_to"]').prop('checked', false);
        $(formSelector + ' #image_visibility_' + jsonResult.blockData.Visibility).prop('checked', true);
        $(formSelector + ' #image_exception_urls').val(jsonResult.blockData.VisibilityUrls);
        $(formSelector + ' #image_exception_urls').text(jsonResult.blockData.VisibilityUrls);
        $(formSelector + ' input[name="image_system_name"]').val(jsonResult.blockData.BlockName);
        $(formSelector + ' select[name="image_region"]').val(jsonResult.blockData.Region);
        if (jsonResult.blockData.Visibility == 1 || jsonResult.blockData.Visibility == 2) {
            $(formSelector + " #image_exception_url_container").removeClass("is-hidden");
        } else {
            $(formSelector + " #image_exception_url_container").addClass("is-hidden");
        }
    }
    // Assigning titles by language
    if (typeof jsonResult.blockTitles != 'undefined' && jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (item) {
            $(formSelector + ' input[name="title-' + item.Language + '"]').val(item.Title);
        });
    }
}
function rollback_videoBlock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#video-advanced-settings');

    //Assign Data to modal
    if (jsonResult.blockData) {
        $('#video-form #video_block_system_name').val(jsonResult.blockData.BlockName);
        $('#video-form select[name="video_region"]').val(jsonResult.blockData.Region);
        $('#video-form input[name="sort_weight"]').val(jsonResult.blockData.Weight);
        $('#video-form input[name="enabled"]').prop('checked', jsonResult.blockData.Enabled);
        if (jsonResult.blockData.ShowTitle) {
            $('#video-form input[name="show_title_video"]').val(jsonResult.blockData.ShowTitle);
            $('#video-form input.show-title-video').prop('checked', true);
        }
        else {
            $('#video-form input[name="show_title_video"]').val(null);
            $('#video-form input.show-title-video').prop('checked', false);
        }
        $('#video-form #video_visibility_' + jsonResult.blockData.Visibility).prop('checked', true);

        switch (jsonResult.blockData.Visibility) {
            case 2:
            case 1:
                $('#video-form #video_exception_url_container').removeClass('is-hidden');
                break;
            case 0:
                $('#video-form #video_exception_url_container').addClass('is-hidden');
                break;
        }

        $('#video-form #video_exception_urls').val(jsonResult.blockData.VisibilityUrls);
    }
    if (jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            var language = title.Language;
            var value = title.Title;

            $('#video-form input[name="title-' + language + '"]').val(value);
        });
    }
    if (jsonResult.blockVideoData) {
        $('#video-form input[name="url_video"]').val(jsonResult.blockVideoData.url);
        $('#video-form select[name="position_video"]').val(jsonResult.blockVideoData.textAboveBelow);
        $('#video-form select[name="size_video"]').val(jsonResult.blockVideoData.size);
    }
    if (jsonResult.blockLanguageVideo) {
        var formSelector = '#video-form';
        $(formSelector).find('textarea[name*=description_video_]').text('');

        jsonResult.blockLanguageVideo.forEach(function (description) {
            $(formSelector).find('textarea[name="description_video_' + description.Language + '"]').text(description.Description);
        });

        //Destroy and reinitilize CKEDitors of descriptions
        $(formSelector).find('textarea[name*=description_video_]').each(function () {
            var editor;
            var textId = $(this).attr('id');
            if (CKEDITOR.instances[textId]) {
                CKEDITOR.instances[textId].destroy(true);
            }

            //Reinitialize WYSIWYG
            $('#cke_' + textId).remove();
            editor = CKEDITOR.replace(textId, {
                filebrowserBrowseUrl: '/file-browser?type=Files&block=wysiwyg',
                filebrowserImageBrowseUrl: '/file-browser?type=Images&block=wysiwyg',
                filebrowserUploadUrl: '/file-upload',
                filebrowserImageUploadUrl: '/file-upload',
                filebrowserWindowWidth: 800,
                filebrowserWindowHeight: 700
            });
        });
    }
}
function rollback_wysiwyg(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#block-advanced-settings');
    // Loading wysiwyg data    
    if (typeof jsonResult.blockWysiwygData != 'undefined' && jsonResult.blockWysiwygData.length > 0) {

        for (var i = 0; i < jsonResult.blockWysiwygData.length; i++) {
            var lang = jsonResult.blockWysiwygData[i].Language;
            $("#wysiwyg-" + lang).text(jsonResult.blockWysiwygData[i].Body);

            var editor;
            if ($("#wysiwyg-" + lang).length > 0) {
                editor = CKEDITOR.instances['wysiwyg-' + lang].setData(jsonResult.blockWysiwygData[i].Body)
            }
        }
    }
    // loading data titles
    if (typeof jsonResult.blockTitles != 'undefined' && jsonResult.blockTitles.length > 0) {

        for (var i = 0; i < jsonResult.blockTitles.length; i++) {
            var lang = jsonResult.blockTitles[i].Language;
            var title = jsonResult.blockTitles[i].Title;
            var formSelector = '#block-wysiwyg-form';
            if ($(formSelector + ' input[name="title-' + lang + '"]').length > 0) {
                $(formSelector + ' input[name="title-' + lang + '"]').val(title);
            }

        }
    }
    // loading data block
    if (typeof jsonResult.blockData != 'undefined') {
        var formSelector = '#block-wysiwyg-form';
        $(formSelector + ' input[name="wysiwyg_system_name"]').val(jsonResult.blockData.BlockName);
        $(formSelector + ' select[name="wysiwyg_region"]').val(jsonResult.blockData.Region);
        $(formSelector + ' input[name="css_class"]').val(jsonResult.blockData.CssClass);
        $(formSelector + ' input[name="show_title"]').prop('checked', jsonResult.blockData.ShowTitle);
        $(formSelector + ' input[name="enabled"]').prop('checked', jsonResult.blockData.Enabled);
        $(formSelector + ' input[name="weight"]').val(jsonResult.blockData.Weight);
        $(formSelector + ' #visibility_wysiwyg_' + jsonResult.blockData.Visibility).prop('checked', true);
        $(formSelector + ' textarea[name="visibility_urls"]').val(jsonResult.blockData.VisibilityUrls);
        $(formSelector + ' input[name="block_id"]').val(jsonResult.blockData.ID);

        if (jsonResult.blockData.Visibility == 1 || jsonResult.blockData.Visibility == 2) {
            $('#wysiwyg_exception_url_container').removeClass('is-hidden');
        } else {
            $('#wysiwyg_exception_url_container').addClass('is-hidden');
        }
    }
}
function rollback_socialNetworkBlock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#social-network-advanced-settings');

    //Assign Data to modal
    if (jsonResult.blockData) {
        $('#social-network-form #social_network_system_name').val(jsonResult.blockData.BlockName);
        $('#social-network-form select[name="social_network_region"]').val(jsonResult.blockData.Region);
        $('#social-network-form input[name="sort_weight"]').val(jsonResult.blockData.Weight);
        $('#social-network-form input[name="enabled"]').prop('checked', jsonResult.blockData.Enabled);
        $('#social-network-form input[name="show_title"]').prop('checked', jsonResult.blockData.ShowTitle);
        $('#social-network-form #social_network_visibility_' + jsonResult.blockData.Visibility).prop('checked', true);

        switch (jsonResult.blockData.Visibility) {
            case 2:
            case 1:
                $('#social-network-form #social_network_exception_url_container').removeClass('is-hidden');
                break;
            case 0:
                $('#social-network-form #social_network_exception_url_container').addClass('is-hidden');
                break;
        }

        $('#social-network-form #social_network_exception_urls').val(jsonResult.blockData.VisibilityUrls);
    }
    if (jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            var language = title.Language;
            var value = title.Title;

            $('#social-network-form input[name="title-' + language + '"]').val(value);
        });
    }
    if (jsonResult.blockSocialNetworkData) {
        $('#social-network-form input[name="youtube_url"]').val(jsonResult.blockSocialNetworkData.youtubeUrl);
        $('#social-network-form input[name="twitter_url"]').val(jsonResult.blockSocialNetworkData.twitterUrl);
        $('#social-network-form input[name="facebook_url"]').val(jsonResult.blockSocialNetworkData.facebookUrl);
        $('#social-network-form input[name="instagram_url"]').val(jsonResult.blockSocialNetworkData.instagramUrl);
        $('#social-network-form input[name="linkedin_url"]').val(jsonResult.blockSocialNetworkData.linkedinUrl);
        $('#social-network-form input[name="tiktok_url"]').val(jsonResult.blockSocialNetworkData.tiktokUrl);
        $('#social-network-form select[name="title_display"]').val(jsonResult.blockSocialNetworkData.titleDisplay);
    }
}
function rollback_corporateImageBlock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#corporate-image-advanced-settings');
    //Assign Data to modal
    if (jsonResult.blockData) {
        $('#corporate-image-form input[name="corporate_image_system_name"]').val(jsonResult.blockData.BlockName);
        $('#corporate-image-form select[name="corporate_image_region"]').val(jsonResult.blockData.Region);
        $('#corporate-image-form input[name="sort_weight"]').val(jsonResult.blockData.Weight);
        $('#corporate-image-form input[name="enabled"]').prop('checked', jsonResult.blockData.Enabled);
        $('#corporate-image-form #corporate_image_visibility_' + jsonResult.blockData.Visibility).prop('checked', true);

        switch (jsonResult.blockData.Visibility) {
            case 2:
            case 1:
                $('#corporate-image-form #corporate_image_exception_url_container').removeClass('is-hidden');
                break;
            case 0:
                $('#corporate-image-form #corporate_image_exception_url_container').addClass('is-hidden');
                break;
        }

        $('#corporate-image-form #corporate_image_exception_urls').val(jsonResult.blockData.VisibilityUrls);
    }
    if (jsonResult.blockImageData.length > 0) {
        var formSelector = '#corporate-image-form';

        //Clean data of images loaded
        $(formSelector).find('.tabs-panel').each(function () {
            $(this).find('input[type="text"]').val('');
            $(this).find('input[type="checkbox"]').prop('checked', false);
            $(this).find('select').val('0');
        });

        //Reinitialize ezdz widget
        initialize_block_image();

        jsonResult.blockImageData.forEach(function (imageItem) {
            var url = imageItem.Url;
            var language = imageItem.Language;
            var imageId = imageItem.ID;

            //Reinitialize ezdz widget
            initialize_block_image();

            //Populate image
            var selector = $(formSelector + ' input[name="image_' + language + '"]');
            var id = selector.attr('id');
            var parent = selector.parent(".ezdz-dropzone");
            var delete_image_link = '<a data-image="' + id + '" class="delete_image">' + window.translation.delete + '</a>';

            $(formSelector + ' input[name="image_id_' + language + '"]').val(imageId);

            // Put link below image preview.
            if (parent.parent().find('.delete_image').length == 0) {
                parent.parent().find(".remove_image").append(delete_image_link);
                parent.parent().find(".remove_image").removeClass("is-hidden");
            }

            if (url === "") {
                $(formSelector + ' input[name="image_url_' + language + '"]').val(false);
            }
            else {
                setTimeout(function () {
                    $(formSelector + ' input[name="image_' + language + '"]').ezdz('preview', url, function () {
                        var edit_image_link = '<a data-image="' + id + '" class="edit_image edit_image_' + id + '">Edit</a>';
                        // Put link below image preview.
                        // Adding Edit link to allow Crop and resize options.
                        //validate when user only close crop 

                        if (parent.find("img").length > 0) {
                            parent.parent().find('.edit_image_' + id).remove();
                            parent.parent().find(".remove_image").append(edit_image_link);
                            $('.edit_image_' + id).on('click', function () {
                                apply_cropper_event(id, parent.find("img").clone());
                                $("#crop-image").foundation("open");
                            });
                        }
                    });
                }, 100);

                $(formSelector + ' input[name="image_url_' + language + '"]').val(false);
            }
        });
    }
    if (jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            var language = title.Language;
            var value = title.Title;

            $('#corporate-image-form input[name="title_' + language + '"]').val(value);
        });
    }
    if (jsonResult.blockCorporateImageData.length > 0) {
        jsonResult.blockCorporateImageData.forEach(function (corporateImage) {
            if (corporateImage.LanguageCorporate) {
                var languageSlogans = JSON.parse(corporateImage.LanguageCorporate);

                //Assign slogans
                languageSlogans.forEach(function (sloganItem) {
                    var language = sloganItem.LanguageID;
                    var slogan = sloganItem.Slogan;

                    $('#corporate-image-form input[name="slogan_' + language + '"]').val(slogan);
                });
            }
        });
    }
}
function rollback_sponsorBlock(jsonResult) {

    hideVisibleOptions(jsonResult.uniqueRegion, '#sponsor-advanced-settings');
    //Assign Data to modal
    if (jsonResult.blockData) {
        $('#sponsor-form input[name="sponsor_block_system_name"]').val(jsonResult.blockData.BlockName);
        $('#sponsor-form select[name="sponsor_region"]').val(jsonResult.blockData.Region);
        $('#sponsor-form input[name="sort_weight"]').val(jsonResult.blockData.Weight);
        $('#sponsor-form input[name="enabled"]').prop('checked', jsonResult.blockData.Enabled);
        $('#sponsor-form #sponsor_visibility_' + jsonResult.blockData.Visibility).prop('checked', true);
        if (jsonResult.blockData.ShowTitle) {
            $('#sponsor-form input[name="sponsor_show_title"]').val(jsonResult.blockData.ShowTitle);
            $('#sponsor-form input.sponsor-show-title').prop('checked', true);
        }
        else {
            $('#sponsor-form input[name="sponsor_show_title"]').val(null);
            $('#sponsor-form input.sponsor-show-title').prop('checked', false);
        }

        switch (jsonResult.blockData.Visibility) {
            case 2:
            case 1:
                $('#sponsor-form #sponsor_exception_url_container').removeClass('is-hidden');
                break;
            case 0:
                $('#sponsor-form #sponsor_exception_url_container').addClass('is-hidden');
                break;
        }
        if (jsonResult != null && jsonResult.blockData != null && jsonResult.blockData.VisibilityUrls != null)
            $('#sponsor-form #sponsor_exception_urls').val(jsonResult.blockData.VisibilityUrls);
        else
            $('#sponsor-form #sponsor_exception_urls').val("");
    }
    if (jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            var language = title.Language;
            var value = title.Title;

            $('#sponsor-form input[name="title-' + language + '"]').val(value);
        });
    }
    if (jsonResult.blockLanguageSponsor.length > 0) {
        jsonResult.blockLanguageSponsor.forEach(function (languageSponsor) {
            var language = languageSponsor.Language;
            var value = languageSponsor.textSeeAll;

            $('#sponsor-form input[name="text-see-all-' + language + '"]').val(value);
        });
    }
    if (jsonResult.blockSponsor) {
        $('#sponsor-form input[name="see_all_enabled"]').prop('checked', jsonResult.blockSponsor.displayLinkSeeAll);
    }
    if (jsonResult.blockImageData.length > 0) {
        //Clean the listing of sponsors
        $('.items-sponsors').empty();

        jsonResult.blockImageData.forEach(function (item) {
            if (item.isDeleted === false || item.isDeleted === null) {
                load_sponsor_item_rollback(item);
            }
        });
    }

    //Initialize hidden of Sponsors deleted
    $('#sponsor-form input[name="sponsors_deleted"]').val('');
}
function rollback_menuBlock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#menu-advanced-settings');

    //Assign Data to modal
    if (jsonResult.blockData) {
        $('#menu-management input[name="menu_system_name"]').val(jsonResult.blockData.BlockName);
        $('#menu-management select[name="menu_region"]').val(jsonResult.blockData.Region);
        $('#menu-management input[name="sort_weight"]').val(jsonResult.blockData.Weight);
        $('#menu-management input[name="enabled"]').prop('checked', jsonResult.blockData.Enabled);
        $('#menu-management input[name="show_title"]').prop('checked', jsonResult.blockData.ShowTitle);
        $('#menu-management #visibility_' + jsonResult.blockData.Visibility).prop('checked', true);

        switch (jsonResult.blockData.Visibility) {
            case 2:
            case 1:
                $('#menu-management #exception_url_container').removeClass('is-hidden');
                break;
            case 0:
                $('#menu-management #exception_url_container').addClass('is-hidden');
                break;
        }

        $('#menu-management #exception_url').val(jsonResult.blockData.VisibilityUrls);
    }
    if (jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            var language = title.Language;
            var value = title.Title;

            $('#menu-management input[name="title-' + language + '"]').val(value);
        });
    }
}
function rollback_menuItem(jsonResult) {
    //Assign values
    if (jsonResult.blockLanguageMenuItem.length > 0) {
        jsonResult.blockLanguageMenuItem.forEach(function (languageMenuItem) {
            var language = languageMenuItem.Language;
            var value = languageMenuItem.Title;

            $('#menu-item-conf-form input[name="title-' + language + '"]').val(value);
        });
    }
    if (jsonResult.blockMenuItem) {
        $('#menu-item-conf-form select[name="page_id"]').val(jsonResult.blockMenuItem.Url.substring(1, jsonResult.blockMenuItem.Url.length));
        $('#menu-item-conf-form input[name="target_path"]').val(jsonResult.blockMenuItem.Url);
        $('#menu-item-conf-form select[name="parent_select"]').val((jsonResult.blockMenuItem.ParentItemID != null) ? jsonResult.blockMenuItem.ParentItemID : 0);
        $('#menu-item-conf-form input[name="sort_weight"]').val(jsonResult.blockMenuItem.Weight);
        $('#menu-item-conf-form select[name="visible_to"]').val(jsonResult.blockMenuItem.Visibility);
        $('#menu-item-conf-form select[name="target_select"]').val(jsonResult.blockMenuItem.Target);
        $('#menu-item-conf-form select[name="type_select"]').val(jsonResult.blockMenuItem.Type);
        $('#menu-item-conf-form input[name="enabled"]').prop('checked', jsonResult.blockMenuItem.Enabled);
    }
}
function rollback_rssBlock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#rss-block-advanced-settings');

    //Assign Data to modal
    if (jsonResult.blockData) {
        $('#rss-block-management input[name="rss_system_name"]').val(jsonResult.blockData.BlockName);
        $('#rss-block-management select[name="rss_region"]').val(jsonResult.blockData.Region);
        $('#rss-block-management input[name="weight-rss"]').val(jsonResult.blockData.Weight);
        $('#rss-block-management input[name="enabled-rss"]').prop('checked', jsonResult.blockData.Enabled);
        $('#rss-block-management input[name="show_title_rss"]').prop('checked', jsonResult.blockData.ShowTitle);
        $('#rss-block-management #visibility_rss_' + jsonResult.blockData.Visibility).prop('checked', true);

        switch (jsonResult.blockData.Visibility) {
            case 2:
            case 1:
                $('#rss-block-management #exception_url_container_rss').removeClass('is-hidden');
                break;
            case 0:
                $('#rss-block-management #exception_url_container_rss').addClass('is-hidden');
                break;
        }

        $('#rss-block-management #exception_url_rss').val(jsonResult.blockData.VisibilityUrls);
    }
    if (jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            var language = title.Language;
            var value = title.Title;

            $('#rss-block-management input[name="title-' + language + '"]').val(value);
        });
    }
    if (jsonResult.blockRSS.length > 0) {
        jsonResult.blockRSS.forEach(function (title) {
            var language = title.Language;
            var value = title.FeedUrl;

            $('#rss-block-management input[name="feed_url_' + language + '"]').val(value);
        });
    }
    if (jsonResult.blockRSS.length > 0) {
        jsonResult.blockRSS.forEach(function (title) {
            var language = title.Language;
            var value = title.FeedReadMoreUrl;
            $('#rss-block-management input[name="feed_read_more_url_' + language + '"]').val(value);
        });
    }
    
}
function rollback_volunteerForm(jsonResult) {
    if (jsonResult.blockFormSetting.length > 0) {
        jsonResult.blockFormSetting.forEach(function (blockInfo) {
            var settings = [];
            if (blockInfo.settingsJSON != null && blockInfo.settingsJSON != undefined)
                settings = blockInfo.settingsJSON;
            else if (blockInfo.Settings != null && blockInfo.Settings != undefined && blockInfo.Settings.trim() != '')
                settings = JSON.parse(blockInfo.Settings);
            if (settings.length > 0) {
                //Clean all fields
                $('#volunteer-fields-management input[type="checkbox"]').prop('checked', false);

                settings.forEach(function (setting) {
                    var field = setting.name;
                    var required = setting.required;
                    var visible = setting.visible;

                    $('#volunteer-fields-management input[name="yes-no-visible--' + field + '"').prop('checked', visible);
                    $('#volunteer-fields-management input[name="yes-no-required--' + field + '"').prop('checked', required);
                });
            }
        });
    }
}
function rollback_calendarBlock(jsonResult) {
    if (jsonResult.blockCalendar.length > 0) {
        jsonResult.blockCalendar.forEach(function (blockInfo) {
            if (blockInfo.Settings) {
                //Clean all options
                $('#calendar-filter-settings .listing-filters-calendar input[id*=yes-no-visible--]').prop('checked', false);

                //Read all fields and populate radio button
                var settings = JSON.parse(blockInfo.Settings.replaceAll("'", '"').toString());
                var filters = JSON.parse(settings.filters);

                filters.forEach(function (field) {
                    if (field === 'appropiate_groups' || field === 'appropiate_seniors' || field === 'appropiate_court_ordered') {
                        field = field + '_yes';
                    }

                    $('#calendar-filter-settings .listing-filters-calendar input#yes-no-visible--' + field).prop('checked', true);
                });
            }
        });
    }
}
function rollback_advancedSeachBlock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#advanced-search-advanced-settings');

    //Assign Data to modal
    if (jsonResult.blockData) {
        $('#advanced-search-management input[name="advanced_search_system_name"]').val(jsonResult.blockData.BlockName);
        $('#advanced-search-management select[name="advanced_search_region"]').val(jsonResult.blockData.Region);
        $('#advanced-search-management input[name="weight-asearch"]').val(jsonResult.blockData.Weight);
        $('#advanced-search-management input[name="enabled-asearch"]').prop('checked', jsonResult.blockData.Enabled);
        if (jsonResult.blockData.ShowTitle) {
            $('#advanced-search-management input[name="show_title_asearch"]').val(jsonResult.blockData.ShowTitle);
            $('#advanced-search-management input.show-title-asearch').prop('checked', true);
        }
        else {
            $('#advanced-search-management input[name="show_title_asearch"]').val(null);
            $('#advanced-search-management input.show-title-asearch').prop('checked', false);
        }
        $('#advanced-search-management #visibility_asearch_' + jsonResult.blockData.Visibility).prop('checked', true);

        switch (jsonResult.blockData.Visibility) {
            case 2:
            case 1:
                $('#advanced-search-management #exception_url_container_asearch').removeClass('is-hidden');
                break;
            case 0:
                $('#advanced-search-management #exception_url_container_asearch').addClass('is-hidden');
                break;
        }

        $('#advanced-search-management #visibility_asearch_urls').val(jsonResult.blockData.VisibilityUrls);
    }
    if (jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            var language = title.Language;
            var value = title.Title;

            $('#advanced-search-management input[name="title-' + language + '"]').val(value);
        });
    }
    if (jsonResult.blockAdvancedSearch) {
        //Clean all options
        $('#advanced-search-management .basic_options input[type=checkbox]').prop('checked', false);

        $('#advanced-search-management input[name="share-section-1"]').prop('checked', jsonResult.blockAdvancedSearch.ShowSaveShareSection);
        $('#advanced-search-management input[name="like-todo-section-1"]').prop('checked', jsonResult.blockAdvancedSearch.ShowLikeToDoSection);
        $('#advanced-search-management input[name="appropiate-section-1"]').prop('checked', jsonResult.blockAdvancedSearch.ShowAppropiateForSection);
        $('#advanced-search-management input[name="available-section-1"]').prop('checked', jsonResult.blockAdvancedSearch.ShowAvailableSection);
        $('#advanced-search-management input[name="like-serve-section-1"]').prop('checked', jsonResult.blockAdvancedSearch.ShowLikeToServeSection);
        $('#advanced-search-management input[name="icode-section-1"]').prop('checked', jsonResult.blockAdvancedSearch.ShowInvitationCodeSection);
        $('#advanced-search-management input[name="show-keywords-field"]').prop('checked', jsonResult.blockAdvancedSearch.ShowKeywordsField);
        $('#advanced-search-management input[name="show-schedule-type"]').prop('checked', jsonResult.blockAdvancedSearch.ShowScheduleTypeField);
        $('#advanced-search-management input[name="show-location-field"]').prop('checked', jsonResult.blockAdvancedSearch.ShowLocationNameField);
        $('#advanced-search-management input[name="show-distance-field"]').prop('checked', jsonResult.blockAdvancedSearch.ShowDistanceField);
        $('#advanced-search-management input[name="show-zipcode-field"]').prop('checked', jsonResult.blockAdvancedSearch.ShowZipCodeField);
        $('#advanced-search-management input[name="show-location-type"]').prop('checked', jsonResult.blockAdvancedSearch.ShowLocationType);
    }
}
function save_meta_tag() {
    if (!is_backend_page()) return;

    $('.backend-page').on('click', 'a.save', function () {
        var metatag_item = $(this).closest('.metatag-item');
        var parent = $(this).parent();
        metatag_item.find('.og_property_item').attr('disabled', true);
        var new_val = metatag_item.find('.og_content_item').val();
        metatag_item.find('.og_content_item').attr("value", new_val);
        metatag_item.find('.og_content_item').attr('readonly', true);
        parent.html('<a class="edit"></a>');
    });
}

function show_help_tip() {

    $("body .help-tip").on("click", function () {
        $(this).find("p").show();
    });
}

function validate_save_menu() {
    if (!is_backend_page()) return;
    if ($('#menu-edit-backend').length > 0) {
        $(document).on("click", "#menu-management input[type='submit']", function () {
            var revealParent = $(this).parents('.reveal');
            var languageDefault = revealParent.find('input[name="language_default"]').val();

            //Open tab with title by default
            $(revealParent).find('#language-panel-' + languageDefault + '-label').trigger('click');
        });
    }
}

function validate_submit_forms() {
    if ($('form.submit-form').length > 0) {
        $(document).on("click", "form.submit-form input[type='submit']", function () {
            if ($(this).parents('form').valid()) {
                var processingScreen = $(this).parents('form').first().find('.processing_screen').first();

                $(this).attr('disabled', 'disabled');
                processingScreen.show();
                $(this).parents('form').submit();
            }
        });
    }
}

function profiles_management() {
    if (!is_backend_page()) return;
    if (window.location.hash) {
        if (window.location.hash.indexOf('open-profiles-management') != -1) {
            $("#profiles-management").foundation('open');
            open_profiles_management();
        }
    }
    $(document).on('click', 'a#open-profiles-management', function () {
        open_profiles_management();
        return false;
    });

    $(document).on('click', '#profiles-management .save-profiles', function () {
        //Logic for CSRF token
        var theForm = $(this).closest('form');
        var requestVerificationToken = '';
        if (theForm !== null) {
            var theDataForm = theForm.serializeObject();
            requestVerificationToken = theDataForm['__RequestVerificationToken'];
        }

        $('#profiles-management .processing_screen').show();
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        var Profiles = new Array();
        $('#profiles-management input:checkbox.profile_permission_checkbox').each(function (index, element) {
            var Profile = $(this).data('profile');
            var Permission = $(this).data('permission');
            if (Profiles.length == 0) {
                push_permission(Profile, Permission, Profiles, this, requestVerificationToken);
            }
            else {
                var search = $.grep(Profiles, function (e) { return e.Name == Profile; });
                if (search.length == 0) {
                    push_permission(Profile, Permission, Profiles, this, requestVerificationToken);
                }
                else {
                    var p = search[0];
                    if (!(Permission in p.ProfilePermissions)) {
                        p.ProfilePermissions[Permission] = {
                            Item: null, CanRead: false, CanCreate: false, CanEdit: false, CanDelete: false
                        };
                    }
                    if ($(element).is(':checked')) {
                        p.ProfilePermissions[Permission][$(element).prop('name')] = true;
                    }
                }
            }
        });

        var finalData = new Object();

        finalData["__RequestVerificationToken"] = requestVerificationToken;
        finalData["profilesData"] = JSON.stringify(Profiles);

        $.ajax({
            url: urlSite + "admin/UpdateProfiles",
            type: "POST",
            data: finalData,
            success: function (jsonResult) {

                jsonResult = JSON.parse(jsonResult);
                swal_settings = {
                    title: jsonResult.title,
                    text: jsonResult.message,
                    icon: "success",
                    showCancelButton: false,
                    confirmButtonText: "Ok"
                };
                var callback = function (result) {
                    $("#profiles-management").foundation('close');
                }
                if (jsonResult.status != 200) {
                    swal_settings.type = "error";
                    callback = null;
                }

                Swal.fire(swal_settings).then(callback);

            },
            complete: function (jqXHR, textStatus) {
                $('#profiles-management .processing_screen').hide();
            }
        });
    });

    $(document).on('click', '#profiles-management .profile_permission_checkbox', function () {
        if (($(this).prop('name') == 'CanEdit' || $(this).prop('name') == 'CanDelete') && !$(this).closest('tr').find('input:checkbox[name="CanRead"]').is(':checked')) {
            $(this).closest('tr').find('input:checkbox[name="CanRead"]').prop('checked', true);
        }
        if ($(this).prop('name') == 'CanRead' && !$(this).is(':checked')) {
            $(this).closest('tr').find('input:checkbox[name="CanEdit"], input:checkbox[name="CanDelete"]').prop('checked', false);
        }

        try {
            var permissionName = $(this).data('permission');
            if ($(this).prop('name') == 'CanCreate' && (permissionName == 'Volunteer Opportunity' || permissionName == 'Occurrence') ) {
                var parentDiv = $(this).parents('div.profile-table-container');
                if (parentDiv !== undefined) {
                    var canCreateRecurrenceElement = parentDiv.find('input[data-permission="Recurrence"][name="CanCreate"]');
                    var shouldHasCreateRecurrenceEnabled = false;

                    var canCreateOccOrVoElement = undefined;

                    if (permissionName == 'Volunteer Opportunity')
                        canCreateOccOrVoElement = parentDiv.find('input[data-permission="Occurrence"][name="CanCreate"]');
                    else
                        canCreateOccOrVoElement = parentDiv.find('input[data-permission="Volunteer Opportunity"][name="CanCreate"]');

                    if ($(this).is(':checked') === true || (canCreateOccOrVoElement !== undefined && canCreateOccOrVoElement !== null && canCreateOccOrVoElement.is(':checked') === true))
                        shouldHasCreateRecurrenceEnabled = true;

                    if (canCreateRecurrenceElement !== undefined) {
                        if (shouldHasCreateRecurrenceEnabled === true) {
                            canCreateRecurrenceElement.prop('disabled', false);
                            // Remove the disabled for CanCreate recurrence
                        } else {
                            // disabled CanCreate for Recurrence
                            canCreateRecurrenceElement.prop('disabled', true);
                            canCreateRecurrenceElement.prop('checked', false);
                        }
                    } 
                } 
            }
        } catch (e) {
            console.log(e.message);
        }
    });

    $(document).on('click', '#profiles-management h4.profile-name', function () {
        $(this).next(".profile-table-container").slideToggle();
    });
}

function push_permission(Profile, Permission, Profiles, element, requestVerificationToken) {
    var ProfilePermissions = {};
    ProfilePermissions[Permission] = {
        Item: null, CanRead: false, CanCreate: false, CanEdit: false, CanDelete: false
    };
    if ($(element).is(':checked')) {
        ProfilePermissions[Permission][$(element).prop('name')] = true;
    }
    var p = {
        Name: Profile,
        ProfilePermissions: ProfilePermissions,
    };
    Profiles.push(p);
}

/**

Methods called after get translation of resources

**/

function add_meta_tags() {
    if (!is_backend_page()) return;
    $('.backend-page').on('click', 'a#og_add_meta', function () {
        var modal = $(this).parents('.reveal').first();
        var lang_id = $(this).attr("data-language-id");
        var property = modal.find('#og_property_' + lang_id).val();
        var property_object = modal.find('#og_property_' + lang_id);
        var content = modal.find('#og_content_' + lang_id).val();
        if (property !== 'meta_custom') {
            if (modal.find(".metatag_items_" + lang_id).find('select[data-property="' + property + '"]').length > 0) {
                Swal.fire({
                    title: window.translation.property_already_added,
                    icon: "error",
                    text: window.translation.please_select_a_different_property,
                    confirmButtonText: "Ok"
                });
                //$.growl.error({ title: window.translation.property_already_added, message: window.translation.please_select_a_different_property });
                return false;
            }
            if (property == "" || content == "") {
                Swal.fire({
                    title: window.translation.empty_fields,
                    icon: "error",
                    text: window.translation.please_fill_both_property_content_values,
                    confirmButtonText: "Ok"
                });
                //$.growl.error({ title: window.translation.empty_fields, message: window.translation.please_fill_both_property_content_values });
            }
            else if (property != "" && content != "") {
                property_object.find('option').removeAttr("selected");
                property_object.find('option[value="' + property + '"]').attr('selected', 'selected');
                var item = '<div class="row metatag-item">'
                    + '<div class="large-5 medium-5 small-12 columns">'
                    + '<div class="row">'
                    + '<div class="small-12 medium-4 columns">'
                    + '<label class="text-left middle">' + window.translation.property + ': </label>'
                    + '</div>'
                    + '<div class="small-12 medium-8 columns input">'
                    + '<select class="og_property_item_' + lang_id + '_' + property + ' og_property_item" name="selectbox" disabled data-property=' + property + '>'
                    + property_object.html()
                    + '</select>'
                    + '</div>'
                    + '</div>'
                    + '</div>'
                    + '<div class="large-5 medium-5 small-12 columns">'
                    + '<div class="row">'
                    + '<div class="small-12 medium-3 columns">'
                    + '<label class="text-left middle">' + window.translation.content + ':</label>'
                    + '</div>'
                    + '<div class="small-12 medium-9 columns">'
                    + '<input class="og_content_item_' + lang_id + ' og_content_item" type="text"  name="og_content_item_' + lang_id + '_' + property + '" value="' + content + '" readonly>'
                    + '</div>'
                    + '</div>'
                    + '</div>'
                    + '<div class="large-2 medium-2 small-12 columns">'
                    + '<div class="row">'
                    + '<div class="medium-3 columns">'
                    + '<a class="edit"></a>'
                    + '</div>'
                    + '<div class="medium-3 columns">'
                    + '<a class="delete"></a>'
                    + '</div>'
                    + '</div>'
                    + '</div>'
                    + '</div>';
                var object = $(item);
                object.find('.og_content_item_' + lang_id + '_' + property).val(content);
                modal.find('.metatag_items_' + lang_id).append(object);
                modal.find('#og_content_' + lang_id).val('');
            }
        } else {
            var name = modal.find('#og_name_' + lang_id).val();
            var nameField = name.replaceAll(' ', '_');
            if (modal.find(".metatag_items_" + lang_id).find('select[data-property="' + name + '"]').length > 0) {
                Swal.fire({
                    title: window.translation.property_already_added,
                    icon: "error",
                    text: window.translation.please_select_a_different_property,
                    confirmButtonText: "Ok",
                });
                //$.growl.error({ title: window.translation.property_already_added, message: window.translation.please_select_a_different_property });
                return false;
            }
            if (property == "" || content == "" || name == "") {
                Swal.fire({
                    title: window.translation.empty_fields,
                    icon: "error",
                    text: window.translation.please_fill_both_property_content_values,
                    confirmButtonText: "Ok",
                });
                //$.growl.error({ title: window.translation.empty_fields, message: window.translation.please_fill_both_property_content_values });
            } else if (property != "" && content != "" && name != "") {
                var propertyNew = property_object.clone();

                propertyNew.find('option').removeAttr("selected");
                propertyNew.append('<option value="' + nameField + '">meta:' + nameField + '</option>');
                propertyNew.find('option[value="' + nameField + '"]').attr('selected', 'selected')
                var item = '<div class="row metatag-item">'
                    + '<div class="large-5 medium-5 small-12 columns">'
                    + '<div class="row">'
                    + '<div class="small-12 medium-4 columns">'
                    + '<label class="text-left middle">' + window.translation.property + ': </label>'
                    + '</div>'
                    + '<div class="small-12 medium-8 columns input">'
                    + '<select class="og_property_item_' + lang_id + '_' + property + ' og_property_item" name="selectbox" disabled data-property=' + name + '>'
                    + propertyNew.html()
                    + '</select>'
                    + '</div>'
                    + '</div>'
                    + '</div>'
                    + '<div class="large-5 medium-5 small-12 columns">'
                    + '<div class="row">'
                    + '<div class="small-12 medium-3 columns">'
                    + '<label class="text-left middle">' + window.translation.content + ':</label>'
                    + '</div>'
                    + '<div class="small-12 medium-9 columns">'
                    + '<input type="text" class="og_content_item_' + lang_id + ' og_content_item" type="text"  name="og_content_item_' + lang_id + '_' + property + '_' + nameField + '" value="' + content + '" readonly>'
                    + '<input type="hidden" class="og_content_item_' + lang_id + ' og_content_name_item"  name="og_content_name_item_' + lang_id + '_' + property + '_' + nameField + '" value="' + nameField + '">'
                    + '</div>'
                    + '</div>'
                    + '</div>'
                    + '<div class="large-2 medium-2 small-12 columns">'
                    + '<div class="row">'
                    + '<div class="medium-3 columns">'
                    + '<a class="edit"></a>'
                    + '</div>'
                    + '<div class="medium-3 columns">'
                    + '<a class="delete"></a>'
                    + '</div>'
                    + '</div>'
                    + '</div>'
                    + '</div>';
                var object = $(item);
                object.find('.og_content_item_' + lang_id + '_' + property).val(content);
                modal.find('.metatag_items_' + lang_id).append(object);
                modal.find('#og_content_' + lang_id).val('');
                modal.find('#og_name_' + lang_id).val('');
            }
        }
        
    });
}

function add_slide() {
    if (!is_backend_page()) return;
    $('.backend-page').on('click', 'a.add_slide_btn', function () {
        var parentModal = $(this).parents('.reveal').first();
        var selectMultiple = parentModal.find('select[multiple="multiple"]');
        var recommendedSizeText = retrieve_resource_recommended_size_default(parentModal, false);
        var recommendedSection = retrieve_recommended_size_section(recommendedSizeText);
        var lang_id = $(this).attr("data-language-id");
        var sliderClass = $(this).attr("data-slide");
        var cant_slides = $(".slides_" + lang_id + " .slide-item").length;
        var item = cant_slides + 1;
        var obj = '<div class="row slide-item slide_' + item + '_item_' + lang_id + '" data-slide-id="null" data-operation="add">'
            + '<div class="large-5 small-12 columns">'
            + '<input type="file" data-item-num="' + item + '" title="' + window.translation.choose_a_file + '" alt="' + window.translation.choose_a_file + '" id="slide_' + item + '_' + lang_id + '" name="slide_' + item + '_' + lang_id + '" data-filetype="image" data-keys="slide_' + item + '_' + lang_id + '" data-language-id="' + lang_id + '" class="form-control slide_image" accept="image/png, image/jpeg, image/gif">'
            + '<input class="image-source-field" name="image_slide_' + item + '_url_' + lang_id + '" id="image_slide_' + item + '_url_' + lang_id + '" type="hidden" value="false" />'
            + '<input name="image_slider_' + item + '_id_' + lang_id + '" id="image_slider_' + item + '_id_' + lang_id + '" class="change_image" type="hidden" value="0" />'
            + '<input name="cropped_slide_' + item + '_' + lang_id + '" id="cropped_slide_' + item + '_' + lang_id + '" type="hidden" value="false" />'
            + '<input name="cropped_data_slide_' + item + '_' + lang_id + '" id="cropped_data_slide_' + item + '_' + lang_id + '" type="hidden" />'
            + '<p class="help-text space-top" style="margin-top: -5px; padding-top: 0px">'
            + '<a href="#" class="browse-img-slider-' + lang_id + '-' + item + '" data-language-id="' + lang_id + '" data-item-num="' + item + '">' + window.translation.browse + '</a>'
            + '<span class="remove_image"></span>'
            + '</p>'
            + recommendedSection
            + '</div>'
            + '<div class="large-7 small-12 columns">'
            + '<div class="row">'
            + '<div class="small-12 columns">'
            + '<label class="required">' + window.translation.title + ': </label>'
            + '<input id="title_slide_' + item + '_' + lang_id + '" name="title_slide_' + item + '_' + lang_id + '"  type="text" />'
            + '</div>'
            + '</div>'
            + '<div class="row">'
            + '<div class="small-9 columns">'
            + '<label class="required" style="text-align: left;">' + window.translation.region_setting_title_color + ': </label>'
            + '<input class="color-picker-box-field" id="title_color_' + item + '_' + lang_id + '" name="title_color_' + item + '_' + lang_id + '"  type="text" />'
            + '</div>'
            + '<div class="small-3 columns">'
            + '<label class="required">' + window.translation.size + ': </label>'
            + '<input id="title_size_' + item + '_' + lang_id + '" name="title_size_' + item + '_' + lang_id + '" type="number" />'
            + '</div>'
            + '</div>'
            + '<div class="row">'
            + '<div class="small-9 columns">'
            + '<label class="required">HTML alt: </label>'
            + '<input id="alt_slide_image_' + item + '_' + lang_id + '" name="alt_slide_image_' + item + '_' + lang_id + '" type="text" />'
            + '</div>'
            + '<div class="small-3 columns">'
            + '<label class="required">' + window.translation.weight + ': </label>'
            + '<input id="weight_slide_' + item + '_' + lang_id + '" name="weight_slide_' + item + '_' + lang_id + '" type="number" />'
            + '</div>'
            + '</div>'
            + '<div class="row">'
            + '<div class="small-12 columns">'
            + '<label class="required">HTML title: </label>'
            + '<input id="html_title_slide_image_' + item + '_' + lang_id + '" name="html_title_slide_image_' + item + '_' + lang_id + '" type="text" />'
            + '</div>'
            + '</div>'
            + '<div class="row">'
            + '<div class="small-12 columns">'
            + '<label class="required">' + window.translation.type_of_link + ': </label>'
            + '<select name="link_type_slide_' + item + '_' + lang_id + '" class="link-type-field-form" data-language-id="' + lang_id + '" data-item-id="' + item + '">'
            + '<option value="0">' + window.translation.none + '</option>'
            + '<option value="1">' + window.translation.in_image + '</option>'
            + '<option value="2">' + window.translation.in_button + '</option>'
            + '<option value="3">' + window.translation.in_slide + '</option>'
            + '</select>'
            + '</div>'
            + '</div>'
            + '<div class="row open-slide">'
            + '<div class="small-12 columns">'
            + '<label class="required">' + window.translation.open_in + ': </label>'
            + '<select name="open_slide_' + item + '_' + lang_id + '" class="open-slide" data-language-id="' + lang_id + '" data-item-id="' + item + '">'
            + '<option value="0">' + window.translation.same_window + '</option>'
            + '<option value="1">' + window.translation.new_tab + '</option>'
            + '</select>'
            + '</div>'
            + '</div>'
            + '<div class="row button-section-slide" id="button-section-' + item + '-' + lang_id + '" >'
            + '<div class="small-12 columns">'
            + '<label class="required">' + window.translation.button_title + ': </label>'
            + '<input id="link_button_text_' + item + '_' + lang_id + '" name="link_button_text_' + item + '_' + lang_id + '" type="text" value="" />'
            + '</div>'
            + '</div>'
            + '<div class="row">'
            + '<div class="small-12 columns">'
            + '<label class="required">' + window.translation.link_to + ': </label>'
            + '<input id="link_slide_' + item + '_' + lang_id + '" name="link_slide_' + item + '_' + lang_id + '"  type="text" />'
            + '</div>'
            + '</div>'
            + '</div>'
            + '<div class="large-12 small-12 columns">'
            + '<div class="row">'
            + '<div class="small-12 columns">'
            + '<label for="slide_summary_' + item + '_' + lang_id + '" class="text-left middle minimal-line">' + window.translation.summary + ':</label>'
            + '<textarea id="slide_summary_' + item + '_' + lang_id + '" class="text-left middle minimal-line" name="slide_summary_' + item + '_' + lang_id + '"></textarea>'
            + '</div>'
            + '<div class="large-12 medium-12 small-12 columns">'
            + '<a class="remove_slide" data-slide="slide_' + item + '_item_' + lang_id + '" data-image-id="0" title="' + window.translation.remove + '">' + window.translation.remove + '</a>'
            + '</div>'
            + '</div>'
            + '</div>'
            + '</div>';
        var object = $(obj);
        $('.slides_' + lang_id).append(object);
        $('input[name="count_slides_' + lang_id + '"]').val(item);
        createColorPickerField($("#title_color_" + item + "_" + lang_id), null);

        var selector = $('input[name="slide_' + item + '_' + lang_id + '"]');
        var id = $(selector).attr("id");
        var parent = $(selector).parent();
        if (parent.hasClass("ezdz-dropzone")) {
            $(this).ezdz("destroy");
        }

        //init wysiwyg for slide_summary
        var summaryField = $('textarea[name="slide_summary_' + item + '_' + lang_id + '"]');
        var idSummaryField = $(summaryField).attr("id");
        initialize_ckeditor_ars(idSummaryField, "");
        assign_pending_change_value("#block-slider-form");
        $('#button-section-' + item + '-' + lang_id).hide();
        $('input[name="link_slide_' + item + '_' + lang_id + '"]').parents('.row').first().hide();
        $('select[name="open_slide_' + item + '_' + lang_id + '"]').parents('.open-slide').first().hide();

        var type = $(selector).attr('data-filetype');
        var mimeTypes = $(selector).attr('accept');
        var textCustom = (type == 'image') ? translation.add_picture_drop_picture : translation.add_file_drop_file;

        selector.ezdz({
            text: textCustom,
            previewImage: true,
            validators: {
                maxSize: 3145728
            },
            enter: function () {
                if (selector.parent().hasClass('ezdz-reject')) {
                    selector.parent().removeClass('ezdz-reject');
                }
            },
            accept: function (file) {
                selector.parent().next().val(true);

                var id = selector.attr('id');
                var parent = selector.parent(".ezdz-dropzone");
                var delete_image_link = '<a data-image="' + id + '" class="delete_image">Delete</a>';
                var edit_image_link = '<a data-image="' + id + '" class="edit_image edit_image_' + id + '">Edit</a>';

                // Put link below image preview.
                if (parent.parent().find('.delete_image').length == 0) {
                    parent.parent().find(".remove_image").append(delete_image_link);
                    parent.parent().find(".remove_image").removeClass("is-hidden");
                }

                if (parent.find("img").length > 0) {
                    var tabSelector = ".slide_" + item + "_item_" + lang_id + " .ezdz-dropzone img";
                    if ($(tabSelector).length > 0) {
                        $(tabSelector).attr("id", "slider-image-preview-lang-" + item + "-item-" + lang_id);
                    }

                    parent.parent().find('.edit_image_' + id).remove();
                    parent.parent().find(".remove_image").append(edit_image_link);
                    $('.edit_image_' + id).on('click', function () {
                        apply_cropper_event(id, parent.find("img").clone());
                        $("#crop-image").foundation("open");

                    });
                }
            },
            reject: function (file, errors) {
                if (errors.mimeType) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok"
                    });
                }

                if (errors.maxSize) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: translation.max_size,
                        confirmButtonText: "Ok"
                    });
                }
            }
        });

        if ($('.browse-img-slider-' + lang_id + '-' + item).length > 0) {
            $('.browse-img-slider-' + lang_id + '-' + item).click(function (e) {
                e.preventDefault();
                var lang = $(this).attr("data-language-id");
                var itemNro = $(this).attr("data-item-num");
                selectFileWithCkFinder("image_slide_" + itemNro + "_url_" + lang, "slider-image-preview-lang-" + itemNro + "-item-" + lang);
                return false;
            });
        }

        if (!recommendedSizeText) {
            var blockId = parentModal.find('input[name="slider_block_id"]').val();

            display_suggested_resolution_in_modal(parentModal, selectMultiple, false, blockId);
        }
    });
}

function add_sponsor() {
    if (!is_backend_page()) return;
    $('.backend-page').on('click', 'a.add_sponsor_btn', function () {
        var parentModal = $(this).parents('.reveal').first();
        var selectMultiple = parentModal.find('select[multiple="multiple"]');
        var recommendedSizeText = retrieve_resource_recommended_size_default(parentModal, true);
        var recommendedSection = retrieve_recommended_size_section(recommendedSizeText);
        var cant_items = $(".items-sponsors .slide-item").length;
        var item = cant_items + 1;
        var obj = '<div class="small-12 columns slide-item slide-item-' + item + '" data-slide-id="null" data-operation="add">'
            + '<div class="large-5 small-12 columns">'
            + '<input type="file"  data-item-num="' + item + '" title="' + window.translation.choose_a_file + '" alt="' + window.translation.choose_a_file + '" id="sponsor_' + item + '" name="image_' + item + '" data-filetype="image" data-keys="image_' + item + '" class="form-control slide_image" accept="image/png, image/jpeg, image/gif">'
            + '<input class="image-source-field" name="image_url_' + item + '" type="hidden" value="false" id="image_url_sponsor_' + item + '"/>'
            + '<input name="cropped_sponsor_' + item + '" id="cropped_sponsor_' + item + '" type="hidden" value="false" />'
            + '<input name="cropped_data_sponsor_' + item + '" id="cropped_data_sponsor_' + item + '" type="hidden" />'
            + '<p class="help-text space-top" style="margin-top: -5px; padding-top: 0px">'
            + '<a href="#" class="browse-img-sponsor-' + item + '" data-item-num="' + item + '">' + window.translation.browse + '</a>'
            + '<span class="remove_image"></span></p>'
            + recommendedSection
            + '</div>'
            + '<div class="large-7 small-12 columns">'
            + '<div class="row">'
            + '<div class="small-12 columns">'
            + '<label class="required">' + window.translation.title + ': </label>'
            + '<input id="title_image_' + item + '" name="title_image_' + item + '" type="text" value=""/>'
            + '<input id="image_id' + item + '" name="image_id' + item + '" class="change_image" type="hidden" value="0" />'
            + '</div>'
            + '</div>'
            + '<div class="row">'
            + '<div class="small-9 columns">'
            + '<label class="required">HTML alt: </label>'
            + '<input id="alt_image_' + item + '" name="alt_image_' + item + '" type="text" value="" />'
            + '</div>'
            + '<div class="small-3 columns">'
            + '<label class="required">' + window.translation.weight + ': </label>'
            + '<input id="weight_image_' + item + '" name="weight_image_' + item + '" type="number" />'
            + '</div>'
            + '</div>'
            + '<div class="row">'
            + '<div class="small-12 columns">'
            + '<label class="required">' + window.translation.link_to + ': </label>'
            + '<input id="link_image_' + item + '" name="link_image_' + item + '"  type="text" value="" />'
            + '</div>'
            + '</div>'
            + '<div class="row">'
            + '<div class="small-12 columns">'
            + '<label class="required">' + window.translation.summary + ': </label>'
            + '<textarea name="summary_image_' + item + '" type="text" value=""></textarea>'
            + '</div>'
            + '</div>'
            + '<div class="row">'
            + '<div class="small-12 columns">'
            + '<a class="remove_sponsor" data-slide="slide-item-' + item + '" data-image-id="0" title="' + window.translation.remove + '">' + window.translation.remove + '</a>'
            + '</div>'
            + '</div>'
            + '</div>'
            + '</div>';

        var object = $(obj);
        $('.items-sponsors').append(object);
        $('input[name="count_sponsors"]').val(item);
        assign_pending_change_value("#sponsor-form");
        var selector = $('.items-sponsors input[name="image_' + item + '"]');
        var id = $(selector).attr("id");
        var parent = $(selector).parent();
        if (parent.hasClass("ezdz-dropzone")) {
            $(this).ezdz("destroy");
        }
        var type = $(selector).attr('data-filetype');
        var mimeTypes = $(selector).attr('accept');
        var textCustom = (type == 'image') ? translation.add_picture_drop_picture : translation.add_file_drop_file;

        selector.ezdz({
            text: textCustom,
            previewImage: true,
            validators: {
                // maxWidth:  2000,
                // maxHeight: 2000,
                maxSize: 3145728,
            },
            enter: function () {
                if (selector.parent().hasClass('ezdz-reject')) {
                    selector.parent().removeClass('ezdz-reject');
                }
            },
            accept: function (file) {
                //Get width and height of image loaded
                selector.parent().next().val(true);

                //Get width and height of image loaded
                var id = selector.attr('id');
                var parent = selector.parent(".ezdz-dropzone");
                var delete_image_link = '<a data-image="' + id + '" class="delete_image">Delete</a>';
                var edit_image_link = '<a data-image="' + id + '" class="edit_image edit_image_' + id + '">Edit</a>';

                // Put link below image preview.
                if (parent.parent().find('.delete_image').length == 0) {
                    parent.parent().find(".remove_image").append(delete_image_link);
                    parent.parent().find(".remove_image").removeClass("is-hidden");
                }

                if (parent.find("img").length > 0) {
                    var tabSelector = ".slide-item-" + item + " .ezdz-dropzone img";
                    if ($(tabSelector).length > 0) {
                        $(tabSelector).attr("id", "sponsor-image-preview-" + item);
                    }

                    parent.parent().find('.edit_image_' + id).remove();
                    parent.parent().find(".remove_image").append(edit_image_link);
                    $('.edit_image_' + id).on('click', function () {
                        apply_cropper_event(id, parent.find("img").clone());
                        $("#crop-image").foundation("open");
                    });
                }
            },
            reject: function (file, errors) {

                if (errors.mimeType) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok"
                    });
                }

                if (errors.maxSize) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: translation.max_size,
                        confirmButtonText: "Ok"
                    });
                }
            }
        });
        if ($('.browse-img-sponsor-' + item).length > 0) {
            $('.browse-img-sponsor-' + item).click(function (e) {
                e.preventDefault();
                var itemNro = $(this).attr("data-item-num");
                selectFileWithCkFinder("image_url_sponsor_" + itemNro, "sponsor-image-preview-" + itemNro);
                return false;
            });
        }

        if (!recommendedSizeText) {
            var blockId = parentModal.find('input[name="block_id"]').val();

            display_suggested_resolution_in_modal(parentModal, selectMultiple, true, blockId);
        }
    });
}

function delete_sponsor() {
    if (!is_backend_page()) return;
    $(".backend-page").on("click", "a.remove_sponsor", function () {
        var slide_to_delete = $(this).attr("data-slide");
        var slide_image_id = $(this).attr("data-image-id");
        var slide_language_id = $(this).parents('.tabs-panel').data('language-id');

        Swal.fire({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_sponsor,
            icon: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: true

        }).then(function (result) {
            if (result.isConfirmed) {
                $(".items-sponsors ." + slide_to_delete).attr('data-operation', 'delete');
                $(".items-sponsors ." + slide_to_delete).remove();
                assign_pending_change_value("#sponsor-form");
                //Add slide to listing of slide to delete
                var slidesToDelete = $('#sponsor-form').find('input[name="sponsors_deleted"]').val();

                if (slidesToDelete) {
                    $('#sponsor-form').find('input[name="sponsors_deleted"]').val(slidesToDelete + ',' + slide_image_id);
                }
                else {
                    $('#sponsor-form').find('input[name="sponsors_deleted"]').val(slide_image_id);
                }

            }
        });


    });
}

function ajax_save_menu_item() {
    if (!is_backend_page()) return;
    if ($("#menu-item-conf-form").length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $(document).on("click", "#menu-item-conf-form input[type='submit']", function () {
            var revealParent = $(this).parents('.reveal');
            var languageDefault = revealParent.find('input[name="language_default"]').val();

            //Open tab with title by default
            $(revealParent).find('#language-item-menu-' + languageDefault + '-label').trigger('click');

            initiate_jquery_validate_reveal(revealParent.find('#menu-item-conf-form'), 'menu-item-conf-form');

            if (revealParent.find('#menu-item-conf-form').valid()) {
                var dataToSend = $("#menu-item-conf-form").serializeObject();

                if ($('#menu-item-configuration-backend .by-session-vars .rule').length > 0) {
                    var ruleList = [];
                    var filterRules = {
                        criteria: $('#menu-item-configuration-backend input[name="advanced-criteria-input"]').val(),
                        filters: []
                    }
                    $('#menu-item-configuration-backend .by-session-vars .rule').each(function (index) {
                        var rule = $(this);
                        var field = rule.data('field');
                        var operator = rule.data('operator');
                        var ruleValue = rule.data('value');
                        var typeField = '';
                        var friendlyField = rule.find('.field_rule').first().text();
                        ruleList.push({
                            fieldId: index + 1,
                            field: field,
                            typeField: typeField,
                            operator: operator,
                            comparisonValue: ruleValue,
                            friendlyFieldName: friendlyField,
                        });
                    });
                    filterRules.filters = ruleList;
                    dataToSend['session_var_settings'] = JSON.stringify(filterRules);
                } else {
                    dataToSend['session_var_settings'] = null;
                }

                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/AddOrUpdateMenuItem",
                    data: dataToSend,
                    beforeSend: function () {
                        revealParent.find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult.status.toString() === "200") {
                        Swal.fire({
                            title: window.translation.success,
                            icon: "success",
                            text: jsonResult.message,
                            confirmButtonText: "Ok"
                        });
                    }
                    else if (jsonResult.status.toString() === "500") {
                        Swal.fire({
                            title: "Error",
                            icon: "error",
                            text: jsonResult.message,
                            confirmButtonText: "Ok"
                        });
                        //Hide processing screen
                        revealParent.find('.processing_screen').hide();
                        return false;
                    }

                    //Update to validate if the menu has changes and the menu item has changes
                    $('#menu-item-edit-backend').find('input[name="block_changes"]').val("true");
                    $('#menu-item-configuration-backend').find('input[name="menu_item_changes"]').val("true");

                    revealParent.foundation('close');

                    //Hide processing screen
                    revealParent.find('.processing_screen').hide();

                    return false;
                });
            }

            return false;
        });

        $(document).on("click", "#menu-item-conf-form a.delete", function () {
            var menuItemId = $(this).parents('.reveal').find('input[name="menu_item_id"]').val();
            var modalObj = $(this).parents('.reveal');

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_menu_item,
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true

            }).then(function (result) {
                if (result.isConfirmed) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/DeleteMenuItem",
                        data: { menuItemId: menuItemId },
                        beforeSend: function () {
                            modalObj.find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status.toString() === "500") {
                            Swal.fire({
                                title: "Error",
                                icon: "error",
                                text: jsonResult.message,
                                confirmButtonText: "Ok"
                            });
                            //$.growl.error({ message: jsonResult.message });	
                        }

                        //Update to validate if the menu has changes and the menu item has changes
                        $('#menu-item-edit-backend').find('input[name="block_changes"]').val("true");
                        $('#menu-item-configuration-backend').find('input[name="menu_item_changes"]').val("true");

                        modalObj.foundation('close');

                        //Hide processing screen
                        modalObj.find('.processing_screen').hide();

                        return false;
                    });

                }
            });


        });
    }
}

function append_link_edit_backend() {
    if (!is_backend_page()) return;
    if ($('body.backend-page').length !== 0) {
        var translation = window.translation;

        $('*[data-admin]').each(function () {
            var component = $(this).data('admin');
            var menu_sharing_portal = $(this).data('menu-sharing-portal');
            var menuId = $(this).data('menu-id');
            var blockId = $(this).data('block-id');
            var self = $(this);
            var titleLink = '';

            if ($(window).width() > 980) {
                if (component) {
                    var elements = component.split(';');
                    elements.forEach(function (element) {
                        var titleLink = element.split('-').join('_');
                        var tooltip = (titleLink.indexOf('_settings') > 0) ? translation[titleLink] : translation[titleLink + '_settings'];
                        var reveal = element + '-edit-backend';

                        if (element === 'form-builder-block') {
                            reveal = 'form-builder-block';
                        }
                        else if (element === 'featured-opp-block-settings') {
                            reveal = 'featured-opp-settings';
                        }

                        var linkEdit = '<a data-element-reveal="' + reveal + '" title="' + tooltip + '" class="edit-component ' + element + '" data-menu-id="' + menuId + '" data-block-id="' + blockId + '"></a>';

                        if (element == 'move') {
                            linkEdit = '<span class="move"></span>';
                        }

                        if (menu_sharing_portal == "not-display-sharing-portal-menu-edit") {
                            linkEdit = "";
                        }

                        self.append(linkEdit);
                    });
                }
            }
        });

        $(window).resize(function () {
            if ($(window).width() > 980) {
                if ($('a[data-element-reveal][class~="edit-component"]').length === 0) {
                    $('*[data-admin]').each(function () {
                        var component = $(this).data('admin');
                        var menuId = $(this).data('menu-id');
                        var blockId = $(this).data('block-id');
                        var self = $(this);
                        var titleLink = '';

                        if (component) {
                            var elements = component.split(';');
                            elements.forEach(function (element) {
                                var titleLink = element.split('-').join('_');
                                var reveal = element + '-edit-backend';
                                if (element === 'form-builder-block') {
                                    reveal = 'form-builder-block';
                                }
                                else if (element === 'featured-opp-settings') {
                                    reveal = 'featured-opp-settings';
                                }

                                var tooltip = translation[titleLink + '_settings'];

                                var linkEdit = '<a data-element-reveal="' + reveal + '" title="' + tooltip + '" class="edit-component ' + element + '" data-menu-id="' + menuId + '" data-block-id="' + blockId + '"></a>';
                                self.append(linkEdit);
                            });
                        }
                    });
                }
                else {
                    $('a[data-element-reveal][class~="edit-component"]').css('display', 'block');
                }
            }
            else {
                $('a[data-element-reveal][class~="edit-component"]').css('display', 'none');
            }
        });
    }
}

function backend_calendar_form_settings() {

    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if ($('body.backend-page').length > 0) {
        $(document).on('click', 'a[data-element-reveal="calendar-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            var basic_search_fields = $('#calendar-filter-settings').data('basic-search-fields');
            var advanced_search_fields = $('#calendar-filter-settings').data('advanced-search-fields');
            var appropiate_for_search_fields = $('#calendar-filter-settings').data('appropiate-for-fields');
            var share_fields = $('#calendar-filter-settings').data('share');
            var labels = $('#calendar-filter-settings').data('labels');

            var countField = 0;

            $('#' + elementReveal).foundation('open');

            $('#' + elementReveal).foundation();

            //Include listing of filters with options visible
            $('#' + elementReveal).find('.listing-filters-calendar ul').empty();

            $('#' + elementReveal).find('.processing_screen').show();

            $('#' + elementReveal).find("#title_tabs li.tabs-title").on("click", function () {
                $(this).parents(".calendar-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });

            //Add filters to each section of listing fields
            $('#' + elementReveal).find('.listing-filters-calendar ul').append('<li class="row title"><span class="title-section">' + window.translation.basic_search_filters + '</span></li>');
            basic_search_fields.forEach(function (field) {
                var newRow = '<li class="row"><div class="small-6 columns"><span>' + labels[countField] + '</span></div><div class="small-6 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '---basic"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                $('#' + elementReveal).find('.listing-filters-calendar ul').append(newRow);

                countField++;
            });

            $('#' + elementReveal).find('.listing-filters-calendar ul').append('<li class="row title"><span class="title-section">' + window.translation.advanced_search_filters + '</span></li>');
            advanced_search_fields.forEach(function (field) {
                var newRow = '<li class="row"><div class="small-6 columns"><span>' + labels[countField] + '</span></div><div class="small-6 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '---advanced"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                $('#' + elementReveal).find('.listing-filters-calendar ul').append(newRow);

                countField++;
            });

            $('#' + elementReveal).find('.listing-filters-calendar ul').append('<li class="row title"><span class="title-section">' + window.translation.appropiate_for_filters + '</span></li>');
            appropiate_for_search_fields.forEach(function (field) {
                //field = field + '_yes';
                var newRow = '<li class="row"><div class="small-6 columns"><span>' + labels[countField] + '</span></div><div class="small-6 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '---appropiate"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                $('#' + elementReveal).find('.listing-filters-calendar ul').append(newRow);

                countField++;
            });

            $('#' + elementReveal).find('.listing-filters-calendar ul').append('<li class="row title"><span class="title-section">' + window.translation.share + '</span></li>');
            share_fields.forEach(function (field) {
                var newRow = '<li class="row"><div class="small-6 columns"><span>' + labels[countField] + '</span></div><div class="small-6 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '---share"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                $('#' + elementReveal).find('.listing-filters-calendar ul').append(newRow);

                countField++;
            });



            $("li.title_tabs").on("click", function () {
                $(this).parents(".calendar-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });

            //Get info of settings saved in database
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetCalendarSettings"
            }).done(function (data) {
                if (data) {
                    var dataResult = JSON.parse(data.toString().replaceAll('\\"', "'"));
                    if (dataResult.setting) {
                        //Read all fields and populate radio button
                        var settings = JSON.parse(dataResult.setting.replaceAll("'", '"').toString());
                        var filters = JSON.parse(settings.filters);

                        filters.forEach(function (field) {
                            if (field === 'appropiate_groups' || field === 'appropiate_seniors' || field === 'appropiate_court_ordered') {
                                field = field + '_yes';
                            }

                            $('.listing-filters-calendar input#yes-no-visible--' + field).prop('checked', true);
                        });
                        dataResult.introCal.forEach(function (item) {
                            var fieldCal = "#" + item.FieldName + "-" + item.LanguageID
                            $(fieldCal).val(item.Value);
                        });

                        $('#' + elementReveal).find(".calendar-ckeditor").each(function () {
                            initialize_ckeditor_ars($(this).attr("id"), "");
                        });


                    }
                    else {
                        //Set all true
                        $('.listing-filters-calendar input[id*=yes-no-visible--]').prop('checked', false);
                    }
                }

                $('#' + elementReveal).find('.processing_screen').hide();
            });
        });
    }

    //Fix in volunteer search filters when not exists filters basic
    if ($('#search_calendar').length > 0) {
        $('#search_calendar .section').each(function () {
            var lenghtInput = $(this).find('input').length;
            var lengthSelect = $(this).find('select').length;
            var lengthTextarea = $(this).find('textarea').length;
            var isFirst = $(this).hasClass('first');

            if (isFirst) {
                if (lenghtInput === 1 && lengthSelect === 0 && lengthTextarea === 0) {
                    $(this).remove();

                    //Modify the second section
                    $('#search_calendar .section.second').addClass('medium-6 end');
                    $('#search_calendar .section.second').removeClass('medium-4');
                }
            }
        });

        //Remove fieldset where there is not sections
        var lenghtInput = $('#search_calendar').find('input').length;
        var lengthSelect = $('#search_calendar').find('select').length;
        var lengthTextarea = $('#search_calendar').find('textarea').length;

        if (lenghtInput === 0 && lengthSelect === 0 && lengthTextarea === 0) {
            $('#search_calendar').parents('.fieldset-step').remove();
        }
    }
}

function backend_menu_edit_events() {
    if (!is_backend_page()) return;

    var translation = window.translation;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $(document).on('click', 'a[data-element-reveal="menu-edit-backend"]', function () {
        var menuID = $(this).data('menu-id');
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var languageId = parseInt($('#' + elementReveal).data('language-id'));
        var titleMenu = '';

        $('#' + elementReveal).foundation('open');

        // Applying validate to rss form. 
        initiate_jquery_validate_reveal($("#menu-management"), 'menu-management');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();
        $('.include-greeting-section').addClass('hide-custom');
        if (menuID != 0 && blockID != 0) {
            $('#' + elementReveal + ' .rollback-link').attr('data-block-id', blockID);
            $('#' + elementReveal + ' .rollback-link').show();
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetMenuInfo",
                data: { menuBlockId: menuID, blockId: blockID },
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                hideVisibleOptions(jsonResult.uniqueRegion, '#menu-advanced-settings');
                if (jsonResult.status === "200") {
                    var visibleToValue = (jsonResult.visibleTo !== '') ? jsonResult.visibleTo : '0';

                    //Reset form
                    $('#' + elementReveal + ' form')[0].reset();

                    //Assing values
                    // 1 - Titles
                    jsonResult.titles.forEach(function (item) {
                        if (item.Key !== null) {
                            var key = item.Key.ID;
                            var value = item.Value;

                            if (parseInt(key) === languageId) {
                                titleMenu = value;
                            }

                            $('input[name="title-' + key + '"]').val(value);

                        }
                    });
                    $('#is_main_navigation').prop('checked', jsonResult.isMainNavigation);

                    if (jsonResult.subsiteId !== 0 && jsonResult.subsiteId !== "0") {
                        if ($('#' + elementReveal).find('select[name="subsite_id"]').length > 0)
                            $('#' + elementReveal).find('select[name="subsite_id"]').val(jsonResult.subsiteId);
                        else
                            $('#' + elementReveal).find('input[name="subsite_id"]').val(jsonResult.subsiteId);
                    }

                    if ($('body.new-template-system').length > 0) {
                        if (jsonResult.isMainNavigation === true) {
                            $('.menu-mobile-section').addClass('hide-custom');
                        } else {
                            $('.menu-mobile-section').removeClass('hide-custom');
                        }

                        $('#include_in_mobile').prop('checked', jsonResult.isMobileMenu);
                        $('#mobile_order').val(jsonResult.orderMobile);
                        if (jsonResult.isMobileMenu === true) {
                            $('.mobile-order-section').removeClass('hide-custom');
                        }

                    }

                    $('#include_greeting').prop('checked', jsonResult.includeGreetingandLogo);
                    $('#partner_switcher').prop('checked', jsonResult.includesPartnerSwitcher);
                    if (jsonResult.includesPartnerSwitcher) {
                        $('.include-greeting-section').removeClass('hide-custom');
                    }
                    else {
                        $('.include-greeting-section').addClass('hide-custom');
                    }

                    $('select[name="display_mode"]').val(jsonResult.TypeDisplay);
                    $('select[name="display_align"]').val(jsonResult.FirstLevelAlign);
                    // 2 - Show title
                    if (jsonResult.showTitleToUser) {
                        $('#show_title_menu').prop('checked', jsonResult.showTitleToUser);
                    }
                    if (jsonResult.showTitleToUser) {
                        $('#show_title_menu').val(jsonResult.showTitleToUser);
                        $('input.show-title-menu').prop('checked', true);
                    }
                    else {
                        $('#show_title_menu').val(null);
                        $('input.show-title-menu').prop('checked', false);
                    }

                    // 3 - Advanced settings
                    $('input[name="menu_system_name"]').val(jsonResult.systemName);

                    if (jsonResult.isSharingPortalMenu == true) {
                        $('input[name="menu_system_name"]').prop('disabled', 'disabled');
                        $('a.delete_block').prop('style', 'display:none;');
                    }
                    else {
                        $('input[name="menu_system_name"]').removeAttr('disabled');
                        $('a.delete_block').removeAttr('style');
                    }
                    $('input[name="css_class"]').val(jsonResult.cssClass);
                    $('input[name="sort_weight"]').val(jsonResult.weight);
                    $('select[name="menu_region"]').val(jsonResult.regionId);

                    if (jsonResult.enabled) {
                        $('#enabled').prop('checked', jsonResult.enabled);
                    }
                    $('input[name="visible_to"]#visibility_' + visibleToValue).prop('checked', true);
                    if (jsonResult.urls) {
                        $('#exception_url').val(jsonResult.urls.join('\n'));
                    }
                    if (jsonResult.visibleTo !== 0) {
                        $('#exception_url_container').removeClass('is-hidden');
                    }

                    // 4 - Hidden of block-id
                    $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

                    // 5 - H3 of modal
                    titleMenu = jsonResult.systemName;
                    var linkVersions = '<a data-element-reveal="rollback-list" title="RollBack list" class="button custom-button rollback-link" data-menu-id="' + menuID + '" data-block-id="' + blockID + '" data-page-id="0" data-component-type="MenuBlock">' + window.translation.versions + '</a>';
                    $('#' + elementReveal).find('h3').first().text(titleMenu + ' - ' + window.translation.menu_settings);
                    $('#' + elementReveal).find('h3').first().append(linkVersions);

                    //Assigning systemName value
                    if (jsonResult.systemName !== "") {
                        $('#menu_system_name').val(jsonResult.systemName);
                    }

                    //Manage multiregions
                    if (jsonResult.regionsMultiple) {
                        //Apply multiselect widget to region select
                        apply_backend_multiselect_group('#' + elementReveal + ' select[name="menu_region_multiple"]', false, jsonResult.regionsMultiple);
                    }
                }

                add_event_for_fields_in_modal('#menu-management');

                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }
        else {
            //Assing values by default
            var formSelector = '#menu-edit-backend';
            $(formSelector + ' select[name="menu_region"]').val($('select[name="menu_region"] option:first-child').val());
            $(formSelector + ' #enabled').prop('checked', true);
            $('#' + elementReveal).find('input[name="block_id"]').val('');
            $('#' + elementReveal).find('input[name="css_class"]').val('');
            $('#' + elementReveal).find('input[name="visible_to"][value="2"]').prop('checked', 'checked');
            $('#exception_url_container').removeClass('is-hidden');
            $('#exception_url').val('');
            $('#' + elementReveal + ' .rollback-link').hide();

            //Manage multiregions field
            apply_backend_multiselect_group('#' + elementReveal + ' select[name="menu_region_multiple"]', false, '');

            //Show order field and change label if is multiregion
            if ($('body.new-template-system').length > 0) {
                $('.menu-mobile-section').removeClass('hide-custom');

            }


            $('#' + elementReveal).find('select[name="subsite_id"]').val('0');
            $('#' + elementReveal).find('input[name="subsite_id"]').val('');



            $('#' + elementReveal).find('h3').first().text('Add Menu - ' + window.translation.menu_settings);
            add_event_for_fields_in_modal('#menu-management');
        }

        //Call jqueryValidate method
        initiate_jquery_validate_reveal($('#' + elementReveal).find('#menu-management'), 'menu-management');


        if ($('body.new-template-system').length > 0) {

            $('input#is_main_navigation').on('mousedown', function () {
                var self = $(this);

                var message = '';
                if (self.is(':checked')) {
                    message = "If this setting is set as Inactive in this menu, you should set any menu as Main navigation, Confirm?";

                    Swal.fire({
                        title: window.translation.are_you_sure,
                        text: message,
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.ok,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true

                    }).then(function (result) {
                        if (result.isConfirmed) {
                            //Do nothing
                            self.prop('checked', false);
                            self.trigger("change");
                        } else {
                            self.prop('checked', 'checked');
                            self.trigger("change");
                        }
                    });

                } else {
                    message = "Activating this setting int this menu, if there is another menu with this setting active, it will be disabled in the another menu, Confirm?";

                    Swal.fire({
                        title: window.translation.are_you_sure,
                        text: message,
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.ok,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true

                    }).then(function (result) {
                        if (result.isConfirmed) {
                            self.prop('checked', 'checked');
                            self.trigger("change");
                        } else {
                            self.prop('checked', false);
                            self.trigger("change");

                        }
                    });

                }
            });
            $('input#is_main_navigation').on('change', function () {

                if ($(this).is(':checked')) {
                    $('.menu-mobile-section').addClass('hide-custom');
                    $('.mobile-order-section').addClass('hide-custom');
                    $('#include_in_mobile').prop('checked', false);
                    $('#mobile_order').val('0');

                } else {
                    $('.menu-mobile-section').removeClass('hide-custom');
                }
            });
            $('input#include_in_mobile').on('change', function () {
                if ($(this).is(':checked')) {
                    $('.mobile-order-section').removeClass('hide-custom');
                } else {
                    $('.mobile-order-section').addClass('hide-custom');
                    $('#mobile_order').val('0');
                }
            });
        }


        $('#' + elementReveal).find('input[type="submit"].custom-button').on('click', function (e) {

            if (!validate_url_fields_backend('#' + elementReveal, 'input[name="visible_to"]', 'textarea[name="visibility_urls"]'))
                return false;
        });

    });

    $(document).on('change', '#menu-management input.show-title-menu', function () {
        var checked = $(this).prop('checked');
        $('#menu-management input.show-title-menu').prop('checked', checked);
        if (checked) {
            $('#menu-management input[name="show_title"]').val(checked);
        }
        else {
            $('#menu-management input[name="show_title"]').val(null);
        }
    });

    $(document).on('click', 'a[data-element-reveal="menu-item-edit-backend"]', function () {
        var elementReveal = $(this).data('element-reveal');

        //Initialize to validate if exists changes in menu
        $('#' + elementReveal).find('input[name="block_changes"]').val("false");

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        populate_menu_edit_settings($(this), true);
    });

    $(document).on('click', 'a[data-element-reveal="menu-item-configuration-backend"]', function () {

        var menuItemId = $(this).data('menu-item-id');
        var isExternal = true;

        if (typeof menuItemId === 'undefined') {
            // variable is undefined
            menuItemId = '0';
        }
        $('#menu-item-configuration-backend').find('input[name="target_path"]').removeAttr("readonly");

        var elementReveal = $(this).data('element-reveal');
        var menuBlockId = $(this).data('menu-id');
        var blockID = $(this).parents('.reveal').find('input[name="block_id"]').val();
        var languageId = parseInt($('#' + elementReveal).data('language-id'));

        var titleMenu = '';
        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        //Initialize to validate if exists changes in menu
        $('#' + elementReveal).find('input[name="menu_item_changes"]').val("false");

        var itemInfo = (menuItemId.toString() !== '0') ? get_information_menu_item_by_id(menuItemId, window.menuItemsInfo.items) : '';
        var itemsWithLevel = [];
        var visibleToValue = (itemInfo.visibility !== '') ? itemInfo.visibility : '2';
        var weightDefault = (itemInfo.weight !== '') ? itemInfo.weight : 0;


        //Default value
        itemsWithLevel.push({ text: window.translation['root_first_level'], value: 0 });

        itemsWithLevel = itemsWithLevel.concat(get_items_with_level(1, window.menuItemsInfo.items));

        //Populate select of parents in advanced settings
        $('#menu-item-configuration-backend').find('select[name="parent_select"]').empty();

        itemsWithLevel.forEach(function (item) {
            if (menuItemId !== item.value || item.value === 0) {
                $('#menu-item-configuration-backend').find('select[name="parent_select"]').append('<option value="' + item.value + '">' + item.text + '</option>');
            }
        });

        //Reset form
        $('#' + elementReveal + ' form')[0].reset();

        //Populate select of pages to field 'Page'
        $('#menu-item-configuration-backend').find('select[name="page_id"]').empty();
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetPages",
            data: "",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').hide();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);


            jsonResult.forEach(function (item) {
                var textOption;
                if (item.Enabled.toString() == "true") {
                    textOption = item.SystemName.toString();
                } else {
                    textOption = item.SystemName.toString() + " (" + window.translation.disabled + ")";
                }
                var pageOption = '<option data-page-id="' + item.ID.toString() + '" value="' + item.FriendlyUrl.toString() + '">' + textOption + '</option>';
                $("select[name='page_id']").append(pageOption);
            });

            var firstOption = '<option data-page-id="" value="">' + window.translation.please_select_page + '</option>';
            $("select[name='page_id']").prepend(firstOption);
            $('#menu-item-configuration-backend').find('input[name="css_class"]').val(itemInfo.url);
            // Assign target ID to menu item
            if (itemInfo.url) {
                $('#menu-item-configuration-backend').find('input[name="target_path"]').val(itemInfo.url);
                $('#menu-item-configuration-backend').find('input[name="target_path_value"]').val(itemInfo.url);

                $('#menu-item-configuration-backend').find('select[name="page_id"]').find('option').each(function () {
                    if (itemInfo.url.substring(1, itemInfo.url.length) === $(this).val() && itemInfo.url !== '#') {
                        isExternal = false;
                    }
                });

                if (isExternal === false) {
                    $('#menu-item-configuration-backend').find('select[name="page_id"]').val(itemInfo.url.substring(1, itemInfo.url.length));
                    $('#menu-item-configuration-backend').find('input[name="target_path"]').attr('readonly', 'readonly');
                }
                else {
                    $('#menu-item-configuration-backend').find('select[name="page_id"]').val('');
                }
            }
            else {
                $('#menu-item-configuration-backend').find('select[name="page_id"]').val('');
            }


            //Hide processing screen
            $('#' + elementReveal).find('.processing_screen').hide();
        });

        //Assing values
        if (itemInfo) {
            // 1 - Titles
            itemInfo.titles.forEach(function (item) {
                if (item.Key !== null) {
                    var key = item.Key.ID;
                    var value = item.Value;

                    if (parseInt(key) === languageId) {
                        titleMenu = value;
                    }

                    $('#menu-item-configuration-backend').find('input[name="title-' + key + '"]').val(value);

                }
            });
            if (itemInfo.pageId) {
                $('#menu-item-configuration-backend').find('input[name="menu-item-page-id"]').val(itemInfo.pageId);
            }
            // 2 - Advanced Info
            $('#menu-item-configuration-backend').find('input[name="menu_css_class"]').val("");
            if (itemInfo.cssClass) {

                $('#menu-item-configuration-backend').find('input[name="menu_css_class"]').val(itemInfo.cssClass);
            }
            if (itemInfo.enabled) {
                $('#menu-item-configuration-backend').find('input#menu-item-enabled').prop('checked', itemInfo.enabled);
            }
            if (itemInfo.parentItemId) {
                $('#menu-item-configuration-backend').find('select[name="parent_select"]').val(itemInfo.parentItemId.toString());
            }
            if (itemInfo.target) {
                $('#menu-item-configuration-backend').find('select[name="target_select"]').val(itemInfo.target.toString());
            }
            if (itemInfo.type) {
                $('#menu-item-configuration-backend').find('select[name="type_select"]').val(itemInfo.type.toString());
            }

            $('#menu-item-configuration-backend').find('input[name="sort_weight"]').val(weightDefault);
            $('#menu-item-configuration-backend').find('select[name="visible_to"]').val(visibleToValue);

            $('#menu-item-configuration-backend').find('.filter_rules .rule').remove();
            $('#menu-item-configuration-backend').find('.without_rules').removeClass('hide');
            $('#menu-item-configuration-backend').find('input[name="advanced-criteria-input"]').val('');

            if (visibleToValue === '1' || visibleToValue === 1) {
                $('#' + elementReveal).find('.visible-per-role').removeClass('hide');
                $('#' + elementReveal).find('.by-session-vars').addClass('hide');
                var selectorField = '#menu-item-configuration-backend select[name="select-rol-menu"]';
                if (itemInfo.visibilityRole !== null && itemInfo.visibilityRole !== '') {
                    load_multiselet_field_backend(selectorField, itemInfo.visibilityRole, true);
                } else {
                    load_multiselet_field_backend(selectorField, '0', true);
                }
            }
            else if (visibleToValue === '4' || visibleToValue === 4) {
                $('#' + elementReveal).find('.by-session-vars').removeClass('hide');
                $('#' + elementReveal).find('.visible-per-role').addClass('hide');


                if (itemInfo.sessionVariablesSettings) {
                    var customFilters = JSON.parse(itemInfo.sessionVariablesSettings);

                    $('#menu-item-configuration-backend').find('.filter_rules .rule').remove();
                    
                    if (customFilters.filters && customFilters.filters.length > 0) {
                        $('#menu-item-configuration-backend').find('.without_rules').addClass('hide');
                        let filters = customFilters.filters;

                        if (typeof customFilters.filters == 'string') {
                            filters = JSON.parse(customFilters.filters);
                        }
                        filters.forEach(function (item) {
                            addRuleFilterMenuItem(item.field, item.friendlyFieldName, item.comparisonValue, item.operator);
                        });
                    }
                    if (customFilters.criteria != null) {
                        $('#menu-item-configuration-backend').find('input[name="advanced-criteria-input"]').val(customFilters.criteria);
                        $('#menu-item-configuration-backend input.activator').prop("checked", customFilters.criteria && customFilters.criteria != '')
                        stdEnableCustomLogic(customFilters.criteria && customFilters.criteria != '', $('#menu-item-configuration-backend input.activator'));
                    }
                    else {
                        $('#menu-item-configuration-backend').find('input[name="advanced-criteria-input"]').val('');
                        $('#menu-item-configuration-backend input.activator').prop("checked", false)
                        stdEnableCustomLogic(false, $('#menu-item-configuration-backend input.activator'));
                    }
                    $('.form_builder_block select[name="field_to_filter"]').trigger('change');
                }

            }
            else {
                $('#' + elementReveal).find('.by-session-vars').addClass('hide');
                $('#menu-item-configuration-backend').find('.visible-per-role').addClass('hide');
                $('#menu-item-configuration-backend').find('select[name="select-rol-menu"]').val("0");

            }
            // 3 - Assing H3 of modal
            titleMenu = (!titleMenu) ? itemInfo.titles[0].Value : titleMenu;
            var rollbackLink = '<a data-element-reveal="rollback-list" title="RollBack list" class="button custom-button rollback-link" data-menu-item="' + menuItemId + '" data-component-type="MenuItem">' + window.translation.versions + '</a>';
            $('#menu-item-configuration-backend').find('h3').first().text(titleMenu + ' - ' + window.translation.menu_item_settings);
            $('#menu-item-configuration-backend').find('h3').first().append(rollbackLink);
            
        }
        else {
            $('#menu-item-configuration-backend').find('h3').first().text(window.translation.create_new_menu_item + ' - ' + window.translation.menu_item_settings);
            $('#menu-item-configuration-backend').find('.advanced-link').trigger('click');
            $('#menu-item-configuration-backend').find('input[name="sort_weight"]').val(0);
            $('#menu-item-configuration-backend').find('select[name="visible_to"]').val('2');
            $('#menu-item-configuration-backend').find('input[name="enabled"]').prop('checked', true);
            $('#menu-item-configuration-backend').find('.advanced-link').trigger('click');
            $('#menu-item-configuration-backend').find('input[name="menu-item-page-id"]').val("");
            load_multiselet_field_backend(selectorField, '0', true);
        }

        if (window.menuItemsInfo.sessionVariables) {
            $('#menu-item-configuration-backend').find('select[name="field_to_filter"] option').remove();
            var optionsSessions = '<option value ="">' + window.translation.select_a_variable +'</option>';
            var itemsToAutoComplete = [];
            itemsToAutoComplete.push('s:currentUserID');
            itemsToAutoComplete.push('s:currentContactAccountID');
            itemsToAutoComplete.push("s:currentBrowserSessionID");
            if (!window.is_llamapi) {
                itemsToAutoComplete.push('s:currentAccountID');
            }

            window.menuItemsInfo.sessionVariables.forEach(function (item) {
                optionsSessions += '<option value ="' + item.label + '">' + item.label + '</option>';
                itemsToAutoComplete.push(item.label);
            });
            $('#menu-item-configuration-backend').find('select[name="field_to_filter"]').append(optionsSessions);
            $('#menu-item-configuration-backend').find('input[name="filter_value"]').autocomplete({
                source: itemsToAutoComplete,
            });
        }

        // 5 - Hidden of block-id and menu-item-id
        $('#' + elementReveal).find('input[name="block_id"]').val(blockID);
        $('#' + elementReveal).find('input[name="menu_block_id"]').val(menuBlockId);

        if (menuItemId.toString() !== '0') {
            $('#' + elementReveal).find('input[name="menu_item_id"]').val(menuItemId);
        }
        else {
            $('#' + elementReveal).find('input[name="menu_item_id"]').val('');

            $('#' + elementReveal).find('.row.by-session-vars').hide();
            $('#' + elementReveal).find('.filter_rules .rule').remove();
            $('#' + elementReveal).find('input[name="advanced-criteria-input"]').val();
            $('#' + elementReveal).find('select[name="visible_to"]').val("2");

        }

        //Call jqueryValidate method
        initiate_jquery_validate_reveal($('#' + elementReveal).find('#menu-item-conf-form'), 'menu-item-conf-form');
        $('#' + elementReveal).find('select[name="visible_to"]').on('change', function () {
            var value = $(this).val();

            if (value == '1') {
                $('#' + elementReveal).find('.visible-per-role').removeClass('hide');
                $('#' + elementReveal).find('.by-session-vars').addClass('hide');
            }
            else if (value == '4') {
                $('#' + elementReveal).find('.by-session-vars').removeClass('hide');
                $('#' + elementReveal).find('.by-session-vars').show();
                $('#' + elementReveal).find('.visible-per-role').addClass('hide');

            } else {
                $('#' + elementReveal).find('.visible-per-role').addClass('hide');
                $('#' + elementReveal).find('.by-session-vars').addClass('hide');


            }
        });

        
        if (!$('#menu-item-configuration-backend button.add_rule').hasClass('event-applied')) {
            $(document).on('click', '#menu-item-configuration-backend button.add_rule', function () {
                var fieldToFilter = $('#menu-item-configuration-backend select[name="field_to_filter"]').val();
                var friendlyFieldName = $('#menu-item-configuration-backend select[name="field_to_filter"] option:selected').text();
                var filter_value = $('#menu-item-configuration-backend input[name="filter_value"]').val();
                var operator = $('#menu-item-configuration-backend select[name="filter_operator"]').val();
                if (fieldToFilter === null || fieldToFilter === '') {
                    var textError = window.translation.please_choose_at_least_a_field;
                    var error = '<span class="error">' + textError + '</span>';
                    if ($('#menu-item-configuration-backend .rule_filter span.error').length > 0) {
                        $('#menu-item-configuration-backend .rule_filter span.error').first().text(textError);
                    } else {
                        $('#menu-item-configuration-backend .rule_filter').append(error);
                    }
                } else {
                    addRuleFilterMenuItem(fieldToFilter, friendlyFieldName, filter_value, operator);
                }
                $(this).addClass('event-applied');
                return false;
            });
            $('#menu-item-configuration-backend button.add_rule').addClass('event-applied');
        }
        $(document).on('click', '#menu-item-configuration-backend .delete_rule a', function () {
            if ($('#menu-item-configuration-backend .filter_rules .rule').length === 1) {
                $('#menu-item-configuration-backend .without_rules').removeClass('hide-custom');
            }
            $(this).parent().parent().remove();
            $('#menu-item-configuration-backend input[name="pending-changes"]').val('true').trigger('change');
            $('#menu-item-configuration-backend .filter_rules .rule').each(function (index) {
                $(this).find('.field_order').text((index + 1) + '.');
            });
            return false;
        });


        $(document).on('change', 'select[name="page_id"]', function () {
            var value_selected = $(this).val();

            if ($(this).val()) {
                $(this).parents('.reveal').find('input[name="target_path"]').val('/' + $(this).val());
                $(this).parents('.reveal').find('input[name="target_path_value"]').val('/' + $(this).val());
                $(this).parents('.reveal').find('input[name="target_path"]').attr('readonly', 'readonly');

                var menu_item_page_id = "";
                $(this).find('option').each(function () {
                    if ($(this).val() == value_selected) {
                        menu_item_page_id = $(this).attr("data-page-id");
                    }
                });
                $(this).parents('.reveal').find('input[name="menu-item-page-id"]').val(menu_item_page_id);
            }
            else {
                $(this).parents('.reveal').find('input[name="target_path"]').val('');
                $(this).parents('.reveal').find('input[name="target_path_value"]').val('');
                $(this).parents('.reveal').find('input[name="target_path"]').removeAttr('readonly');
                $(this).parents('.reveal').find('input[name="menu-item-page-id"]').val('');
            }
        });


        //If modal is open to create new item remove link "Remove item"
        if (!menuItemId) {
            $('#' + elementReveal).find('.text-remove-link').removeClass('hide-custom');
            $('#' + elementReveal).find('.remove-link.delete').addClass('hide-custom');
        }
        else {
            $('#' + elementReveal).find('.text-remove-link').addClass('hide-custom');
            $('#' + elementReveal).find('.remove-link.delete').removeClass('hide-custom');
        }

        add_event_for_fields_in_modal('#menu-item-conf-form');
    });

    $(document).on('change', '#menu-management input[name="partner_switcher"]', function () {
        var checked = $(this).prop('checked');
        
        if (checked) {
            $('.include-greeting-section').removeClass('hide-custom');
        }
        else {
            $('.include-greeting-section').addClass('hide-custom');
        }
    });
}

function addRuleFilterMenuItem(fieldToFilter, friendlyFieldName, filter_value, operator) {
    $('#menu-item-configuration-backend .rule_filter span.error').remove();
    var ruleQuantity = $('#menu-item-configuration-backend .filter_rules .rule').length;
    var value_rule = filter_value === '' ? '<span class="empty">Empty</span>' : filter_value;

    var operatorText = $('#menu-item-configuration-backend select[name="filter_operator"] option[value="' + operator + '"]').text();
    if (operatorText === "") {
        operatorText = operator;
    }
    var andText = $('#menu-item-configuration-backend input[type="checkbox"].activator').is(":checked");
    var rule = '<div class="rule columns" data-field="' + fieldToFilter + '" data-operator="' + operator + '"  data-value="' + filter_value + '">';
    if (fieldToFilter.startsWith('c:'))
        rule = '<div class="rule hide columns" data-field="' + fieldToFilter + '" data-operator="' + operator + '"  data-value="' + filter_value + '">';
    rule += '<div class="field_order columns small-1">' + (ruleQuantity + 1) + '.' + '</div>'
        + '<div class="field_rule columns small-3">' + friendlyFieldName + '</div>'
        + '<div class="operator_rule columns small-3">' + operatorText + '</div>'
        + '<div class="value_rule columns small-3">' + value_rule + '</div>'
        + '<div class="columns small-1 operation">' + (andText ? '&nbsp;' : 'AND') +'</div>';
    if (!fieldToFilter.startsWith('c:'))
        rule += '<div class="delete_rule  columns small-1"><a href="#" aria-label="delete rule"></a></div>';

    rule += '<div/>';

    // adding new rule    
    $('#menu-item-configuration-backend .without_rules').addClass('hide-custom');
    $('#menu-item-configuration-backend .filter_rules').append(rule);
    $('#menu-item-configuration-backend input[name="filter_value"]').val('');
}

function addRuleFilterMPageSetting(fieldToFilter, friendlyFieldName, filter_value, operator, typeField) {
    $('#page-advanced-settings .rule_filter span.error').remove();
    var ruleQuantity = $('#page-advanced-settings .filter_rules .rule').length;
    var value_rule = filter_value === '' ? '<span class="empty">Empty</span>' : filter_value;

    var operatorText = $('#page-advanced-settings select[name="filter_operator"] option[value="' + operator + '"]').text();
    if (operatorText === "") {
        operatorText = operator;
    }
    var andText = $('#page-advanced-settings input[type="checkbox"].activator').is(":checked");
    var rule = '<div class="rule columns" data-field="' + fieldToFilter + '" data-operator="' + operator + '"  data-value="' + filter_value + '" data-type-field="' + typeField +'">'
        + '<div class="field_order columns small-1">' + (ruleQuantity + 1) + '.' + '</div>'
        + '<div class="field_rule columns small-3">' + friendlyFieldName + '</div>'
        + '<div class="operator_rule columns small-3">' + operatorText + '</div>'
        + '<div class="value_rule columns small-3">' + value_rule + '</div>'
        + '<div class="columns small-1 operation">' + (andText ? '&nbsp;' : 'AND') +'</div>'
        + '<div class="delete_rule  columns small-1"><a href="#" aria-label="delete rule"></a></div>'
        + '<div/>';

    // adding new rule    
    $('#page-advanced-settings .without_rules').addClass('hide-custom');
    $('#page-advanced-settings .filter_rules').append(rule);
    $('#page-advanced-settings input[name="filter_value"]').val('');
}

function backend_slider_block() {
    if (!is_backend_page()) return;
    var formSelector = '#block-slider-form';
    $(document).on('click', 'a[data-open="blocks-slider-conf"]', function () {
        var blockID = $(this).data('block-id');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        window.scroll_current_pos_y = $(window).scrollTop();
        //Reload elements inside modal
        $('#blocks-slider-conf').foundation();

        // Applying validate to slider form. 
        initiate_jquery_validate_reveal($("#block-slider-form"), 'block-slider-form');

        if (blockID !== 0) {
            // show delete link
            $('#blocks-slider-conf').find('.delete_block').show();
            $.ajax({
                method: "GET",
                url: urlSite + "admin/GetSliderBlock?blockID=" + blockID,
                beforeSend: function () {
                    $('#blocks-slider-conf').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                hideVisibleOptions(jsonResult.uniqueRegion, '#blocks-slider-conf');
                $('#blocks-slider-conf .button-section-slide').hide();

                $("#blocks-slider-conf .rollback-link").attr("data-block-id", blockID);
                $("#blocks-slider-conf .rollback-link").show();

                //Load each slider
                $(".slider-panel").each(function () {
                    var lang_id = $(this).attr("data-language-id");
                    $('.slides_' + lang_id).empty();

                    if (jsonResult.disabledAutoPlay !== null) {
                        $(formSelector + ' input[name="slider_block_disabled_autoplay"]').prop('checked', jsonResult.disabledAutoPlay);
                    }

                    if (jsonResult.autoplayTimeout !== null && jsonResult.autoplayTimeout === 0) {
                        jsonResult.autoplayTimeout = 8000;
                    }

                    $(formSelector + ' input[name="slider_auto_play_timeout"]').val(jsonResult.autoplayTimeout);

                    //Populate block info
                    if (jsonResult.blockInfo) {
                        $(formSelector + ' input[name="slider_block_id"]').val(jsonResult.blockInfo.ID);
                        $(formSelector + ' input[name="css_class"]').val(jsonResult.blockInfo.CssClass);
                        $(formSelector + ' input[name="sort_weight"]').val(jsonResult.blockInfo.Weight);
                        if (jsonResult.blockInfo.ShowTitle) {
                            $(formSelector + ' #slider_show-title').val(jsonResult.blockInfo.ShowTitle);
                            $(formSelector + ' .slider-show-title').prop('checked', true);
                        }
                        else {
                            $(formSelector + ' #slider_show-title').val(null);
                            $(formSelector + ' .slider-show-title').prop('checked', false);
                        }
                        $(formSelector + ' #slider_block_enabled').prop('checked', jsonResult.blockInfo.Enabled);
                        $(formSelector + ' input[name="slider_visible_to"]').prop('checked', false);
                        $(formSelector + ' #slider_visibility_' + jsonResult.blockInfo.Visibility).prop('checked', true);
                        $(formSelector + ' #slider_exception_urls').val(jsonResult.blockInfo.VisibilityUrls);
                        $(formSelector + ' #slider_exception_urls').text(jsonResult.blockInfo.VisibilityUrls);
                        $(formSelector + ' input[name="block_slider_id"]').val(jsonResult.blockInfo.ID);
                        $(formSelector + ' input[name="slider_system_name"]').val(jsonResult.blockInfo.SystemName);
                        $(formSelector + ' select[name="slider_region"]').val(jsonResult.blockInfo.regionId);
                        $(formSelector + ' select[name="slider_effect"]').val(jsonResult.effect);
                        $(formSelector + ' input[name="images_per_slider"]').val(jsonResult.imagePerSlide);
                        $(formSelector + ' input[name="images_per_slider_original"]').val(jsonResult.imagePerSlide);
                        $(formSelector + " #slider_block_show_navigation").prop("checked", jsonResult.showNavigation);
                        if (jsonResult.blockInfo.Visibility === 1 || jsonResult.blockInfo.Visibility === 2) {
                            $(formSelector + " #slider_exception_url_container").removeClass("is-hidden");
                        } else {
                            $(formSelector + " #slider_exception_url_container").addClass("is-hidden");
                        }

                        if (jsonResult.blockInfo.SubsiteId !== '0' && jsonResult.blockInfo.SubsiteId !== 0) {
                            if ($(formSelector).find('select[name="subsite_id"]').length > 0) {
                                $(formSelector).find('select[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                            } else {
                                $(formSelector).find('input[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                            }
                        }
                    }

                    //Populate titles
                    if (jsonResult.titles) {
                        jsonResult.titles.forEach(function (item) {
                            if (item.languageID === lang_id) {
                                $(formSelector + ' input[name="title_slider_' + item.languageID + '"]').val(item.title);
                            }
                        });
                    }

                    //Populate items
                    jsonResult.images.forEach(function (item) {
                        if (item.LanguageID == lang_id) {
                            load_slider_items(lang_id, item, formSelector);
                        }
                        validate_sliderimage_form();
                    });

                    var cant_slides = $(".slides_" + lang_id + " .slide-item").length;
                    $('input[name="count_slides_' + lang_id + '"]').val(cant_slides);

                    //Initialize hidden of Sponsors deleted
                    $(formSelector + ' input[name="slides_deleted"]').val('');


                });

                //Manage multiregions
                if (jsonResult.regionsMultiple) {
                    //Apply multiselect widget to region select
                    apply_backend_multiselect_group(formSelector + ' select[name="slider_region_multiple"]', false, jsonResult.regionsMultiple);
                }

                add_event_for_fields_in_modal(formSelector);
                //Hide processing screen
                $('#blocks-slider-conf').find('.processing_screen').hide();
            });
        }
        else {
            //Assing values by default
            $(formSelector + ' select[name="slider_region"]').val($('select[name="slider_region"] option:first-child').val());
            $(formSelector).find('input[name="slider_block_id"]').val('');
            $("#blocks-slider-conf .rollback-link").hide();

            //Clean listing of slides
            $('.slides').empty();
            $(formSelector + ' input[name="css_class"]').val('');

            //Initialize count_slides to 0
            $(formSelector + ' input.count-slides').each(function () {
                $(this).val(0);
            });

            $('#slider_exception_url_container').removeClass('is-hidden');
            $(formSelector + ' textarea[name="slider_exception_urls"]').val('');
            $(formSelector).find('input[name="slider_visible_to"][value="2"]').prop('checked', true);

            // hide delete link
            $('#blocks-slider-conf').find('.delete_block').hide();

            //Manage multiregions field
            apply_backend_multiselect_group(formSelector + ' select[name="slider_region_multiple"]', false, '');

            $(formSelector).find('select[name="subsite_id"]').val('0');
            $(formSelector).find('input[name="subsite_id"]').val('');


            add_event_for_fields_in_modal(formSelector);
        }

        $(formSelector).find('input[type="submit"].custom-button').on('click', function () {
            if (!validate_url_fields_backend(formSelector, 'input[name="slider_visible_to"]', 'textarea[name="slider_visibility_urls"]'))
                return false;
        });
    });

    //Events of slide
    $(document).on('change', '#block-slider-form select.link-type-field-form', function () {
        var self = $(this);
        var selfParent = $(this).parents('.row.slide-item').first();
        var languageId = $(this).attr('data-language-id');
        var itemId = $(this).attr('data-item-id');
        var linkSelector = selfParent.find('input[name="link_slide_' + itemId + '_' + languageId + '"]').parents('.row').first();
        var optSelector = selfParent.find('select[name="open_slide_' + itemId + '_' + languageId + '"]').parents('.open-slide').first();
        var buttonSelector = selfParent.find('input[name="link_button_text_' + itemId + '_' + languageId + '"]').parents('.row').first();

        if ($(this).val() == 0) {
            linkSelector.hide();
            buttonSelector.hide();
            optSelector.hide();
        } else if ($(this).val() == 1) {
            linkSelector.show();
            buttonSelector.hide();
            optSelector.show();
        } else if ($(this).val() == 2) {
            linkSelector.show();
            buttonSelector.show();
            optSelector.show();
        } else if ($(this).val() == 3) {
            linkSelector.show();
            buttonSelector.hide();
            optSelector.show();
        }
    });

    $(document).on('change', '#block-slider-form .slide_image', function () {
        var lang_id = $(this).attr('data-language-id');

        if ($(this).val() != "") {

            // Changing image hidden field when image is changed.
            var url_image = $(this).val();
            var array = url_image.split(".");
            if (array[array.length - 1] == "jpeg" || array[array.length - 1] == "png" || array[array.length - 1] == "jpg") {
                $(this).parent().next().val(true);
            } else {

                $(this).parent().next().val(false);
            }
        } else {
            $(this).parent().next().val(false);
        }
    });

    //Validating button 
    $(document).on('submit', '#block-slider-form', function (e) {

        var countItems = $('#images_per_slider').val();
        var CountSlides = 0;
        $(".slider-panel").each(function () {
            var lang_id = $(this).attr("data-language-id");
            var itemCountSlide = $('input[name="count_slides_' + lang_id + '"]').val();
            if (itemCountSlide > CountSlides) {
                CountSlides = itemCountSlide;
            }
        });

        if (parseInt(CountSlides, 10) < parseInt(countItems, 10)) {
            Swal.fire({
                title: "",
                icon: "error",
                text: window.translation.image_slider_restriction_with_items,
                confirmButtonText: "Ok",
            });
            $('#blocks-slider-conf').find('.processing_screen').hide();
            $('input.save-slider-data').prop('disabled', false);
            e.preventDefault();
            return false;
        }
    });

    $(document).on('change', '#block-slider-form input.slider-show-title', function () {
        var checked = $(this).prop('checked');
        $('#block-slider-form input.slider-show-title').prop('checked', checked);
        if (checked) {
            $('#block-slider-form #slider_show-title').val(checked);
        }
        else {
            $('#block-slider-form #slider_show-title').val(null);
        }
    });
}


function validate_sliderimage_form() {
    if (!is_backend_page()) return;
    $("#block-slider-form .link-type-field-form").each(function () {
        var lang_id = $(this).attr('data-language-id');
        var item = $(this).attr('data-item-id');
        var selector = 'select[name="link_type_slide_' + item + '_' + lang_id + '"]';
        var buttonSelector = '#button-section-' + item + '-' + lang_id;

        if (lang_id && item) {
            var linkSelector = $('input[name="link_slide_' + item + '_' + lang_id + '"]').parent().parent();
            var optSelector = $('select[name="open_slide_' + item + '_' + lang_id + '"]').parents('.open-slide');
            if ($(selector).length > 0) {
                if ($(selector).val() == 0) {
                    linkSelector.hide();
                    $(buttonSelector).hide();
                    optSelector.hide();
                } else if ($(selector).val() == 1) {
                    linkSelector.show();
                    $(buttonSelector).hide();
                    optSelector.show();
                } else if ($(selector).val() == 2) {
                    linkSelector.show();
                    $(buttonSelector).show();
                    optSelector.show();
                } else if ($(selector).val() == 3) {
                    linkSelector.show();
                    $(buttonSelector).hide();
                    optSelector.show();
                }
            }
        }
    });
}

function backend_sponsor_block() {
    //Load modal info
    if (!is_backend_page()) return;

    var formSelector = '#sponsor-form';
    $(document).on('click', 'a[data-element-reveal="sponsor-block-configuration"]', function () {
        var blockID = $(this).data('block-id');
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        // Apply vlidate to sponsor  block
        initiate_jquery_validate_reveal($("#sponsor-form"), 'sponsor-form');

        $('#' + elementReveal).foundation('open');

        //Reload elements inside modal
        $('#' + elementReveal).foundation();

        if (blockID != 0) {
            // show delete block link
            $('#' + elementReveal).find('.delete_block').show();
            $('#' + elementReveal + ' .rollback-link').attr('data-block-id', blockID);
            $('#' + elementReveal + ' .rollback-link').show();

            $.ajax({
                method: "GET",
                url: urlSite + "admin/GetSponsorBlock?blockID=" + blockID,
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);


                //Populate block info
                if (jsonResult != null && jsonResult.blockInfo) {
                    $(formSelector + ' input[name="block_id"]').val(jsonResult.blockInfo.ID);
                    $(formSelector + ' input[name="sort_weight"]').val(jsonResult.blockInfo.Weight);
                    $(formSelector + ' input[name="enabled"]').prop('checked', jsonResult.blockInfo.Enabled);                    
                    if (jsonResult.blockInfo.ShowTitle) {
                        $(formSelector + ' input[name="sponsor_show_title"]').val(jsonResult.blockInfo.ShowTitle);
                        $(formSelector + ' input.sponsor-show-title').prop('checked', true);
                    }
                    else {
                        $(formSelector + ' input[name="sponsor_show_title"]').val(null);
                        $(formSelector + ' input.sponsor-show-title').prop('checked', false);
                    }
                    $(formSelector + ' input[name="sponsor_visible_to"]').prop('checked', false);
                    $(formSelector + ' #sponsor_visibility_' + jsonResult.blockInfo.Visibility).prop('checked', true);
                    $(formSelector + ' #sponsor_exception_urls').val(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' #sponsor_exception_urls').text(jsonResult.blockInfo.VisibilityUrls);
                    $(formSelector + ' input[name="sponsor_block_system_name"]').val(jsonResult.blockInfo.SystemName);
                    $(formSelector + ' select[name="sponsor_region"]').val(jsonResult.blockInfo.regionId);
                    $(formSelector).find('input[name="css_class"]').val(jsonResult.blockInfo.CssClass);

                    if (jsonResult.blockInfo.SubsiteId !== '0' && jsonResult.blockInfo.SubsiteId !== '0') {
                        if ($(formSelector).find('select[name="subsite_id"]').length > 0) {
                            $(formSelector).find('select[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        } else {
                            $(formSelector).find('input[name="subsite_id"]').val(jsonResult.blockInfo.SubsiteId);
                        }
                    }


                    if (jsonResult.blockInfo.Visibility == 1 || jsonResult.blockInfo.Visibility == 2) {
                        $(formSelector + " #sponsor_exception_url_container").removeClass("is-hidden");
                    } else {
                        $(formSelector + " #sponsor_exception_url_container").addClass("is-hidden");
                    }
                }

                //Populate titles
                if (jsonResult.titles) {
                    jsonResult.titles.forEach(function (item) {
                        $(formSelector + ' input[name="title-' + item.languageID + '"]').val(item.title);
                    });
                }

                //Populate See all Texts
                if (jsonResult.seeAllText) {
                    jsonResult.seeAllText.forEach(function (item) {
                        $(formSelector + ' input[name="text-see-all-' + item.languageID + '"]').val(item.seeAllText);
                    });
                }

                //Populate sponsor block info
                if (jsonResult.sponsorBlock) {
                    $(formSelector + ' #sponsor_see_all_enabled').prop('checked', jsonResult.sponsorBlock.displaySeeAll);
                    $(formSelector + ' input[name="sponsor_block_id"]').val(jsonResult.sponsorBlock.sponsorId);
                }

                //Populate sponsors
                if (jsonResult.images) {
                    $('.items-sponsors').empty();

                    jsonResult.images.forEach(function (item) {
                        load_sponsor_item(item);
                    });
                }

                //Initialize hidden of Sponsors deleted
                $(formSelector + ' input[name="sponsors_deleted"]').val('');

                hideVisibleOptions(jsonResult.uniqueRegion, '#sponsor-advanced-settings');

                //Manage multiregions
                if (jsonResult.regionsMultiple) {
                    //Apply multiselect widget to region select
                    apply_backend_multiselect_group(formSelector + ' select[name="sponsor_region_multiple"]', false, jsonResult.regionsMultiple);
                }

                add_event_for_fields_in_modal(formSelector);

                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        }
        else {
            //Assing values by default
            $(formSelector + ' select[name="sponsor_region"]').val($('select[name="sponsor_region"] option:first-child').val());
            $(formSelector).find('input[name="block_id"]').val('');
            $(formSelector).find('input[name="sponsor_block_id"]').val('');
            $(formSelector).find('input[name="css_class"]').val('');



            $('#' + elementReveal + ' .rollback-link').hide();
            //Clean listing of sponsors
            $('.items-sponsors').empty();
            $(formSelector).find('select[name="subsite_id"]').val(0);
            $(formSelector).find('input[name="subsite_id"]').val('');

            //Initialize count_sponsors to 0
            $(formSelector + ' input[name="count_sponsors"]').val(0);
            $(formSelector + " #sponsor_exception_url_container").removeClass("is-hidden");
            $(formSelector + ' #sponsor_exception_urls').val("");

            // hide delete block link
            $('#' + elementReveal).find('.delete_block').hide();

            //Manage multiregions field
            apply_backend_multiselect_group(formSelector + ' select[name="sponsor_region_multiple"]', false, '');


            add_event_for_fields_in_modal(formSelector);

            $(formSelector).find('input[name="sponsor_visible_to"][value="2"]').prop('checked', true);
        }
        $('#' + elementReveal).find('input[type="submit"].custom-button').on('click', function () {
            if (!validate_url_fields_backend(formSelector, 'input[name="sponsor_visible_to"]', 'textarea[name="sponsor_visibility_urls"]'))
                return false;
        });

    });
    $(document).on('change', formSelector + ' input.sponsor-show-title', function () {
        var checked = $(this).prop('checked');
        $(formSelector + ' input.sponsor-show-title').prop('checked', checked);
        if (checked) {
            $(formSelector + ' input[name="sponsor_show_title"]').val(checked);
        }
        else {
            $(formSelector + ' input[name="sponsor_show_title"]').val(null);
        }
    });
}

//Backend for volunteer 
function backend_volunteer_form_settings() {
    if (!is_backend_page()) return;
    if ($('body.backend-page').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var contact_info_title = $('.fieldset-step[data-title-fieldset="contact_info"] legend').text();
        var login_information_title = $('.fieldset-step[data-title-fieldset="login_information"] legend').text();
        var demographic_title = $('.fieldset-step[data-title-fieldset="demographic"] legend').text();
        var volunteer_availability_title = $('.fieldset-step[data-title-fieldset="volunteer_availability"] legend').text();
        var volunteer_interest_title = $('.fieldset-step[data-title-fieldset="volunteer_interest"] legend').text();

        $(document).on('click', 'a[data-element-reveal="volunteer-form-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            $('#' + elementReveal).foundation('open');
            $('#' + elementReveal).foundation();

            //Get info of settings saved in database
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetVolunteerSettings",
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);
                $('#' + elementReveal).find('.processing_screen').hide();

                if (dataResult) {
                    //Include listing of fields with options visible and
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').empty();

                    $("li.tabs-title").on("click", function () {
                        $(this).parents(".volunteer-registration-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
                    });

                    $(".vol-reg-ckeditor").each(function () {
                        initialize_ckeditor_ars($(this).attr("id"), "");
                    });

                    var sections_titles = JSON.parse(dataResult.section);
                    var labels = JSON.parse(dataResult.labels);
                    var fields = JSON.parse(dataResult.fields);
                    var volunteer_interest = JSON.parse(dataResult.volunteer_interest);
                    var age_requirements = JSON.parse(dataResult.age_requirements);
                    var volunteer_availability = JSON.parse(dataResult.volunteer_availability);
                    var demographic = JSON.parse(dataResult.demographic);
                    var login_information = JSON.parse(dataResult.login_information);
                    var contact_info = JSON.parse(dataResult.contact_info);
                    var rewards_recognition = JSON.parse(dataResult.rewards_recognition);
                    var editFields = JSON.parse(dataResult.editFields);

                    var country = JSON.parse(dataResult.country);
                    var basic_info = JSON.parse(dataResult.basic_info);
                    var phones_values = JSON.parse(dataResult.phoneTypeValues);
                    var phones_text = phones_values.join(';');
                    var countField = 0;

                    //Add fields to each section of listing fields

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[0] + '</span></li>');
                    basic_info.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });
                    countrylist = '<option value="">' + window.translation.select + '</option>';

                    country.forEach(function (tempCountry) {
                        countrylist = countrylist + '<option value="' + tempCountry + '">' + tempCountry + '</option>';
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[1] + '</span></li>');
                    contact_info.forEach(function (field) {
                        var newRow = '';
                        if (field != 'home_country' && field != 'work_country' && field != 'primary_phone') {
                            newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';
                        } else if (field != 'primary_phone') {
                            var option = '<select class="country" name=select-default--' + field + ' id=select-default--' + field + '>' + countrylist + '</select>';
                            newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns">' + option + '</div></li>';
                        } else {
                            var option = '<input id="input-text--' + field + '" name="input-text--' + field + '" type="text" readonly/>';
                            newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns">' + option + '</div></li>';
                        }

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[2] + '</span></li>');
                    login_information.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });
                    
                    if (rewards_recognition.length > 0) {
                        countField++;
                        /* HOC3-15424
                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[3] + '</span></li>');
                        rewards_recognition.forEach(function (field) {
                            var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input disabled="disabled" class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';

                            $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                            countField++;
                        });*/
                    }
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[4] + '</span></li>');
                    demographic.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[5] + '</span></li>');
                    volunteer_availability.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[6] + '</span></li>');
                    volunteer_interest.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[7] + '</span></li>');
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title">' +
                        '<div class="small-4 columns"><span class="title-section">' + window.translation.field + '</span></div>' +
                        '<div class="small-4 columns"><span class="title-section">' + window.translation.value + '</span></div>' +
                        '<div class="small-4 columns"><span class="title-section">' + window.translation.default_value + '</span></div>' +
                        '</li>');
                    age_requirements.forEach(function (field) {
                        var copaFunction = (field == 'minimum_age_of_volunteer_for_registration') ? ' onchange="minAgeCOPAConfirm();"' : '';
                        var newRow = '<li class="row"><div class="small-4 columns"><span>' + labels[countField] + '</span></div>' +
                            '<div class="small-4 columns"><input name="input-text--' + field + '" id="input-text--' + field + '" value="" class="allownumeric" ' +
                            copaFunction +
                            '/></div>' +
                            '<div class="small-4 columns"><input name="input-default--' + field + '" id="input-default--' + field + '" value="13" readonly=""/></div></li>';
                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    //Assign values
                    if (dataResult.setting) {
                        //Read all fields and populate radio button
                        var settings = JSON.parse(dataResult.setting);
                        settings.forEach(function (settingField) {
                            var name = settingField.name;

                            if (IsFieldsEdit(editFields, name)) {

                                if (settingField.text != null && settingField.text != '') {
                                    $('input#input-text--' + name).val(settingField.text);
                                }

                                if (settingField._default != null && settingField._default != '') {
                                    $('input#input-default--' + name).val(settingField._default);
                                } else {
                                    $('input#input-default--' + name).val("13");
                                }
                            }
                            else {
                                if (settingField.required) {
                                    //$('input#yes-radio-required-'+name).prop('checked', true);
                                    $('input#yes-no-required--' + name).prop('checked', true);
                                }
                                else {
                                    //$('input#no-radio-required-'+name).prop('checked', true);
                                    $('input#yes-no-required--' + name).prop('checked', false);
                                }
                                if (settingField.visible) {
                                    //$('input#yes-radio-visible-'+name).prop('checked', true);
                                    $('input#yes-no-visible--' + name).prop('checked', true);
                                }
                                else {
                                    //$('input#no-radio-visible-'+name).prop('checked', true);
                                    $('input#yes-no-visible--' + name).prop('checked', false);
                                }

                                if (name == "home_country" || name == "work_country") {
                                    $('select#select-default--' + name).val(settingField.text);
                                }

                                if (name == "primary_phone") {

                                    $('input#input-text--' + name).val(phones_text);
                                }
                            }
                        });
                    }
                    else {
                        var fields = $('#volunteer-register-form').data('fields');

                        //Set all false
                        fields.forEach(function (field) {
                            $('input#yes-no-visible--' + field).prop('checked', false);
                            $('input#yes-no-required--' + field).prop('checked', false);
                        });
                    }

                    if (dataResult.internationalizationItems) {
                        //Read all items and populate the fields.
                        var items = JSON.parse(dataResult.internationalizationItems);
                        items.forEach(function (item) {
                            var group = item.Group;
                            var name = item.Item;
                            var value = item.Value;
                            var language_id = item.Language_ID;

                            $("#" + group + "_" + name + "-" + language_id).val(value);
                            $("#" + group + "_" + name + "-" + language_id).text(value);

                        });
                    }

                    $(".allownumeric").on("keypress keyup blur", function (event) {

                        // Allow: backspace, delete, tab, escape, enter and .
                        if ($.inArray(event.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
                            // Allow: Ctrl+A, Command+A
                            (event.keyCode === 65 && (event.ctrlKey === true || event.metaKey === true)) ||
                            // Allow: home, end, left, right, down, up
                            (event.keyCode >= 35 && event.keyCode <= 40)) {
                            // let it happen, don't do anything
                            return;
                        }
                        // Ensure that it is a number and stop the keypress
                        if ((event.which < 48 || event.which > 57)) {
                            event.preventDefault();
                        }

                    });

                    $(".length-limited").on("keypress keyup blur", function (e) {
                        var tval = $(this).val(),
                            tlength = tval.length,
                            set = 400,
                            remain = parseInt(set - tlength);
                        if (remain <= 0 && e.which !== 0 && e.charCode !== 0) {
                            $(this).val((tval).substring(0, tlength + remain));
                            return false;
                        }
                    })
                    validateAfterReader('volunteer-fields-management');

                    validateMainPhoneChanges('volunteer-fields-management');
                }
            });
        });
    }

    //Fix to hide fieldset when not exist input, select inside of fieldset
    $('#volunteer-register-form fieldset.fieldset-step').each(function () {
        var lenghtInput = $(this).find('input').length;
        var lengthSelect = $(this).find('select').length;
        var lengthTextarea = $(this).find('textarea').length;

        if (lenghtInput === 0 && lengthSelect === 0 && lengthTextarea === 0) {
            if ($(this).parents('.fieldset-group').length > 0) {
                $(this).parents('.columns.reduced-fieldset').remove();

                //Fix the other fieldset to addapt to screen
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset').wrap('<div class="small-12 columns"></div>');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset').removeClass('medium-6');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset').addClass('medium-12');

                //Fix the fieldset button close
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('space-right');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('fixed-position');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').wrap('<div class="small-2 medium-6 text-right columns"></div>');

                //Fix to the title of fieldset
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').removeClass('medium-9');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').addClass('medium-6');
            }
            else {
                $(this).remove();
            }
        }
    });
}

function delete_slide() {
    if (!is_backend_page()) return;
    $(document).on('click', '.backend-page a.remove_slide', function () {
        var slide_to_delete = $(this).attr("data-slide");
        var slide_image_id = $(this).attr("data-image-id");
        var slide_language_id = $(this).parents('.tabs-panel').data('language-id');

        Swal.fire({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_slide,
            icon: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: true

        }).then(function (result) {
            $("." + slide_to_delete).attr('data-operation', 'delete');
            $("." + slide_to_delete).fadeOut();

            //Add slide to listing of slide to delete
            assign_pending_change_value("#block-slider-form");
            var slidesToDelete = $('#block-slider-form').find('input[name="slides_deleted"]').val();

            if (slidesToDelete) {
                $('#block-slider-form').find('input[name="slides_deleted"]').val(slidesToDelete + ',' + slide_image_id);
            }
            else {
                $('#block-slider-form').find('input[name="slides_deleted"]').val(slide_image_id);
            }

        });


    });
}

function load_admin_menus() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    if ($(".backend-page").length > 0) {
        $.ajax({
            method: "POST",
            url: urlSite + "admin/getAllMenus",
            data: null,
            beforeSend: function () {

                //$('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            items = '';
            //$('.processing_screen').hide();
            if (jsonResult.length > 0) {
                //Add link to create new menu
                items = items + '<li><a data-element-reveal="menu-edit-backend" title="' + window.translation.add_menu + '" class="add-component menu" data-menu-id="0" data-block-id="0" href="#">' + window.translation.add_menu + '</a></li>';

                for (var i = 0; i < jsonResult.length; i++) {
                    var menu = $(".backend-page ul.manage .menu-list ul");
                    var class_item = (jsonResult[i].GlobalRestricted) ? "global-restricted" : "";


                    if (jsonResult[i].SystemName.toLowerCase() != "sharing portal menu") {


                        items = items + '<li class="has-submenu">' +
                            '<a href="#">' + jsonResult[i].SystemName + '</a>' +
                            '<ul class="submenu menu vertical">';

                            items = items + '<li><a data-element-reveal="menu-item-edit-backend" title="' + window.translation.menu_item_settings + '" class="edit-component menu-item" data-menu-id="' + jsonResult[i].ID + '" data-block-id="' + jsonResult[i].BlockID + '">' + window.translation.menu_item_settings + '</a></li>';

                        if (jsonResult[i].RestrictMenuBlockAccess !== true)
                            items = items + '<li><a data-element-reveal="menu-edit-backend" title="' + window.translation.menu_settings + '" class="edit-component menu" data-menu-id="' + jsonResult[i].ID + '" data-block-id="' + jsonResult[i].BlockID + '">' + window.translation.menu_settings + '</a></li>';
                        items = items + '</ul>' +
                            '</li>';
                    }
                    else if (IS_LLAMAPI_ENABLED !== true) {
                        items = items + '<li class="has-submenu">' +
                            '<a href="#" class="' + class_item + '">' + jsonResult[i].SystemName + '</a>' +
                            '<ul class="submenu menu vertical">' +
                            '<li><a data-element-reveal="menu-item-edit-backend" title="' + window.translation.menu_item_settings + '" class="edit-component menu-item ' + class_item + '" data-menu-id="' + jsonResult[i].ID + '" data-block-id="' + jsonResult[i].BlockID + '">' + window.translation.menu_item_settings + '</a></li>' +
                            '</ul>' +
                            '</li>';
                    }

                }
                menu.html(items);
            } else {
                var menu = $(".backend-page ul.manage .menu-list ul");
                var items = '';

                //Add link to create new menu
                items = '<li><a data-element-reveal="menu-edit-backend" title="' + window.translation.add_menu + '" class="add-component menu" data-menu-id="0" data-block-id="0" href="#">' + window.translation.add_menu + '</a></li>';

                menu.html(items);
            }

            return false;
        });

        $.ajax({
            method: "GET",
            dataType: "json",
            url: urlSite + "admin/GetAllBlocks",
        }).done(function (data) {
            var menu = $(".backend-page ul.manage .block-list ul");
           
            var hideAdvancedSearch = data.hideAdvancedSearchBlock;
            var markup = {
                'ADVANCEDSEARCH': '',
                'BASICSEARCH': '',
                'BUTTON': '',
                'CORPORATEIMAGE': '',
                'FEATUREDOPP': '',
                'IMAGE': '',
                'IMAGESLIDER': '',
                'LISTINGCMS': '',
                'RSS': '',
                'SEARCHRESULT': '',
                'SOCIALNETWORK': '',
                'SPONSOR': '',
                'VIDEO': '',
                'WYSIWYG': ''
            };

            

            var blockTypes = ['ADVANCEDSEARCH', 'BASICSEARCH', 'BUTTON', 'FEATUREDOPP', 'CORPORATEIMAGE', 'IMAGE',
                'IMAGESLIDER', 'LISTINGCMS', 'RSS', 'SEARCHRESULT', 'SOCIALNETWORK', 'SPONSOR', 'SYSTEMFORM',
                'VIDEO', 'WYSIWYG'
            ];

            if (IS_LLAMAPI_ENABLED == true) {
                blockTypes = ['BUTTON', 'CORPORATEIMAGE', 'IMAGE',
                    'IMAGESLIDER', 'LISTINGCMS', 'RSS', 'SOCIALNETWORK', 'SPONSOR',
                    'VIDEO', 'WYSIWYG'
                ];
            }
            var counterBlocks = {
                'ADVANCEDSEARCH': 0,
                'BASICSEARCH': 0,
                'BUTTON': 0,
                'FEATUREDOPP': 0,
                'CORPORATEIMAGE': 0,
                'IMAGE': 0,
                'IMAGESLIDER': 0,
                'LISTINGCMS': 0,
                'RSS': 0,
                'SEARCHRESULT': 0,
                'SOCIALNETWORK': 0,
                'SPONSOR': 0,
                'SYSTEMFORM': 0,
                'VIDEO': 0,
                'WYSIWYG': 0
            };

            var specialMenuClass = {
                'ADVANCEDSEARCH': '',
                'BASICSEARCH': '',
                'BUTTON': '',
                'CORPORATEIMAGE': '',
                'FEATUREDOPP': '',
                'IMAGE': '',
                'IMAGESLIDER': '',
                'LISTINGCMS': '',
                'RSS': '',
                'SEARCHRESULT': '',
                'SOCIALNETWORK': '',
                'SPONSOR': '',
                'SYSTEMFORM': '',
                'VIDEO': '',
                'WYSIWYG': ''
            };


            //Add links to add block
            if (hideAdvancedSearch === false) {
                markup['ADVANCEDSEARCH'] = markup['ADVANCEDSEARCH'] + '<li><a data-element-reveal="advanced-search-edit-backend" title="' + window.translation.advanced_search_settings + '" class="add-component menu" data-block-id="0" style="display: block;">' + window.translation.add_advanced_search + '</a></li>';
            }
            
            markup['CORPORATEIMAGE'] = markup['CORPORATEIMAGE'] + '<li><a data-element-reveal="corporate-image-configuration" title="' + window.translation.corporate_image_block_settings + '" class="add-component menu" data-block-id="0">' + window.translation.add_corporate_image_block + '</a></li>';
            markup['VIDEO'] = markup['VIDEO'] + '<li><a data-element-reveal="video-configuration" title="' + window.translation.video_block_settings + '" class="add-component menu" data-block-id="0">' + window.translation.add_video_block + '</a></li>';
            markup['SOCIALNETWORK'] = markup['SOCIALNETWORK'] + '<li><a data-element-reveal="social-network-configuration" title="' + window.translation.social_network_block_settings + '" class="add-component menu" data-block-id="0">' + window.translation.add_social_network_block + '</a></li>';
            markup['SPONSOR'] = markup['SPONSOR'] + '<li><a data-element-reveal="sponsor-block-configuration" title="' + window.translation.sponsor_block_settings + '" class="add-component menu" data-block-id="0">' + window.translation.add_sponsor_block + '</a></li>';
            markup['IMAGE'] = markup['IMAGE'] + '<li><a data-element-reveal="blocks-image-configuration" title="' + window.translation.image_block_settings + '" class="add-component menu" data-block-id="0">' + window.translation.add_image_block + '</a></li>';
            markup['IMAGESLIDER'] = markup['IMAGESLIDER'] + '<li><a data-open="blocks-slider-conf" title="' + window.translation.image_slider_settings + '" class="add-component menu" data-block-id="0">' + window.translation.add_image_slider + '</a></li>';
            markup['RSS'] = markup['RSS'] + '<li><a data-element-reveal="rss-block-edit-backend" title="' + window.translation.rss_block_settings + '" class="add-component menu" data-block-id="0" style="display: block;">' + window.translation.add_rss_block + '</a></li>';
            markup['WYSIWYG'] = markup['WYSIWYG'] + '<li><a data-element-reveal="blocks-wysiwyg-conf" title="' + window.translation.wysiwyg_block_settings + '" class="add-component menu" data-block-id="0" style="display: block;">' + window.translation.add_wysiwyg_block + '</a></li>';
            markup['BASICSEARCH'] = markup['BASICSEARCH'] + '<li><a data-element-reveal="basic-search-edit-backend" title="' + window.translation.basic_search_settings + '" class="add-component menu" data-block-id="0" style="display: block;">' + window.translation.add_basic_search_block + '</a></li>';

            if (IS_LLAMAPI_ENABLED !== true) {
                markup['FEATUREDOPP'] = markup['FEATUREDOPP'] + '<li><a data-element-reveal="featured-opp-settings" title="' + window.translation.featured_opp + '" class="add-component menu" data-block-id="0" style="display: block;">' + window.translation.add_block + '</a></li>';
            }

            markup['LISTINGCMS'] = markup['LISTINGCMS'] + '<li><a data-element-reveal="listing-cms-block-conf" title="' + window.translation.listing_cms + '" class="add-component menu" data-block-id="0" style="display: block;">' + window.translation.add_block + '</a></li>';
            markup['SEARCHRESULT'] = markup['SEARCHRESULT'] + '<li><a data-element-reveal="search-result-block-conf" title="' + window.translation.searchresult_block + '" class="add-component menu" data-block-id="0" style="display: block;">' + window.translation.add_block + '</a></li>';
            markup['BUTTON'] = markup['BUTTON'] + '<li><a data-element-reveal="button-block-configuration" title="Button Block Settings" class="add-component menu" data-block-id="0" style="display: block;">' + window.translation.add_block + '</a></li>';

            data.blocks.forEach(function (item) {

                var className = item.CssClass;

                

                switch (item.TypeString) {
                    case 'WYSIWYG':
                        markup['WYSIWYG'] = markup['WYSIWYG'] + '<li><a data-element-reveal="blocks-wysiwyg-conf" title="' + window.translation.wysiwyg_block_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['WYSIWYG']++;
                        break;
                    case 'IMAGE':
                        markup['IMAGE'] = markup['IMAGE'] + '<li><a data-element-reveal="blocks-image-configuration" title="' + window.translation.image_block_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['IMAGE']++;
                        break;
                    case 'IMAGESLIDER':
                        markup['IMAGESLIDER'] = markup['IMAGESLIDER'] + '<li><a data-open="blocks-slider-conf" title="' + window.translation.image_slider_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['IMAGESLIDER']++;
                        break;
                    case 'RSS':
                        markup['RSS'] = markup['RSS'] + '<li><a data-element-reveal="rss-block-edit-backend" title="' + window.translation.rss_block_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['RSS']++;
                        break;
                    case 'BASICSEARCH':
                        if (IS_LLAMAPI_ENABLED !== true ||
                            ($('body').hasClass('hoc-volunteer-system') && $('body').hasClass('hoc-volunteer-system-hybrid')
                                && IS_LLAMAPI_ENABLED === true)) {
                            markup['BASICSEARCH'] = markup['BASICSEARCH'] + '<li><a data-element-reveal="basic-search-edit-backend" title="' + window.translation.basic_search_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                            counterBlocks['BASICSEARCH']++;
                        }
                        break;
                    case 'ADVANCEDSEARCH':
                        if (IS_LLAMAPI_ENABLED !== true && hideAdvancedSearch !== true) {
                            markup['ADVANCEDSEARCH'] = markup['ADVANCEDSEARCH'] + '<li><a data-element-reveal="advanced-search-edit-backend" title="' + window.translation.advanced_search_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                            counterBlocks['ADVANCEDSEARCH']++;
                        }
                        break;
                    case 'CORPORATEIMAGE':
                        markup['CORPORATEIMAGE'] = markup['CORPORATEIMAGE'] + '<li><a data-element-reveal="corporate-image-configuration" title="' + window.translation.corporate_image_block_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['CORPORATEIMAGE']++;
                        break;
                    case 'VIDEO':
                        markup['VIDEO'] = markup['VIDEO'] + '<li><a data-element-reveal="video-configuration" title="' + window.translation.video_block_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['VIDEO']++;
                        break;
                    case 'SOCIALNETWORK':
                        markup['SOCIALNETWORK'] = markup['SOCIALNETWORK'] + '<li><a data-element-reveal="social-network-configuration" title="' + window.translation.social_network_block_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['SOCIALNETWORK']++;
                        break;
                    case 'SPONSOR':
                        markup['SPONSOR'] = markup['SPONSOR'] + '<li><a data-element-reveal="sponsor-block-configuration" title="' + window.translation.sponsor_block_settings + '" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['SPONSOR']++;
                        break;
                    case 'FEATUREDOPP':
                        if (IS_LLAMAPI_ENABLED !== true) {
                            markup['FEATUREDOPP'] = markup['FEATUREDOPP'] + '<li><a data-element-reveal="featured-opp-settings" title="' + window.translation.featured_opp + '" class="edit-component menu ' + getActivableBlocksByGlobal("feature_opps", data.globalactivableblocks) + '" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                            counterBlocks['FEATUREDOPP']++;
                        }
                        break;
                    case 'LISTINGCMS':
                        markup['LISTINGCMS'] = markup['LISTINGCMS'] + '<li><a data-element-reveal="listing-cms-block-conf" title="' + window.translation.listing_cms + '" class="edit-component menu ' + getActivableBlocksByGlobal("listing_cms", data.globalactivableblocks) + '" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['LISTINGCMS']++;
                        break;
                    case 'SEARCHRESULT':
                        if (IS_LLAMAPI_ENABLED !== true ||
                            ($('body').hasClass('hoc-volunteer-system') && $('body').hasClass('hoc-volunteer-system-hybrid')
                                && IS_LLAMAPI_ENABLED === true)) {
                            markup['SEARCHRESULT'] = markup['SEARCHRESULT'] + '<li><a data-element-reveal="search-result-block-conf" title="' + window.translation.searchresult_block + '" class="edit-component menu ' + getActivableBlocksByGlobal("search_result", data.globalactivableblocks) + ' ' + className + '" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                            counterBlocks['SEARCHRESULT']++;
                        }
                        break;
                    case 'BUTTON':
                        markup['BUTTON'] = markup['BUTTON'] + '<li><a data-element-reveal="button-block-configuration" title="Button Block Settings" class="edit-component menu" data-block-id="' + item.ID + '">' + item.SystemName + '</a></li>';
                        counterBlocks['BUTTON']++;
                        break;
                }
            });

            //Procesing number of items
            var initialCount = MAX_MENU_ITEMS;
            var counter = 0;

            blockTypes.forEach(function (item, index) {
                var valid = true;
                if (IS_LLAMAPI_ENABLED !== true && item === "FEATUREDOPP") {
                    valid = false;
                    if (getActivableBlocks(data.activableblocks, "feature_opps", data.globalactivableblocks, data.cmsPrivileges))
                        valid = true;
                }
                if (item === "LISTINGCMS") {
                    valid = false;
                    if (getActivableBlocks(data.activableblocks, "listing_cms", data.globalactivableblocks, data.cmsPrivileges))
                        valid = true;
                }
                if (IS_LLAMAPI_ENABLED !== true && item === "SEARCHRESULT") {
                    valid = false;
                    if (getActivableBlocks(data.activableblocks, "search_result", data.globalactivableblocks, data.cmsPrivileges))
                        valid = true;
                }

                //Validate if exists more of 15 items to apply "Special Position"
                if (valid === true) {
                    specialMenuClass[item] = "";

                    if (counterBlocks[item] >= initialCount) {
                        var position = counter;
                        //Special validation when there are less items in submenu than position of menu item
                        if (counter > counterBlocks[item]) {
                            ///position = counter - counterBlocks[item];
                            position = counterBlocks[item];
                        }

                        specialMenuClass[item] = "special-level-menu" + " special-position-" + (position - 1);
                    }
                    initialCount--;
                    counter++;
                }
            });

            var htmlMarkup = '';
            if (IS_LLAMAPI_ENABLED !== true) {

                if (hideAdvancedSearch !== true) {
                    if (markup['ADVANCEDSEARCH'] != '') {
                        htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.advanced_search + '</a>' +
                            '<ul class="submenu menu vertical ' + specialMenuClass['ADVANCEDSEARCH'] + '">' + markup['ADVANCEDSEARCH'] + '</ul>' +
                            '</li>';
                    }

                }
            }
            if ((IS_LLAMAPI_ENABLED !== true && markup['BASICSEARCH'] != '')
                ||
                (IS_LLAMAPI_ENABLED === true && markup['BASICSEARCH'] != '' && $('body').hasClass('hoc-volunteer-system') && $('body').hasClass('hoc-volunteer-system-hybrid'))
                ) {
                htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.basic_search + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['BASICSEARCH'] + '">' + markup['BASICSEARCH'] + '</ul>' +
                    '</li>';
            }

            if (markup['BUTTON'] != '') {
                htmlMarkup += '<li class="has-submenu"><a href="#">Button Block</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['BUTTON'] + '">' + markup['BUTTON'] + '</ul>' +
                    '</li>';
            }
            if (IS_LLAMAPI_ENABLED !== true && markup['FEATUREDOPP'] != '' && getActivableBlocks(data.activableblocks, "feature_opps", data.globalactivableblocks, data.cmsPrivileges)) {
                htmlMarkup += '<li class="has-submenu"><a href="#" class="' + getActivableBlocksByGlobal("feature_opps", data.globalactivableblocks) + ' ">' + window.translation.featured_opp + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['FEATUREDOPP'] + '">' + markup['FEATUREDOPP'] + '</ul>' +
                    '</li>';
            }
            if (markup['CORPORATEIMAGE'] != '') {
                htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.corporate_image_block + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['CORPORATEIMAGE'] + '">' + markup['CORPORATEIMAGE'] + '</ul>' +
                    '</li>';
            }
            if (markup['IMAGE'] != '') {
                htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.image + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['IMAGE'] + '">' + markup['IMAGE'] + '</ul>' +
                    '</li>';
            }
            if (markup['IMAGESLIDER'] != '') {
                htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.image_slider + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['IMAGESLIDER'] + '">' + markup['IMAGESLIDER'] + '</ul>' +
                    '</li>';
            }
            if (markup['LISTINGCMS'] != '' && getActivableBlocks(data.activableblocks, "listing_cms", data.globalactivableblocks, data.cmsPrivileges)) {
                htmlMarkup += '<li class="has-submenu"><a href="#" class="' + getActivableBlocksByGlobal("listing_cms", data.globalactivableblocks) + ' " >' + window.translation.listing_cms + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['LISTINGCMS'] + '">' + markup['LISTINGCMS'] + '</ul>' +
                    '</li>';
            }
            if (markup['RSS'] != '') {
                htmlMarkup += '<li class="has-submenu"><a href="#">RSS</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['RSS'] + '">' + markup['RSS'] + '</ul>' +
                    '</li>';
            }
            if ((IS_LLAMAPI_ENABLED !== true && markup['SEARCHRESULT'] != '' && getActivableBlocks(data.activableblocks, "search_result", data.globalactivableblocks, data.cmsPrivileges))
                ||
                (IS_LLAMAPI_ENABLED === true && markup['SEARCHRESULT'] != '' && $('body').hasClass('hoc-volunteer-system') && $('body').hasClass('hoc-volunteer-system-hybrid'))
            )
            {
                htmlMarkup += '<li class="has-submenu"><a href="#" class="' + getActivableBlocksByGlobal("search_result", data.globalactivableblocks) + ' " >' + window.translation.searchresult_block + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['SEARCHRESULT'] + '">' + markup['SEARCHRESULT'] + '</ul>' +
                    '</li>';
            }
            if (markup['SOCIALNETWORK'] != '') {
                htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.social_network_block + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['SOCIALNETWORK'] + '">' + markup['SOCIALNETWORK'] + '</ul>' +
                    '</li>';
            }
            if (markup['SPONSOR'] != '') {
                htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.sponsor_block + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['SPONSOR'] + '">' + markup['SPONSOR'] + '</ul>' +
                    '</li>';
            }

            // Blocks > System Form
            if (IS_LLAMAPI_ENABLED !== true) {
                var classSystemForm = 'system-form-menu';
                if (data.globaluser) {
                    classSystemForm += ' global-user-logged';
                }
                if (data.cmsPrivileges && data.cmsPrivileges.length > 0) {
                    classSystemForm += ' cms-privileges-enabled';
                }

                htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.form_setting + '</a>' +
                    '<ul class="submenu menu vertical custom-special-position ' + classSystemForm + '">';
                if (getActivableBlocks(data.activableblocks, "first_step_volunteer_opportunity_form", data.globalactivableblocks, data.cmsPrivileges)) {
                    htmlMarkup += '<li>' +
                        '<a title=" First Step Volunteer Opportunity Settings" class="edit-component first-step-vol-opp-form-settings ' + getActivableBlocksByGlobal("first_step_volunteer_opportunity_form", data.globalactivableblocks) + '" data-element-reveal="fisrt-pag-vol-opp-form-settings-edit-backend">' +
                        window.translation.first_step_vol_opp_settings +
                        '</a>' +
                        '</li>';
                }
                htmlMarkup += '<li>' +
                    '<a data-element-reveal="standard-form-settings-edit-backend" data-category-name="SharingPortalLocationSettings" title="' + window.translation.location_form + '" class="edit-component columns-list-settings" style="display: block;">' + window.translation.location_form + '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Browse Organization Page Settings" class="edit-component browse-organization-settings" data-element-reveal="browse-organization-settings-edit-backend">' +
                    window.translation.browse_organization_setting +
                    '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Organization Detail Page Settings" class="edit-component organization-detail-settings" data-element-reveal="organization-detail-settings-edit-backend">' +
                    window.translation.organization_detail_settings +
                    '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Organization Form Settings" class="edit-component organization-settings" data-element-reveal="organization-form-settings-edit-backend">' +
                    window.translation.organization_setting +
                    '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Overview Form Settings" class="edit-component overview-settings" data-element-reveal="overview-form-settings-edit-backend">' +
                    window.translation.overview_setting +
                    '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Skill Settings" class="edit-component skill-settings" data-element-reveal="skill-settings-edit-backend">' +
                    window.translation.skill_setting +
                    '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Skill Documentation Settings" class="edit-component skill-doc-settings" data-element-reveal="skill-document-settings-edit-backend">' +
                    window.translation.skill_documentation_setting +
                    '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Self-Report Page Settings" class="edit-component selfreport-page-settings" data-element-reveal="selfreport-page-settings-edit-backend">' +
                    window.translation.self_report_page +
                    '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Special Event Page Settings" class="edit-component special-event-settings" data-element-reveal="special-event-settings-edit-backend">' +
                    window.translation.special_event_settings +
                    '</a>' +
                    '</li>';

                htmlMarkup += '<li>' +
                    '<a title="Personal Information Form Settings" class="edit-component personal-information-settings" data-element-reveal="personal-information-form-settings-edit-backend">' +
                    window.translation.personal_information_form_settings +
                    '</a>' +
                    '</li>';

                htmlMarkup += '<li>' +
                    '<a title="Volunteer Form Settings" class="edit-component volunteer-form-settings" data-element-reveal="volunteer-form-settings-edit-backend">' +
                    window.translation.volunteer_form +
                    '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Volunteer Form Settings" class="edit-component opportunity-detail-page" data-element-reveal="opportunity-detail-settings-edit-backend">' +
                    window.translation.opportunity_detail_page +
                    '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a title="Volunteer Form Settings" class="edit-component contact-page" data-element-reveal="contact-pages-form-settings-edit-backend">' +
                    window.translation.contact_form +
                    '</a>' +
                    '</li>';
                if (data.globaluser || getActivableBlocks(data.activableblocks, "TeamCreationRequirement", data.globalactivableblocks, data.cmsPrivileges)) {
                    htmlMarkup += '<li>' +
                        '<a title="Team Form Settings" class="edit-component team-page ' + (!getActivableBlocks(data.activableblocks, "TeamCreationRequirement", data.globalactivableblocks, data.cmsPrivileges) ? 'global-restricted' : '') + '" data-element-reveal="team-pages-form-settings-edit-backend">' +
                        window.translation.team_form_settings_page +
                        '</a>' +
                        '</li>';
                }
                if (data.isUT) {
                    htmlMarkup += '<li>' +
                        '<a title="Connection Form Settings" class="edit-component cookie consent" data-element-reveal="cookie-consent-banner-settings-edit-backend">' +
                        window.translation.cookie_consent_banner +
                        '</a>' +
                        '</li>';
                }

                if (data.globaluser || getActivableBlocks(data.activableblocks, "ConnectionForm", data.globalactivableblocks, data.cmsPrivileges)) {
                    htmlMarkup += '<li>' +
                        '<a title="Connection Form Settings" class="edit-component connection-page ' + (getActivableBlocks(data.activableblocks, "ConnectionForm", data.globalactivableblocks, data.cmsPrivileges) ? '' : 'global-restricted') + '" data-element-reveal="connection-pages-form-settings-edit-backend">' +
                        window.translation.connection_form +
                        '</a>' +
                        '</li>';
                }


                if (!IS_LLAMAPI_ENABLED) {
                    htmlMarkup += '<li>' +
                        '<a title="Verification code - Introduction text" class="edit-component verification code" data-element-reveal="verification-code-settings-edit-backend">' +
                        'Verification code - Introduction text' +
                        '</a>' +
                        '</li>';
                }

                htmlMarkup += '</ul>' +
                    '</li>';
            }
            else {
                var classSystemForm = 'system-form-menu ';
                if (data.globaluser) {
                    classSystemForm += ' global-restricted';
                }
                if (data.cmsPrivileges && data.cmsPrivileges.length > 0) {
                    classSystemForm += ' cms-privileges-enabled';
                }

                if (data.globaluser && $('body').hasClass('hoc-volunteer-system-hybrid')) {
                    htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.form_setting + '</a>' +
                        '<ul class="submenu menu vertical ' + classSystemForm + '">';
                    htmlMarkup += '<li>' +
                        '<a title="Volunteer Form Settings" class="edit-component opportunity-detail-page '+classSystemForm+'" data-element-reveal="opportunity-detail-settings-edit-backend">' +
                        window.translation.opportunity_detail_page +
                        '</a>' +
                        '</li>';
                    htmlMarkup += '</ul>' +
                        '</li>';
                }
            }


            // Blocks > Sharing Portal
            if (IS_LLAMAPI_ENABLED !== true) {

                htmlMarkup += '<li class="has-submenu"><a href="#" class="">' + window.translation.sharing_portal_list + '</a>' +
                    '<ul class="submenu menu vertical special-position-6">';
                htmlMarkup += '<li>' +
                    '<a data-element-reveal="columns-list-settings-edit-backend" data-list-name="SharingPortalOpportunitiesList" title="' + window.translation.manage_columns + '" class="edit-component columns-list-settings" style="display: block;">' + window.translation.volunteer_opportunities + '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a data-element-reveal="columns-list-settings-edit-backend" data-list-name="SharingPortalOppDetailConnectionsList" title="' + window.translation.manage_columns + '" class="edit-component columns-list-settings" style="display: block;">' + window.translation.opp_detail_connections_list + '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a data-element-reveal="columns-list-settings-edit-backend" data-list-name="SharingPortalOppDetailOccurrencesList" title="' + window.translation.manage_columns + '" class="edit-component columns-list-settings" style="display: block;">' + window.translation.opp_detail_occurrences_list + '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a data-element-reveal="columns-list-settings-edit-backend" data-list-name="SharingPortalReportAttendanceConnectionsList" title="' + window.translation.manage_columns + '" class="edit-component columns-list-settings" style="display: block;">' + window.translation.report_attendance_list + '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a data-element-reveal="columns-list-settings-edit-backend" data-list-name="SharingPortalContactsList" title="' + window.translation.manage_columns + '" class="edit-component columns-list-settings" style="display: block;">' + window.translation.contacts_list + '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a data-element-reveal="columns-list-settings-edit-backend" data-list-name="SharingPortalLocations" title="' + window.translation.manage_columns + '" class="edit-component columns-list-settings" style="display: block;">' + window.translation.locations_list + '</a>' +
                    '</li>';
                htmlMarkup += '<li>' +
                    '<a data-element-reveal="columns-list-settings-edit-backend" data-list-name="SharingPortalConnetionsByContactList" title="' + window.translation.manage_columns + '" class="edit-component columns-list-settings" style="display: block;">' + window.translation.cont_detail_connections_list + '</a>' +
                    '</li>';
                htmlMarkup += '</ul>' +
                    '</li>';
            }
            if (markup['VIDEO'] != '') {
                htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.video_block + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['VIDEO'] + '">' + markup['VIDEO'] + '</ul>' +
                    '</li>';
            }
            if (markup['WYSIWYG'] != '') {
                htmlMarkup += '<li class="has-submenu"><a href="#">' + window.translation.wysiwyg + '</a>' +
                    '<ul class="submenu menu vertical ' + specialMenuClass['WYSIWYG'] + '">' + markup['WYSIWYG'] + '</ul>' +
                    '</li>';
            }

            menu.html(htmlMarkup);

            // Calculate Special Positions
            $(".custom-special-position").each(function () {
                var countChildren = $(this).children("li").length;
                if ($(this).hasClass('system-form-menu')) {
                    if ($(this).hasClass('global-user-logged')) {
                        $(this).addClass("special-position-11");
                    }
                    else if ($(this).hasClass('cms-privileges-enabled')) {
                        $(this).addClass("special-position-" + (countChildren - 5));
                    }
                    else {
                        $(this).addClass("special-position-7");
                    }
                } else {
                    $(this).addClass("special-position-" + (countChildren - 1));
                }

            });
        });
    }
}

function load_addons_section_menus() {
    if ($(".backend-page").length > 0) {
        var LLAMAPI_ENABLED = window.is_llamapi;
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var isSharingPortalPlus = $('body').hasClass('mini-site');
        var isSpecialMiniSite = $('body').hasClass('special-mini-site');

        $.ajax({
            method: "GET",
            url: urlSite + "ARS/GetBlocksAddonsSection",
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            var menuWorkflows = $(".backend-page ul.manage ul.workflows-menu");
            var menuForms = $(".backend-page ul.manage ul.forms-menu");
            var menuDonations = $(".backend-page ul.manage ul.donations-menu");

            var htmlMarkup = '';
            var markup = '';
            var markupForms = '';
            var markupDonations = '';
            var markupVolWork = '';
            var markupPartnerWork = '';
            var markupULWork = '';
            var className = '';

            var globalUser = jsonResult["globalUser"];
            var siteIsSSO = jsonResult["siteIsSSO"];
            var allowARSLogin = jsonResult["allowARSLogin"];
            var ARSLoginActive = jsonResult["ARSLoginActive"];

            if (globalUser != null && globalUser != undefined && globalUser == true) {
                var specialClass = "";
                if (siteIsSSO == true) {
                    specialClass = "has-SSO";
                }
            }

            markupULWork = '<li><a data-element-reveal="ars-workflow-link" data-from="login" title="' + window.translation.add_workflow + '" class="add-component menu ' + specialClass + '" data-workflow-id="0" style="display: block;">' + window.translation.add_workflow + '</a></li>';

            if (jsonResult["basicLoginWorkflows"]) {
                jsonResult['basicLoginWorkflows'].forEach(function (item) {
                    className = '';
                    if (item.IsDefault === '1' || item.IsDefault === 1)
                        className = 'workflow-used-in-site';
                    markupULWork = markupULWork + '<li><a data-element-reveal="ars-workflow-link" data-from="login" title="" class="edit-component menu ' + className + '" data-workflow-id="' + item.ID + '">' + item.Name + '</a></li>';
                });

            }

            

            markupVolWork = markupVolWork + '<li><a data-element-reveal="ars-workflow-link" data-from="vol-reg" title="' + window.translation.add_workflow + '" class="add-component menu" data-workflow-id="0" style="display: block;">' + window.translation.add_workflow + '</a></li>';

            if (jsonResult['volunteerWorkflows'] !== null && jsonResult['volunteerWorkflows'] !== undefined && jsonResult['volunteerWorkflows'].length > 0) {
                jsonResult['volunteerWorkflows'].forEach(function (item) {
                    className = '';
                    if (item.IsDefault === '1' || item.IsDefault === 1)
                        className = 'workflow-used-in-site';
                    markupVolWork = markupVolWork + '<li><a data-element-reveal="ars-workflow-link" data-from="vol-reg" title="" class="edit-component menu ' + className + '" data-workflow-id="' + item.ID + '">' + item.Name + '</a></li>';
                });
            }


            var workflowVolTitle = window.translation.llamasite_ars_registration;

            if (LLAMAPI_ENABLED === false) {

                workflowVolTitle = window.translation.vol_reg;

                if ((isSharingPortalPlus === false) || (isSharingPortalPlus === true && isSpecialMiniSite === true)) {
                    markupPartnerWork = markupPartnerWork + '<li><a data-element-reveal="ars-workflow-link" data-from="partner-reg" title="' + window.translation.add_workflow + '" class="add-component menu" data-workflow-id="0" style="display: block;">' + window.translation.add_workflow + '</a></li>';
                    if (jsonResult['orgWorkflows'] !== null && jsonResult['orgWorkflows'] !== undefined && jsonResult['orgWorkflows'].length > 0) {
                        jsonResult['orgWorkflows'].forEach(function (item) {

                            className = '';
                            if (item.IsDefault === '1' || item.IsDefault === 1)
                                className = 'workflow-used-in-site';

                            markupPartnerWork = markupPartnerWork + '<li><a data-element-reveal="ars-workflow-link" data-from="partner-reg" title="" class="edit-component menu ' + className + '" data-workflow-id="' + item.ID + '">' + item.Name + '</a></li>';
                        });
                    }

                }

            }

            var isAllowOppSignupARS = true;
            if (LLAMAPI_ENABLED == false || (LLAMAPI_ENABLED == true && isAllowOppSignupARS)) {
                markup = markup + '<li><a data-element-reveal="ars-workflow-link" data-from="signup" title="' + window.translation.add_workflow + '" class="add-component menu" data-workflow-id="0" style="display: block;">' + window.translation.add_workflow + '</a></li>';

                if (jsonResult['signUpWorkflows']) {
                    jsonResult['signUpWorkflows'].forEach(function (item) {
                        markup = markup + '<li><a data-element-reveal="ars-workflow-link" data-from="signup" title="" class="edit-component menu" data-workflow-id="' + item.ID + '">' + item.Name + '</a></li>';
                    });
                }

            }


            var classArsLogin = '';
            if (LLAMAPI_ENABLED === false) {
                if ((globalUser !== null && globalUser !== undefined && globalUser === true) &&
                    (ARSLoginActive !== null && ARSLoginActive !== undefined && ARSLoginActive === false)) {
                    classArsLogin = 'global-restricted';
                }
            }


            htmlMarkup += '<li class="has-submenu">' +
                '<a title="' + window.translation.ars_basic_login + '" class="edit-component menu">' + window.translation.ars_basic_login + '</a>' +
                '<ul class="submenu menu vertical">' + markupULWork + '</ul>' +
                '</li>';


            htmlMarkup += '<li class="has-submenu">' +
                '<a title="' + workflowVolTitle + '" class="edit-component menu">' + workflowVolTitle + '</a>' +
                '<ul class="submenu menu vertical">' + markupVolWork + '</ul>' +
                '</li>';


 
            if (LLAMAPI_ENABLED == false) {
                if (isSharingPortalPlus === false || (isSharingPortalPlus === true && isSpecialMiniSite === true)) {
                    htmlMarkup += '<li class="has-submenu">' +
                        '<a title="' + window.translation.partner_reg + '" class="edit-component menu" data-workflow-id="0">' + window.translation.partner_reg + '</a>' +
                        '<ul class="submenu menu vertical">' + markupPartnerWork + '</ul>' +
                        '</li>';
                }

            }

            var isAllowOppSignupARSForLlama = jsonResult["isAllowOppSignupARSForLlama"] !== undefined && jsonResult["isAllowOppSignupARSForLlama"] !== null && (jsonResult["isAllowOppSignupARSForLlama"] === true);

            if (LLAMAPI_ENABLED == false || (LLAMAPI_ENABLED == true && isAllowOppSignupARSForLlama)) {

                var titleARS = window.translation.opportunity_signup;
                if (LLAMAPI_ENABLED == true) {
                    titleARS = "HOCVolunteers > Opportunity Signup";
                }

                htmlMarkup += '<li class="has-submenu">' +
                    '<a title="' + titleARS + '" class="edit-component menu">' + titleARS + '</a>' +
                    '<ul class="submenu menu vertical">' + markup + '</ul>' +
                    '</li>';

            }


            menuWorkflows.html(htmlMarkup);

            if (jsonResult['formBlocks']) {
                jsonResult['formBlocks'].forEach(function (item) {
                    markupForms = markupForms + '<li><a data-element-reveal="form-builder-block" title="' + window.translation.form + '" data-block-id="' + item.ID + '" class="edit-component menu">' + item.Name + '</a></li>';
                });

                if (markupForms) {
                    menuForms.append(markupForms);
                }
            }

            if (jsonResult['donationBlocks']) {
                jsonResult['donationBlocks'].forEach(function (item) {
                    markupDonations = markupDonations + '<li><a data-element-reveal="donation-block-independent-conf" title="' + window.translation.donation + '" data-block-id="' + item.ID + '" class="edit-component menu">' + item.Name + '</a></li>';
                });

                if (markupDonations) {
                    menuDonations.append(markupDonations);
                }
            }
        });
    }
}

function page_list() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a#cms-admin', function () {
        page_list_load();
    });
}

function theme_view_events() {
    if (!is_backend_page()) return;
    $(document).on('click', '.theme_view a', function () {
        var themeViewEnabled = ($(this).hasClass('on')) ? true : false;

        if (themeViewEnabled) {
            $(this).removeClass('on');

            //Disable theme view
            $('.container').removeClass('region-selectable');

            //Remove div of info
            $('.container').find('.region_info').remove();
        }
        else {
            $(this).addClass('on');

            //Enable theme view
            $('.container').addClass('region-selectable');

            $('.container').each(function () {
                var idContainer = $(this).attr('id');
                var idContainerParts = idContainer.split('-');
                var nameRegion = '';
                var isStandard = false;
                var countPart = 0;

                if (idContainerParts[0] == 'region') {
                    isStandard = true;
                }
                idContainerParts.forEach(function (part) {
                    if (countPart > 1 && isStandard) {
                        nameRegion = nameRegion + ' ' + part.capitalizeFirstLetter();
                    }
                    else if (isStandard == false) {
                        nameRegion = nameRegion + ' ' + part.capitalizeFirstLetter();
                    }
                    countPart = countPart + 1;
                });

                nameRegion = nameRegion.trim();

                //Get translation of nameRegion (if exists)
                if (window.translation[nameRegion.toLowerCase().replaceAll(' ', '_')]) {
                    nameRegion = window.translation[nameRegion.toLowerCase().replaceAll(' ', '_')];
                }

                var divInfo = '<div class="region_info"><span>' + nameRegion + '</span></div>';

                if ($(this).find('.region_info').length == 0) {
                    $(this).prepend(divInfo);
                }
            });
        }
    });

    //Over to regions with theme enabled
    $(document).on({
        mouseenter: function () {
            if ($('body').hasClass('gu-unselectable') == false) {
                $(this).find('.region_info').fadeOut(100);
            }
        },
        mouseleave: function () {
            if ($('body').hasClass('gu-unselectable') == false) {
                $(this).find('.region_info').fadeIn(100);
            }
        }
    }, '.container');
}

function toggle_component() {
    if ($('.toggle').length !== 0) {
        var translation = window.translation;

        $(document).on('click', '.toggle', function () {
            var elementToggle = $(this).data('toggle');
            var idParent = $(this).parents('.reveal').attr('id');
            var hasClass = false;
            var forTextSettings = $(this).hasClass('advanced-text');
            $('#' + idParent + ' #' + elementToggle).toggleClass('is-hidden');

            hasClass = ($('#' + idParent + ' #' + elementToggle).hasClass('is-hidden')) ? true : false;

            if (!hasClass) {
                $(this).html(forTextSettings ? "Show less" : translation.hide_advanced_settings);
            }
            else {
                $(this).html(forTextSettings ? "Show more" : translation.show_advanced_settings);
            }
        });
    }
}

function validate_page_modal_form(form) {
    let result = true;
    //reseting values
    if (form.find('input[name="friendly-url"]').length > 0 && form.find('input[name="friendly-url"]').val() === '') {
        result = false;
        form.find('label[for="friendly_url"]').removeClass('required');
        form.find('input[name="friendly-url"]').removeAttr('data-required');
        form.find('input[name="friendly-url"]').removeClass('error');
        form.find('input[name="friendly-url"]').removeClass('required');
        form.find('label#friendly-url-error').remove();
    }



    if (form.find('input[name="display-page-title"]').val() === true || form.find('input[name="display-page-title"]').val() == 'true') {
        if (form.find('input.title-field').length > 0) {
            form.find('input.title-field').each(function () {
                let value = $(this).val();
                if (value === null || value === undefined || value === '') {
                    result = false;
                    let name = $(this).attr('name');
                    let label = name.replace('-', '_');
                    form.find('label[for="' + label + '"]').addClass('required');
                    form.find('label[for="' + label + '"]').attr('data-required', '*');
                    form.find('input[name="' + name + '"]').addClass('required');
                    form.find('input[name="' + name + '"]').attr('data-required', true);
                }
            });

            if (result === false) {
                Swal.fire({
                    title: "",
                    icon: "warning",
                    text: window.translation.page_all_page_required,
                    confirmButtonText: "Ok"
                });
            }
        }
    } else {
        if (form.find('input[name="friendly-url"]').length > 0 && form.find('input[name="friendly-url"]').val() === '') {
            result = false;
            form.find('label[for="friendly_url"]').addClass('required');
            form.find('input[name="friendly-url"]').addClass('required');
            form.find('input[name="friendly-url"]').attr('data-required', true);
            if (result === false) {
                Swal.fire({
                    title: "",
                    icon: "warning",
                    text: window.translation.page_friendly_url_required,
                    confirmButtonText: "Ok"
                });
            }
        }
    }
    return result;
}

function validate_save_page() {
    if (!is_backend_page()) return;
    if ($("#page-conf-form").length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $(document).on('click', '#page-conf-form .save-page', function () {
            $(".tab-language.is-default").trigger("click");
            $(".title-field").prop('disabled', false);
            let validForm = validate_page_modal_form($('#page-conf-form'));
            if (validForm === true) {
                initiate_jquery_validate_reveal($('#page-conf-form'), 'page-conf-form');
                if ($('#page-conf-form').valid() && validForm === true) {

                    var pageRole = $('#page-role-field').val();
                    if ($("#friendly-url").val() === "partner-portal/dashboard" && pageRole === "true") {
                        var tempRole = $('#selectbox_role').val();
                        var tempField = $('#selectbox_field').val();
                        $('.hiddenlanguage').each(function () {
                            var langID = $(this).attr('data-language-id');
                            var tempname = $('#selectbox_role').val() + "-" + $('#selectbox_field').val() + "-" + langID;
                            $("#titlerole-" + tempname).val($("#title-" + langID).val());
                            $("#bodyrole-" + tempname).val(CKEDITOR.instances["body-" + langID].getData());
                            $('.hidden_title-' + langID).each(function () {
                                $(this).val($("#titlerole-null-null-" + langID).val());
                            });
                        });
                        $('#selectbox_role').val("null");
                        $('#selectbox_field').val("null");
                        $("#selectbox_field").prop('disabled', true);
                        $('.hiddenlanguage').each(function () {
                            var langID = $(this).attr('data-language-id');
                            $("#title-" + langID).val($("#titlerole-null-null-" + langID).val());
                            $("#body-" + langID).val($("#bodyrole-null-null-" + langID).val());
                            CKEDITOR.instances["body-" + langID].setData($("#bodyrole-null-null-" + langID).val());
                        });
                    }
                    //  Setting CKEDITOR Data
                    $('.hiddenlanguage').each(function () {
                        var langID = $(this).attr('data-language-id');
                        var selector = 'body-' + langID;
                        if (typeof CKEDITOR.instances[selector] == "object") {
                            //Body
                            if (CKEDITOR.instances[selector] !== null && CKEDITOR.instances[selector] !== undefined)
                                $('textarea[name="' + selector + '"]').val(CKEDITOR.instances[selector].getData());

                            //Result Text
                            selector = 'result-text-' + langID;
                            if (CKEDITOR.instances[selector] !== null && CKEDITOR.instances[selector] !== undefined)
                                $('textarea[name="' + selector + '"]').val(CKEDITOR.instances[selector].getData());

                            //Page Summary
                            selector = 'page-summary-' + langID;
                            if (CKEDITOR.instances[selector] !== null && CKEDITOR.instances[selector] !== undefined)
                                $('textarea[name="' + selector + '"]').val(CKEDITOR.instances[selector].getData());
                        } else {
                            initialize_ckeditor_ars(selector, "");
                        }

                        //Get data of pageCategories by language
                        var pageCategoriesArray = [];
                        $('#tile-information-container-' + langID).find('.page-categories-container').find('input[type="checkbox"]').each(function () {
                            var isChecked = ($(this).prop('checked')) ? true : false;

                            if (isChecked) {
                                var pageCategoryId = $(this).val();
                                pageCategoriesArray.push(pageCategoryId);
                            }
                        });

                        //Set pageCategories of language in hidden input
                        $('input[name="page-category-listing-' + langID + '"]').val(pageCategoriesArray.join());

                    });


                    //verify Body 
                    var canContinue = true;
                    var message = '';
                    $('#page-conf-form ul.tabs li a').each(function () {
                        var langID = $(this).attr('data-language-id');
                        if (langID !== undefined && langID !== null) {
                            //body
                            var selector = 'body-' + langID;
                            var value = $('textarea[name="' + selector + '"]').val();
                            var result = validateHtml(value);
                            if (result.valid === false) {
                                canContinue = false;
                                message = result.message;
                                return false;
                            }

                            if (canContinue === true) {
                                //
                                selector = 'result-text-' + langID;
                                value = $('textarea[name="' + selector + '"]').val();
                                result = validateHtml(value);
                                if (result.valid === false) {
                                    canContinue = false;
                                    message = result.message;
                                    return false;
                                }

                                if (canContinue === true) {
                                    selector = 'page-summary-' + langID;
                                    value = $('textarea[name="' + selector + '"]').val();
                                    result = validateHtml(value);
                                    if (result.valid === false) {
                                        canContinue = false;
                                        message = result.message;
                                        return false;
                                    }
                                }

                            }
                        }
                    });

                    if (canContinue === false) {

                        Swal.fire({
                            title: "Error",
                            icon: "error",
                            text: message,
                            confirmButtonText: "Ok",
                        });

                        return false;

                    }

                    var formData = $("#page-conf-form").serializeObject();


                    if ($('#page-advanced-settings .filter_rules .rule').length > 0) {
                        var ruleList = [];
                        var filterRules = {
                            criteria: $('#page-advanced-settings input[name="advanced-criteria-input"]').val(),
                            filters: []
                        }
                        $('#page-advanced-settings .filter_rules .rule').each(function (index) {
                            var rule = $(this);
                            var field = rule.data('field');
                            var operator = rule.data('operator');
                            var ruleValue = rule.data('value');
                            var typeField = rule.data('type-field');
                            var friendlyField = rule.find('.field_rule').first().text();
                            ruleList.push({
                                fieldId: index + 1,
                                field: field,
                                typeField: typeField,
                                operator: operator,
                                comparisonValue: ruleValue,
                                friendlyFieldName: friendlyField,
                            });
                        });
                        filterRules.filters = ruleList;
                        formData['session-variables-settings'] = JSON.stringify(filterRules);
                    } else {
                        formData['session-variables-settings'] = null;
                    }

                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/AddOrUpdatePage",
                        data: formData,
                        beforeSend: function () {
                            $('#page-conf').find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);
                        if (jsonResult.status.toString() === "200") {
                            $('#page-conf').find('input[name="page_conf_changes"]').val("true");
                            //Close modal and update page list
                            $('#page-conf').foundation('close');

                            var urlSaved = jsonResult.pageUrl.toString();
                            var oldUrl = jsonResult.OldpageUrl.toString();
                            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
                            var isSuccessForLlamaPi = jsonResult.isSuccessLlamaPiArs;

                            Swal.fire({
                                title: "",

                                html: jsonResult.message,
                                icon: "success",
                                showCancelButton: false,
                                confirmButtonText: "Ok",
                                cancelButtonText: "No, Thanks",
                                closeOnConfirm: true,
                                closeOnCancel: true,

                            }).then(function (result) {
                                if (result.isConfirmed) {
                                    if ($("#page-conf-form input[name='create_page_from_menu']").val() == "true") {
                                        //Loading page list in dropdow of menu item modal.
                                        $('#menu-item-configuration-backend').find('select[name="page_id"]').empty();
                                        var newPageUrl = jsonResult.pageUrl.toString();
                                        Swal.close();
                                        $.ajax({
                                            method: "POST",
                                            url: urlSite + "admin/GetPages",
                                            data: "",
                                            beforeSend: function () {
                                                $('#page-conf').find('.processing_screen').show();
                                            }
                                        }).done(function (data) {
                                            var jsonResult = JSON.parse(data);


                                            jsonResult.forEach(function (item) {
                                                var textOption;
                                                if (item.Enabled.toString() == "true") {
                                                    textOption = item.SystemName.toString();
                                                } else {
                                                    textOption = item.SystemName.toString() + " (" + window.translation.disabled + ")";
                                                }
                                                var pageOption = '<option data-page-id="' + item.ID.toString() + '" value="' + item.FriendlyUrl.toString() + '">' + textOption + '</option>';
                                                $("select[name='page_id']").append(pageOption);
                                            });
                                            var firstOption = '<option data-page-id="" value="">' + window.translation.please_select_page + '</option>';
                                            $("select[name='page_id']").prepend(firstOption);

                                            $("select[name='page_id']").val(newPageUrl);
                                            $("input[name='target_path']").val("/" + newPageUrl);
                                            $("input[name='target_path_value']").val("/" + newPageUrl);
                                            $("input[name='target_path']").attr("readonly", "readonly");
                                            var menu_item_page_id = "";
                                            $("select[name='page_id']").find('option').each(function () {
                                                if ($(this).val() == newPageUrl) {
                                                    menu_item_page_id = $(this).attr("data-page-id");
                                                }
                                            });
                                            $('input[name="menu-item-page-id"]').val(menu_item_page_id);
                                            $('#page-conf').find('.processing_screen').hide();
                                        });

                                    } else if (isSuccessForLlamaPi !== null && isSuccessForLlamaPi !== undefined && isSuccessForLlamaPi === 'true') {
                                        $('#vol-workflow-form').find('input[name="ars-llamasite-url-success"]').val(urlSaved);
                                        $("#main-content-backend").foundation('close');
                                        Swal.close();

                                    } else {
                                        $("#main-content-backend").foundation('close');
                                        Swal.close();
                                        if ($("#page-conf-form input[name='create_page_from_ars']").val() != "true" && urlSaved != 'parental-consent-terms') {
                                            window.location.href = urlSite + urlSaved;
                                        }
                                        if (urlSaved != oldUrl) {
                                            window.location.href = urlSite + urlSaved;
                                        }
                                    }

                                }
                            });

                        }
                        else if (jsonResult.status.toString() === "500") {
                            Swal.fire({
                                title: "",
                                icon: "error",
                                text: jsonResult.message,
                                confirmButtonText: "Ok"
                            });
                        }

                        //Hide processing screen
                        $('#page-conf').find('.processing_screen').hide();
                        return false;
                    });
                    return false;
                } else {
                    Swal.fire({
                        title: "",
                        icon: "warning",
                        text: "Please enter all required fields.",
                        confirmButtonText: "Ok"
                    });
                    //$.growl.error({ message: "Please enter all required fields." });
                    return false;
                }

            } else {
                return false;
            }
            
        });

        $(document).on("click", "#page-conf-form a.delete", function () {
            var modalObj = $(this).parents('.reveal');
            var cont = 0;
            var pagesId = {};

            $(this).parents('.reveal').find('.tabs-content input[name*="page_id-"]').each(function () {
                pagesId['page_id-' + cont] = $(this).val();
                cont++;
            });

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_page,
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true

            }).then(function (result) {
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/DeletePage",
                    data: pagesId,
                    beforeSend: function () {
                        $('#page-conf').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult.status.toString() === "500") {
                        Swal.fire({
                            title: "Error",
                            icon: "error",
                            text: jsonResult.message,
                            confirmButtonText: "Ok"
                        });
                    }
                    else if (jsonResult.status.toString() === "200") {
                        if ($('#main-content-backend').css('display') === 'block') {
                            page_list_load();
                        }
                        else {
                            window.location.replace(urlSite);
                        }
                    }

                    $('#page-conf').find('input[name="page_conf_changes"]').val("true");

                    modalObj.foundation('close');

                    //Hide processing screen
                    $('#page-conf').find('.processing_screen').show();

                    return false;
                });

            });

        });
    }
}

/**

	Internal Methods

**/

function append_menu_item_datatable(objectTable, items, weigth, level, menuID) {

    var itemRow = '';

    items.forEach(function (item) {
        var isParent = (item.childrens.length > 0) ? true : false;
        var menuTitle = item.titles[0].Value;
        var path = (item.url.length > 40) ? item.url.substring(0, 40) + '...' : item.url;
        var visibleTo = item.visibilityText.toLowerCase();
        var enabled = item.enabled;
        var computedClasses = (isParent) ? 'parent ' : '';
        var levelChild = level + 1;
        var menuItemId = item.ID;
        var weigth = parseInt($("input#menu-item-table-weight").val());

        if (level > 0) {
            computedClasses = computedClasses + 'child child' + level;

            if (!isParent) {
                computedClasses = computedClasses + ' no-parent' + level;
            }
        }

        itemRow = '<tr>' +
            '<td>' + weigth + '</td>' +
            '<td class="' + computedClasses + '"><a data-element-reveal="menu-item-configuration-backend" data-menu-id="' + menuID + '" data-menu-item-id="' + menuItemId + '" class="blue-key" data-level="' + levelChild + '">' + menuTitle + '</a></td>' +
            '<td> ' + path + '</td><td>' + window.translation[visibleTo + '_users'] + '</td><td>' + window.translation[enabled + '_text'] + '</td>' +
            '<input id="id_menu" name="id_menu" type="hidden" value="' + item.ID + '"/>' +
            '<input id="parent_id" name="parent_id" type="hidden" value="' + item.parentItemId + '"/>' +
            '<input id="childrens_menu" name="childrens_menu" type="hidden" value="' + item.childrens.length + '"/>' +
            '</tr>';

        $("input#menu-item-table-weight").val(weigth + 1);

        objectTable.append(itemRow);

        //Recursive method to continue adding childs
        if (isParent) {
            append_menu_item_datatable(objectTable, item.childrens, weigth, levelChild, menuID);
        }
    });

    //Add properties to link 'New menu item'
    objectTable.parents('.reveal').find('a.create-menu-item').attr({ 'data-menu-id': menuID, 'data-menu-item-id': '0', 'data-level': '1' });
}

function apply_cropper_event(elementID, element) {
    if (elementID != null && element != null) {
        var src = element.attr("src");

        var img_element = '<img id="imageToCrop_' + elementID + '" src="' + src + '" class="image-to-crop" alt="crop image">';
        $("#crop-image .modal-body").html(img_element);
        var $toCrop = $('#imageToCrop_' + elementID);

        var minContainerWidth = 800;
        var minContainerHeight = 600;
        var w = window.innerWidth;
        var h = window.innerHeight;

        if (w <= 1024) {
            minContainerWidth = (w / 2) * 0.9;
            minContainerHeight = 400;
        }
        if (w <= 600) {
            minContainerWidth = (w) * 0.9;
            minContainerHeight = 300;
        }
        var $dataHeight = $('#dataHeight');
        var $dataWidth = $('#dataWidth');
        $toCrop.cropper({
            minContainerWidth: minContainerWidth,
            minContainerHeight: minContainerHeight,
            checkImageOrigin: false,
            aspectRatio: 4 / 3,
            modal: true,
            build: function (e) {
                var $clone = $(this).clone();
            },
            crop: function (e) {
                var imageData = $(this).cropper('getImageData');
                var previewAspectRatio = e.width / e.height;
                $dataHeight.text(Math.round(e.height));
                $dataWidth.text(Math.round(e.width));

            },
        });

        // Methods
        $('.controls').on('click', '[data-method]', function () {
            var $this = $(this);
            if ($(this).hasClass("active")) {
                $(".btn-group button").removeClass("active");
            } else {
                $(".btn-group button").removeClass("active");
                $(this).addClass("active");

            }
            var data = $this.data();
            var $target;
            var result;

            if ($this.prop('disabled') || $this.hasClass('disabled')) {
                return;
            }

            if ($toCrop.data('cropper') && data.method) {
                data = $.extend({}, data); // Clone a new one

                if (typeof data.target !== 'undefined') {
                    $target = $(data.target);

                    if (typeof data.option === 'undefined') {
                        try {
                            data.option = JSON.parse($target.val());
                        } catch (e) {
                            console.log(e.message);
                        }
                    }
                }

                result = $toCrop.cropper(data.method, data.option, data.secondOption);

                switch (data.method) {
                    case 'scaleX':
                    case 'scaleY':
                        $(this).data('option', -data.option);
                        break;
                }

                if ($.isPlainObject(result) && $target) {
                    try {
                        $target.val(JSON.stringify(result));
                    } catch (e) {
                        console.log(e.message);
                    }
                }

            }
        });

        $(".crop-button").on("click", function () {
            var theCanvas = $toCrop.cropper('getCroppedCanvas');
            var canvasDataURL = theCanvas.toDataURL('image/png');

            $("#cropped_" + elementID).val("true")
            $("#" + elementID).parent().find("img").attr("src", canvasDataURL);
            $("#cropped_data_" + elementID).val(canvasDataURL);
            $("#crop-image").foundation("close");
        });

    }
}

function datatable_destory_by_id(tableId) {
    if ($.fn.dataTable.isDataTable($('#' + tableId))) {
        $('#' + tableId).DataTable().destroy();
    }
}

function datatable_initialize_notAjax_with_params(objectTable, language, params, orderDragDrop, searching, paging) {
    if ($.fn.dataTable.isDataTable(objectTable)) {
        objectTable.DataTable().destroy();
    }

    var columnSort = objectTable.data('column-sort');
    var columnHidden = (objectTable.data('columns-hidden')) ? objectTable.data('columns-hidden').toString().split(',') : null;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var defaultParams = {
        'scrollCollapse': true,
        'bSort': orderDragDrop,
        'bFilter': false,
        'bLengthChange': false,
        'language': language,
        'rowReorder': orderDragDrop,
        'searching': searching,
    };

    if (columnSort) {
        defaultParams['order'] = [[parseInt(columnSort), "asc"]];
    }
    if (paging) {
        var items = objectTable.find('tbody tr');

        //Add padding only when exists more of 15 items
        if (items.length > 15) {
            defaultParams['paging'] = paging;
            defaultParams['pageLength'] = 15;
        }
        else {
            defaultParams['paging'] = false;
        }
    }
    else {
        defaultParams['paging'] = false;
    }
    if (columnHidden) {
        var columnsHidden = [];

        columnHidden.forEach(function (column) {
            columnsHidden.push({ "targets": [parseInt(column)], "visible": false });
        });

        defaultParams['columnDefs'] = columnsHidden;
    }

    if (params != null) {
        defaultParams = merge_objects(defaultParams, params);
    }

    var table = objectTable.DataTable(defaultParams);

    //Event drag&drop
    if (orderDragDrop) {
        if ($._data($("#menu-item-table")[0], "events")['row-reordered']) {
            $('#menu-item-table').unbind('row-reordered');
        }
        table.on('row-reordered', function (e, diff, edit) {
            var objectUpdate = {};
            objectUpdate['items'] = [];

            var idCurrentRow = $(table.row(edit.triggerRow).node()).find('input[name="id_menu"]').val();

            for (var i = 0, ien = diff.length; i < ien; i++) {
                var idRow = $(table.row(diff[i].node).node()).find('input[name="id_menu"]').val();
                var currentParent = $(table.row(diff[i].node).node()).find('input[name="parent_id"]').val();
                var newParent = 0;
                var idRowPrevious = $(table.row(diff[i].node).node()).prev().find('input[name="id_menu"]').val();
                var parentRowPrevious = $(table.row(diff[i].node).node()).prev().find('input[name="parent_id"]').val();
                var previousHasChild = (parseInt($(table.row(diff[i].node).node()).prev().find('input[name="childrens_menu"]').val()) > 0) ? true : false;
                var currentWeight = $(table.row(diff[i].node).node()).find('td:nth-child(1)').html();
                var menuBlockId = $('#menu-item-edit-backend').find('input[name="block_id"]').val();
                var menuId = $('#menu-item-edit-backend').find('a.create-menu-item').data('menu-id');
                var rowData = {};

                if (idCurrentRow === idRow) {
                    if (previousHasChild === true) { //Assign to item new parent
                        if (parentRowPrevious) {
                            newParent = idRowPrevious;
                        }
                        else {
                            newParent = "0";
                        }
                    }
                    else {
                        if (parentRowPrevious) {
                            newParent = parentRowPrevious;
                        }
                        else {
                            newParent = "0";
                        }
                    }

                    rowData['changeParent'] = true;
                }
                else {
                    rowData['changeParent'] = false;
                }

                rowData['ID'] = idRow;
                rowData['weight'] = parseInt(currentWeight);
                rowData['parentItemId'] = (newParent != currentParent) ? parseInt(newParent) : currentParent;

                if (rowData['parentItemId'].toString() !== rowData['ID'].toString()) {
                    objectUpdate['items'].push(rowData);
                }
                else {
                    Swal.fire({
                        title: window.translation.ilegal_move_detected,
                        icon: "error",
                        text: window.translation.error_moving_menu_item,
                        confirmButtonText: "Ok"
                    });
                }
            }

            objectUpdate['length'] = objectUpdate['items'].length;

            //Update menu items
            if (objectUpdate['items'].length > 0) {

                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/UpdateMenuItemWeight",
                    data: objectUpdate,
                    beforeSend: function () {
                        $('#menu-item-edit-backend').find('.processing_screen').show();

                        datatable_destory_by_id('menu-item-table');
                        $('#menu-item-table tbody').empty();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult) {
                        if (jsonResult.status === 200) {
                            linkObjectParent = $('a.menu-item.edit-component.menu-item[data-menu-id="' + menuId + '"]');

                            populate_menu_edit_settings(linkObjectParent, false);
                        }
                    }

                    $('#menu-item-edit-backend').find('.processing_screen').hide();
                });
            }
        });
    }

    //  Fixes in Search box
    if (searching) {
        var objectId = objectTable.attr('id');
        var searchbox = $('#' + objectId + '_filter label input');
        searchbox.attr('placeholder', 'Search');
    }
}

function delete_file_browser(name) {

    Swal.fire({
        title: window.translation.are_you_sure,
        text: "Are you sure that you want delete this file? If you delete this file and it is used in some content, therefore it will appear broke where it is included",
        icon: "warning",
        showCancelButton: true,
        confirmButtonColor: "#ff0000",
        confirmButtonText: window.translation.yes_delete_it,
        cancelButtonText: window.translation.cancel,
        closeOnConfirm: true

    }).then(function (result) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $.ajax({
            type: "GET",
            url: urlSite + "delete-file-browser/" + name,
            cache: false,
            timeout: 300000,
        }).done(function (data) {
            if (data === true) {
                Swal.fire({
                    title: "",
                    icon: "success",
                    text: "Delete file Successful.",
                    confirmButtonText: "Ok"
                });
            }
            else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: "Error when delete file.",
                    confirmButtonText: "Ok"
                });
            }

            location.reload();
        });

    });

}

function get_information_menu_item_by_id(menuItemId, items) {
    var itemFound;

    items.some(function (item) {
        if (menuItemId === item.ID) {
            itemFound = item;

            return true;
        }
        else {
            if (item.childrens.length > 0) {
                itemChild = get_information_menu_item_by_id(menuItemId, item.childrens);

                if (itemChild) {
                    itemFound = itemChild;
                    return true;
                }
            }
        }
    });

    return itemFound;
}

function get_items_with_level(currentLevel, items) {
    var itemsToReturn = [];

    items.forEach(function (item) {
        var textItem = Array(currentLevel + 1).join('-');
        textItem = textItem + ' ' + item.titles[0].Value;

        itemsToReturn.push({ text: textItem, value: item.ID, url: item.url });

        if (item.childrens.length > 0) {
            itemsChild = get_items_with_level((currentLevel + 1), item.childrens);

            if (itemsChild.length > 0) {
                itemsToReturn = itemsToReturn.concat(itemsChild);
            }
        }
    });

    return itemsToReturn;
}

function hideVisibleOptions(uniqueRegion, selector) {
    if (uniqueRegion) {
        var toHide = $(selector).find('.visible-to').parents('.row').slice(0, 2);
        toHide.each(function () {
            $(this).hide();
        });
    }
    else {
        var toDisplay = $(selector).find('.visible-to').parents('.row').slice(0, 2);
        toDisplay.each(function () {
            $(this).show();
        });
    }
}

function initialize_block_image() {
    if (!is_backend_page()) return;
    $('body.backend-page input[type="file"]').each(function () {
        var selector = $(this);
        var id = $(this).attr("id");
        var lang_id = $(this).attr("data-language-id");
        var parent = $(this).parent();
        var item_num = $(this).attr("data-item-num");
        if (item_num === null)
            item_num = 0;

        if (parent.hasClass("ezdz-dropzone")) {
            $(this).ezdz("destroy");
            $(this).parent().parent().find(".delete_image").remove();
            $(this).parent().parent().find(".edit_image").remove();
        }

        var type = $(this).attr('data-filetype');
        var mimeTypes = $(this).attr('accept');
        var textCustom = (type == 'image') ? translation.add_picture_drop_picture : translation.add_file_drop_file;

        selector.ezdz({
            text: textCustom,
            previewImage: true,
            validators: {
                maxSize: 3145728,
            },
            enter: function () {
                if (selector.parent().hasClass('ezdz-reject')) {
                    selector.parent().removeClass('ezdz-reject');
                }
            },
            accept: function (file) {
                //Get width and height of image loaded
                var id = selector.attr('id');
                var parent = selector.parent(".ezdz-dropzone");

                var delete_image_link = '<a data-image="' + id + '" class="delete_image">' + window.translation.delete + '</a>';
                var edit_image_link = '<a data-image="' + id + '" class="edit_image edit_image_' + id + '">' + window.translation.edit + '</a>';

                // Put link below image preview.
                if (parent.parent().find('.delete_image').length == 0) {
                    parent.parent().find(".remove_image").append(delete_image_link);
                    parent.parent().find(".remove_image").removeClass("is-hidden");
                }

                if (parent.find("img").length > 0) {
                    var tabSelector = "#image-block-" + lang_id + " .ezdz-dropzone img";
                    if ($(tabSelector).length > 0) {
                        $(tabSelector).attr("id", "image-block-preview-lang-" + lang_id);
                    }

                    tabSelector = "#corporate-image-" + lang_id + " .ezdz-dropzone img";
                    if ($(tabSelector).length > 0) {
                        $(tabSelector).attr("id", "corporate-image-preview-lang-" + lang_id);
                    }

                    if (item_num !== null && item_num > 0) {
                        tabSelector = ".slide_" + item_num + "_item_" + lang_id + " .ezdz-dropzone img";
                        if ($(tabSelector).length > 0) {
                            $(tabSelector).attr("id", "slider-image-preview-lang-" + item_num + "-item-" + lang_id);
                        }

                        tabSelector = ".slide-item-" + item_num + " .ezdz-dropzone img";
                        if ($(tabSelector).length > 0) {
                            $(tabSelector).attr("id", "sponsor-image-preview-" + item_num);
                        }
                    }

                    //Update deleted hidden to true
                    parent.parent().find('input[name="' + id + '_deleted"]').val('false');

                    parent.parent().find('.edit_image_' + id).remove();
                    parent.parent().find(".remove_image").append(edit_image_link);
                    $('.edit_image_' + id).on('click', function () {
                        apply_cropper_event(id, parent.find("img").clone());
                        $("#crop-image").foundation("open");
                    });
                }
            },
            reject: function (file, errors) {

                if (errors.mimeType) {
                    Swal.fire({
                        title: "Error",
                        icon: "error",
                        text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok"
                    });
                }


                if (errors.maxSize) {
                    Swal.fire({
                        title: "Error",
                        icon: "error",
                        text: translation.max_size,
                        confirmButtonText: "Ok"
                    });
                }
            }
        });


    });
}

/*function initiate_jquery_validate_reveal(formToValidate, idForm) {

    let formValidate = formToValidate.validate();
    if (formValidate !== null && formValidate !== undefined) {
        formValidate.resetForm();
    }


    jQuery.validator.addMethod("noSpaces", function (value, element) {
        return $.trim(value).length > 0;
    }, window.translation.field_required);

    var objValidate = {
        rules: {
        },
        messages: {
        }
    };
    //Push all inputs to objValidate
    formToValidate.find("input, select, textarea").each(function (item) {
        if ($(this).attr("data-required") === "true") {

            var name = $(this).attr("name");
            var type = $(this).attr("data-type");
            var equalTo = $(this).attr("data-equal-to");
            var labelName = $(this).parents(".row").first().find('label').first().text();
            var messageRequired = (labelName.length > 25) ? window.translation.field_required : labelName + ' ' + window.translation.is_required;

            objValidate.rules[name] = "noSpaces";
            objValidate.messages[name] = messageRequired;
            if (type) {
                if (type === 'email' || type === 'date') {
                    objValidate.rules[name] = {
                        "required": true
                    }
                    objValidate.messages[name] = {
                        "required": messageRequired
                    }
                    objValidate.rules[name][type] = true;

                    if (type === 'email') {
                        objValidate.messages[name][type] = translation.please_complete_valid_email;
                    }
                    else {
                        objValidate.messages[name][type] = translation.please_complete_valid_date;
                    }
                }
            }
            if ($(this).attr("data-val-range-specific") === "true") {
                rules["rangeorspecific"] = true;
                messages["rangeorspecific"] = window.translation.currency_format_message + " 16 " + window.translation.or_word + " 50-65";
            }
            if (equalTo) {
                var labelFieldEqual = $("#" + equalTo).parent().parent().find('label').first().text();

                if ($(this).attr('type') === 'password') {
                    var pwmsg = translation.password_form_error_msg;
                    objValidate.rules[name] = {
                        "required": true,
                        "equalTo": "#" + equalTo,
                        "regex": /^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&-_+=])[A-Za-z\d$@$!%*#?&]{10,}$/
                    }

                    objValidate.messages[name] = {
                        "required": messageRequired,
                        "equalTo": translation.field_must_be_equal + " " + labelFieldEqual,
                        "regex": pwmsg
                    }
                } else {
                    objValidate.rules[name] = {
                        "required": true,
                        "equalTo": "#" + equalTo
                    }

                    objValidate.messages[name] = {
                        "required": messageRequired,
                        "equalTo": translation.field_must_be_equal + " " + labelFieldEqual
                    }
                }
            }
            if ($(this).hasClass('regex_url')) {
                var pwmsg = translation.characters_not_allowed + ': " < > # % { } | \ ^ ~ [ ] `';
                objValidate.rules[name] = {
                    "required": true,
                    "regex": /^[^"#%|\\^~`<>\{\}\[\]]+$/
                }

                objValidate.messages[name] = {
                    "regex": pwmsg,
                    "required": messageRequired
                }
            }
        }
    });

    //On change event to checkbox, radios and multiselect
    var selector = 'form#' + idForm + ' input[type="checkbox"][data-required="true"], form#' + idForm + ' input[type="radio"][data-required="true"], form#' + idForm + ' select[multiple="multiple"][data-required="true"]';

    $(document).on('change', selector, function () {
        if ($(this).val()) {
            if ($(this).parents(".row").first().find('label.error-custom').length) {
                $(this).parents(".row").first().find('label.error-custom').parent().remove();
            }
        }
    });

    formToValidate.validate(objValidate);
    
}*/

function load_ckeditor_wysiwyg() {
    if (!is_backend_page()) return;
    if ($('#block-wysiwyg-form').length > 0) {
        $("#block-wysiwyg-form textarea.wysiwygtextarea").each(function () {
            var bodyId = $(this).attr("id");
            if ($("#" + bodyId).length > 0) {
                if ($("#cke_" + bodyId).length == 0) {
                    initialize_ckeditor_ars(bodyId, "");
                }
            }
        });
    }
}

function load_menus_page() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $.ajax({
        method: "POST",
        url: urlSite + "admin/getAllEnabledMenus",
        data: null,
        beforeSend: function () {
            $('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        $('.processing_screen').hide();
        if (jsonResult.length > 0) {
            for (var i = 0; i < jsonResult.length; i++) {
                var option = '<option value=' + jsonResult[i].ID + ' blockId=' + jsonResult[i].BlockID + '>' + jsonResult[i].SystemName + '</option>';
                $("#page-conf-form select[name='menu_id']").append(option);
            }
        }
        return false;
    });

    //Event to change Friendly URL by menu item event. 
    $("#page-conf-form select[name='menu_id']").on("change", function () {
        var menuId = $(this).val();

        if (menuId != "none") {
            var blockId = $(this).find("option[value=" + menuId + "]").attr("blockid");

            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetMenuItems",
                data: { menuBlockId: menuId, blockId: blockId },
                beforeSend: function () {
                    $('#page-conf').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status === "200") {
                    $('#page-conf-form').find('select[name="menuitem_id"]').empty();
                    $("#page-conf-form select[name='menuitem_id']").append('<option value="none">' + window.translation.none_menu_item + '</option>');
                    var itemsWithLevel = get_items_with_level(1, jsonResult.items);
                    itemsWithLevel.forEach(function (item) {
                        $('#page-conf-form').find('select[name="menuitem_id"]').append('<option value="' + item.value + '" data-url="' + item.url + '">' + item.text + '</option>');
                    });
                }

                $('#page-conf').find('.processing_screen').hide();
            });

        } else {
            $("#page-conf-form select[name='menuitem_id']").empty();
            $("#page-conf-form select[name='menuitem_id']").append('<option value="none">' + window.translation.none_menu_item + '</option>');
            $("#page-conf-form input[name='friendly-url']").removeAttr('readonly');
        }

    });
    $("#page-conf-form select[name='menuitem_id']").on("change", function () {
        var menuitemId = $(this).val();
        if (menuitemId != "none") {
            var url_menu = $(this).find("option[value=" + menuitemId + "]").attr("data-url");
            $("#page-conf-form input[name='friendly-url']").val(url_menu);
            $("#page-conf-form input[name='friendly-url']").attr('readonly', '');
        } else {
            $("#page-conf-form input[name='friendly-url']").removeAttr('readonly');
        }
    });
}

function load_meta_tags_page(lang_id, property, content, modal) {
    var meta = '<div><div class="row metatag-item">' +
        '<div class="large-5 medium-5 small-12 columns">' +
        '<div class="row">' +
        '<div class="small-12 medium-4 columns">' +
        '<label class="text-left middle">' + window.translation.property + ': </label>' +
        '</div>' +
        '<div class="small-12 medium-8 columns input">' +
        '<select class="og_property_item_' + lang_id + '_' + property + ' og_property_item" name="selectbox" disabled="" data-property="' + property + '">' +
        '<option value="url">og:url</option>' +
        '<option value="title">og:title</option>' +
        '<option value="description" >og:description</option>' +
        '<option value="site_name">og:site_name</option>' +
        '<option value="image">og:image</option>' +
        '<option value="keywords">keywords</option>' +
        '<option value="htmlTitle">HTML title</option>' +
        '<option value="meta_description">meta:description</option>' +
        '<option value="meta_key_google">meta:google key</option>' +
        '<option value="meta_value_google">meta:google value</option>' +
        '</select>' +
        '</div>' +
        '</div>' +
        '</div>' +
        '<div class="large-5 medium-5 small-12 columns">' +
        '<div class="row">' +
        '<div class="small-12 medium-3 columns">' +
        '<label class="text-left middle">' + window.translation.content + ':</label>' +
        '</div>' +
        '<div class="small-12 medium-9 columns">' +
        '<input id="og_content_item_' + lang_id + '_' + property + '" class="og_content_item_' + lang_id + ' og_content_item" type="text" name="og_content_item_' + lang_id + '_' + property + '" value="' + content + '" readonly="">' +
        '</div>' +
        '</div>' +
        '</div>' +
        '<div class="large-2 medium-2 small-12 columns">' +
        '<div class="row">' +
        '<div class="medium-3 columns">' +
        '<a class="edit"></a>' +
        '</div>' +
        '<div class="medium-3 columns">' +
        '<a class="delete"></a>' +
        '</div>' +
        '</div>' +
        '</div>' +
        '</div></div>';

    var object = $(meta);
    object.find('option').removeAttr("selected");
    object.find('option[value="' + property + '"]').attr('selected', 'selected');
    $('.metatag_items_' + lang_id).append(object.html());
    $('#og_content_' + lang_id).val('');
}

function load_slider_items(lang_id, data, formSelector) {
    var cant_slides = $(".slides_" + lang_id + " .slide-item").length;
    if (data.HtmlTitleImage == null || data.HtmlTitleImage == undefined)
        data.HtmlTitleImage = '';
    var recommendedSection = retrieve_recommended_size_section(window.translation.recommended_size);
    var item = cant_slides + 1;
    var obj = '<div class="row slide-item slide_' + item + '_item_' + lang_id + '" data-slide-id="null" data-operation="add">'
        + '<div class="large-5 small-12 columns">'
        + '<input type="file" title="' + window.translation.choose_a_file + '" alt="' + window.translation.choose_a_file + '" data-item-num="' + item + '" id="slide_' + item + '_' + lang_id + '" name="slide_' + item + '_' + lang_id + '" data-filetype="image" data-keys="slide_' + item + '_' + lang_id + '" data-language-id="' + lang_id + '" class="form-control slide_image" accept="image/png, image/jpeg, image/gif">'
        + '<input class="image-source-field" name="image_slide_' + item + '_url_' + lang_id + '" id="image_slide_' + item + '_url_' + lang_id + '" type="hidden" value="false" />'
        + '<input name="cropped_slide_' + item + '_' + lang_id + '" id="cropped_slide_' + item + '_' + lang_id + '" type="hidden" value="false" />'
        + '<input name="cropped_data_slide_' + item + '_' + lang_id + '" id="cropped_data_slide_' + item + '_' + lang_id + '" type="hidden" />'
        + '<p class="help-text space-top" style="margin-top: -5px; padding-top: 0px">'
        + '<a href="#" class="browse-img-slider-' + lang_id + '-' + item + '" data-language-id="' + lang_id + '" data-item-num="' + item + '">' + window.translation.browse + '</a>'
        + '<span class="remove_image"></span></p>'
        + recommendedSection
        + '</div>'
        + '<div class="large-7 small-12 columns">'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.title + ': </label>'
        + '<input id="title_slide_' + item + '_' + lang_id + '" name="title_slide_' + item + '_' + lang_id + '" type="text" value="' + data.ImageTitle + '"/>'
        + '<input id="image_slider_' + item + '_id_' + lang_id + '" name="image_slider_' + item + '_id_' + lang_id + '" class="change_image" type="hidden" value="' + data.ImageID + '" />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-9 columns">'
        + '<label class="required" style="text-align: left;">' + window.translation.region_setting_title_color + ': </label>'
        + '<input class="color-picker-box-field" id="title_color_' + item + '_' + lang_id + '" name="title_color_' + item + '_' + lang_id + '"  type="text"  value="' + (data.ColorTitle !== null && data.ColorTitle !== undefined ? data.ColorTitle : "") + '" />'
        + '</div>'
        + '<div class="small-3 columns">'
        + '<label class="required">' + window.translation.size + ': </label>'
        + '<input id="title_size_' + item + '_' + lang_id + '" name="title_size_' + item + '_' + lang_id + '" type="number"  value="' + data.SizeTitle + '" />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-9 columns">'
        + '<label class="required">HTML alt: </label>'
        + '<input id="alt_slide_image_' + item + '_' + lang_id + '" name="alt_slide_image_' + item + '_' + lang_id + '" type="text" value="' + data.ImageAlt + '" />'
        + '</div>'
        + '<div class="small-3 columns">'
        + '<label class="required">' + window.translation.weight + ': </label>'
        + '<input id="weight_slide_' + item + '_' + lang_id + '" name="weight_slide_' + item + '_' + lang_id + '" type="number" value=' + parseInt(data.Weight) + ' />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">HTML title: </label>'
        + '<input id="html_title_slide_image_' + item + '_' + lang_id + '" name="html_title_slide_image_' + item + '_' + lang_id + '" type="text" value="' + data.HtmlTitleImage + '" />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.type_of_link + ': </label>'
        + '<select name="link_type_slide_' + item + '_' + lang_id + '" class="link-type-field-form" data-language-id="' + lang_id + '" data-item-id="' + item + '">'
        + '<option value="0">' + window.translation.none + '</option>'
        + '<option value="1">' + window.translation.in_image + '</option>'
        + '<option value="2">' + window.translation.in_button + '</option>'
        + '<option value="3">' + window.translation.in_slide + '</option>'
        + '</select>'
        + '</div>'
        + '</div>'
        + '<div class="row open-slide">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.open_in + ': </label>'
        + '<select name="open_slide_' + item + '_' + lang_id + '" class="open-slide" data-language-id="' + lang_id + '" data-item-id="' + item + '">'
        + '<option value="0">' + window.translation.same_window + '</option>'
        + '<option value="1">' + window.translation.new_tab + '</option>'
        + '</select>'
        + '</div>'
        + '</div>'
        + '<div class="row button-section-slide" id="button-section-' + item + '-' + lang_id + '" >'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.button_title + ': </label>'
        + '<input id="link_button_text_' + item + '_' + lang_id + '" name="link_button_text_' + item + '_' + lang_id + '" type="text" value="' + data.ButtonTitle + '" />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.link_to + ': </label>'
        + '<input id="link_slide_' + item + '_' + lang_id + '" name="link_slide_' + item + '_' + lang_id + '"  type="text" value="' + data.RedirectUrl + '" />'
        + '</div>'
        + '</div>'
        + '</div>'
        + '<div class="large-12 small-12 columns">'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label for="slide_summary_' + item + '_' + lang_id + '" class="text-left middle minimal-line">' + window.translation.summary + ':</label>'
        + '<textarea id="slide_summary_' + item + '_' + lang_id + '" class="text-left middle minimal-line" name="slide_summary_' + item + '_' + lang_id + '">' + data.Summary + '</textarea>'
        + '</div>'
        + '<div class="large-12 medium-12 small-12 columns">'
        + '<a class="remove_slide" data-slide="slide_' + item + '_item_' + lang_id + '" data-image-id="' + data.ImageID + '" title="' + window.translation.remove + '">' + window.translation.remove + '</a>'
        + '</div>'
        + '</div>'
        + '</div>'
        + '</div>';
    var object = $(obj);
    $('.slides_' + lang_id).append(object);
    createColorPickerField($("#title_color_" + item + "_" + lang_id), null);
    $('select[name="link_type_slide_' + item + '_' + lang_id + '"]').val(data.LinkType);
    $('select[name="open_slide_' + item + '_' + lang_id + '"]').val(data.OpenIn);
    initialize_block_image();
    if (data.ImageUrl == null || data.ImageUrl == undefined || data.ImageUrl == "") {
        $('input[name="slide_' + item + '_' + lang_id + '"]').ezdz('preview', '');
        //init wysiwyg for slide_summary
        var summaryField = $('textarea[name="slide_summary_' + item + '_' + lang_id + '"]');
        var idSummaryField = $(summaryField).attr("id");
        initialize_ckeditor_ars(idSummaryField, "");

        add_event_for_ckeditor(idSummaryField, formSelector);

    } else {
        setTimeout(function () {
            $('.slides input[name="slide_' + item + '_' + lang_id + '"]').ezdz('preview', data.ImageUrl, function () {
                var selector = $('input[name="slide_' + item + '_' + lang_id + '"]');
                var id = selector.attr('id');
                var delete_image_link = '<a data-image="' + id + '" class="delete_image">' + window.translation.delete + '</a>';
                var edit_image_link = '<a data-slide="' + item + '" class="edit_image edit_image_slide_' + item + '_' + lang_id + '">' + window.translation.edit + '</a>';

                // Put link below image preview.
                // Adding Edit link to allow Crop and resize options.
                //validate when user only close crop
                var parent = selector.parent(".ezdz-dropzone");
                var remove_image = parent.parent().find('.remove_image').first();

                //init wysiwyg for slide_summary
                var summaryField = $('textarea[name="slide_summary_' + item + '_' + lang_id + '"]');
                var idSummaryField = $(summaryField).attr("id");
                initialize_ckeditor_ars(idSummaryField, "");
                add_event_for_ckeditor(idSummaryField, formSelector);

                if (parent.find("img").length > 0) {
                    var tabSelector = ".slide_" + item + "_item_" + lang_id + " .ezdz-dropzone img";
                    if ($(tabSelector).length > 0) {
                        $(tabSelector).attr("id", "slider-image-preview-lang-" + item + "-item-" + lang_id);
                    }
                    parent.parent().find('.edit_image_' + id).remove();
                    parent.parent().find(".remove_image").append(edit_image_link);
                    $('.edit_image_' + id).on('click', function () {
                        apply_cropper_event(id, parent.find("img").clone());
                        $("#crop-image").foundation("open");
                    });
                }

                // Put link below image preview.
                if (remove_image.find('.delete_image').length == 0) {
                    remove_image.append(delete_image_link);
                    remove_image.removeClass("is-hidden");
                }
            });
        }, 100);
    }
    if ($('.browse-img-slider-' + lang_id + '-' + item).length > 0) {
        $('.browse-img-slider-' + lang_id + '-' + item).click(function (e) {
            e.preventDefault();
            var lang = $(this).attr("data-language-id");
            var itemNro = $(this).attr("data-item-num");
            selectFileWithCkFinder("image_slide_" + itemNro + "_url_" + lang, "slider-image-preview-lang-" + itemNro + "-item-" + lang);
            return false;
        });
    }

}

function load_sponsor_item(data) {
    var cant_items = $(".items-sponsors .slide-item").length;
    var recommendedSection = retrieve_recommended_size_section(window.translation.recommended_size);
    var item = cant_items + 1;
    var obj = '<div class="small-12 columns slide-item slide-item-' + item + '" data-slide-id="null" data-operation="add">'
        + '<div class="large-5 small-12 columns">'
        + '<input type="file" data-item-num="' + item + '" title="' + window.translation.choose_a_file + '" alt="' + window.translation.choose_a_file + '" id="sponsor_' + item + '" name="image_' + item + '" data-filetype="image" data-keys="image_' + item + '" class="form-control slide_image" accept="image/png, image/jpeg, image/gif">'
        + '<input class="image-source-field" name="image_url_' + item + '" id="image_url_sponsor_' + item + '" type="hidden" value="false" />'
        + '<input name="cropped_sponsor_' + item + '" id="cropped_sponsor_' + item + '" type="hidden" value="false" />'
        + '<input name="cropped_data_sponsor_' + item + '" id="cropped_data_sponsor_' + item + '" type="hidden" />'
        + '<p class="help-text space-top" style="margin-top: -5px; padding-top: 0px">'
        + '<a href="#" class="browse-img-sponsor-' + item + '" data-item-num="' + item + '">' + window.translation.browse + '</a>'
        + '<span class="remove_image"></span>'
        + '</p>'
        + recommendedSection
        + '</div>'
        + '<div class="large-7 small-12 columns">'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.title + ': </label>'
        + '<input id="title_image_' + item + '" name="title_image_' + item + '" type="text" value="' + data.ImageTitle + '"/>'
        + '<input id="image_id' + item + '" name="image_id' + item + '" class="change_image" type="hidden" value="' + data.ImageID + '" />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-9 columns">'
        + '<label class="required">HTML alt: </label>'
        + '<input id="alt_image_' + item + '" name="alt_image_' + item + '" type="text" value="' + data.ImageAlt + '" />'
        + '</div>'
        + '<div class="small-3 columns">'
        + '<label class="required">' + window.translation.weight + ': </label>'
        + '<input id="weight_image_' + item + '" name="weight_image_' + item + '" type="number" value=' + parseInt(data.Weight) + ' />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.link_to + ': </label>'
        + '<input id="link_image_' + item + '" name="link_image_' + item + '"  type="text" value="' + data.RedirectUrl + '" />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.summary + ': </label>'
        + '<textarea name="summary_image_' + item + '" type="text" value="">' + data.Summary + '</textarea>'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<a class="remove_sponsor" data-slide="slide-item-' + item + '" data-image-id="' + data.ImageID + '" title="' + window.translation.remove + '">' + window.translation.remove + '</a>'
        + '</div>'
        + '</div>'
        + '</div>'
        + '</div>';
    var object = $(obj);
    $('.items-sponsors').append(object);
    $('input[name="count_sponsors"]').val(item);
    initialize_block_image();

    if (data.ImageUrl == "") {
        $('.items-sponsors input[name="image_' + item + '"]').ezdz('preview', '');
    } else {
        setTimeout(function () {
            $('.items-sponsors input[name="image_' + item + '"]').ezdz('preview', data.ImageUrl, function () {
                var delete_image_link = '';
                var edit_image_link = '<a data-slide="' + item + '" class="edit_image edit_image_sponsor_' + item + '">' + window.translation.edit + '</a>';

                // Put link below image preview.
                // Adding Edit link to allow Crop and resize options.
                //validate when user only close crop
                var selector = $('.items-sponsors input[name="image_' + item + '"]');
                var id = selector.attr('id');
                var parent = selector.parent(".ezdz-dropzone");
                var remove_image = parent.parent().find('.remove_image').first();

                if (parent.find('img').length > 0) {
                    var tabSelector = ".slide-item-" + item + " .ezdz-dropzone img";
                    if ($(tabSelector).length > 0) {
                        $(tabSelector).attr("id", "sponsor-image-preview-" + item);
                    }

                    parent.parent().find('.edit_image_' + id).remove();
                    remove_image.append(edit_image_link);

                    $('.items-sponsors .edit_image_' + id).on('click', function () {
                        apply_cropper_event(id, parent.find("img").clone());
                        $("#crop-image").foundation("open");
                    });
                }

                //Include delete link
                selector = $('.items-sponsors #sponsor_' + item);
                delete_image_link = '<a data-image="' + id + '" class="delete_image">' + window.translation.delete + '</a>';

                // Put link below image preview.
                if (remove_image.find('.delete_image').length == 0) {
                    remove_image.append(delete_image_link);
                    remove_image.removeClass("is-hidden");
                }
            });
        }, 100);
    }
    if ($('.browse-img-sponsor-' + item).length > 0) {
        $('.browse-img-sponsor-' + item).click(function (e) {
            e.preventDefault();
            var itemNro = $(this).attr("data-item-num");
            selectFileWithCkFinder("image_url_sponsor_" + itemNro, "sponsor-image-preview-" + itemNro);
            return false;
        });
    }

}

function load_sponsor_item_rollback(data) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var recommendedSection = retrieve_recommended_size_section(window.translation.recommended_size);
    var cant_items = $(".items-sponsors .slide-item").length;
    var item = cant_items + 1;
    var obj = '<div class="small-12 columns slide-item slide-item-' + item + '" data-slide-id="null" data-operation="add">'
        + '<div class="large-5 small-12 columns">'
        + '<input type="file" title="' + window.translation.choose_a_file + '" alt="' + window.translation.choose_a_file + '" id="sponsor_' + item + '" name="image_' + item + '" data-filetype="image" data-keys="image_' + item + '" class="form-control slide_image" accept="image/png, image/jpeg, image/gif">'
        + '<input name="image_url_' + item + '" id="image_url_' + item + '" type="hidden" value="false" />'
        + '<input name="cropped_sponsor_' + item + '" id="cropped_sponsor_' + item + '" type="hidden" value="false" />'
        + '<input name="cropped_data_sponsor_' + item + '" id="cropped_data_sponsor_' + item + '" type="hidden" />'
        + '<p class="help-text space-top" style="margin-top: -5px; padding-top: 0px">'
        + '<a href="' + urlSite + 'file-browser?type=Images&block=image-browse&block_id=sponsor-block-configuration&lang=' + item + '" onclick="window.open(this.href, \'mywin\',\'left=20,top=20,width=800,height=600,toolbar=1,resizable=0\'); return false;" class="browse-img">' + window.translation.browse + '</a>'
        + '<span class="remove_image"></span></p>'
        + recommendedSection
        + '</div>'
        + '<div class="large-7 small-12 columns">'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.title + ': </label>'
        + '<input id="title_image_' + item + '"  name="title_image_' + item + '" type="text" value="' + data.Title + '"/>'
        + '<input id="image_id' + item + '" name="image_id' + item + '" class="change_image" type="hidden" value="' + data.ID + '" />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-9 columns">'
        + '<label class="required">HTML alt: </label>'
        + '<input id="alt_image_' + item + '" name="alt_image_' + item + '" type="text" value="' + data.Alt + '" />'
        + '</div>'
        + '<div class="small-3 columns">'
        + '<label class="required">' + window.translation.weight + ': </label>'
        + '<input id="weight_image_' + item + '" name="weight_image_' + item + '" type="number" value=' + parseInt(data.Weight) + ' />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">HTML title: </label>'
        + '<input id="html_title_image_' + item + '" name="html_title_image_' + item + '" type="text" value="' + data.HtmlTitle + '" />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.link_to + ': </label>'
        + '<input id="link_image_' + item + '" name="link_image_' + item + '"  type="text" value="' + data.Redirect_Url + '" />'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<label class="required">' + window.translation.summary + ': </label>'
        + '<textarea name="summary_image_' + item + '" type="text" value="">' + data.Summary + '</textarea>'
        + '</div>'
        + '</div>'
        + '<div class="row">'
        + '<div class="small-12 columns">'
        + '<a class="remove_sponsor" data-slide="slide-item-' + item + '" data-image-id="' + data.ID + '" title="' + window.translation.remove + '">' + window.translation.remove + '</a>'
        + '</div>'
        + '</div>'
        + '</div>'
        + '</div>';
    var object = $(obj);
    $('.items-sponsors').append(object);
    $('input[name="count_sponsors"]').val(item);
    initialize_block_image();

    if (data.Url == "") {
        $('.items-sponsors input[name="image_' + item + '"]').ezdz('preview', '');
    }
    else {
        setTimeout(function () {
            $('.items-sponsors input[name="image_' + item + '"]').ezdz('preview', data.Url, function () {
                var delete_image_link = '';
                var edit_image_link = '<a data-slide="' + item + '" class="edit_image edit_image_sponsor_' + item + '">' + window.translation.edit + '</a>';

                // Put link below image preview.
                // Adding Edit link to allow Crop and resize options.
                //validate when user only close crop
                var selector = $('.items-sponsors input[name="image_' + item + '"]');
                var id = selector.attr('id');
                var parent = selector.parent(".ezdz-dropzone");
                var remove_image = parent.parent().find('.remove_image').first();

                if (parent.find('img').length > 0) {
                    parent.parent().find('.edit_image_' + id).remove();
                    remove_image.append(edit_image_link);

                    $('.items-sponsors .edit_image_' + id).on('click', function () {
                        apply_cropper_event(id, parent.find("img").clone());
                        $("#crop-image").foundation("open");
                    });
                }

                //Include delete link
                selector = $('.items-sponsors #sponsor_' + item);
                delete_image_link = '<a data-image="' + id + '" class="delete_image">' + window.translation.delete + '</a>';

                // Put link below image preview.
                if (remove_image.find('.delete_image').length == 0) {
                    remove_image.append(delete_image_link);
                    remove_image.removeClass("is-hidden");
                }
            });
        }, 100);
    }
}

function merge_objects(obj1, obj2) {
    var obj3 = {};
    for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; }
    for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; }
    return obj3;
}

function page_list_load() {
    if (!is_backend_page()) return;
    var objectTable = $('#page-table');
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetPages",
        data: {},
        beforeSend: function () {
            $('#page-management .processing_screen').show();

            datatable_destory_by_id('page-table');
            $('#page-table tbody').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        //Assing values
        if (jsonResult.length > 0) {

            $("#page-management table tbody").empty();
            var thereisContenType = false;
            for (var i = 0; i < jsonResult.length; i++) {
                if (jsonResult[i].Categories !== '') {
                    thereisContenType = true;
                }
            }

            if (thereisContenType === false) {
                $("#page-table").find('thead tr').empty();
                $("#page-table").find('thead tr').append('<th>'+ window.translation.actions +'</th >'+
                    '<th class="large-column">' + window.translation.page + '</th > ' +
                    '<th class= "large-column" >' + window.translation.url + '</th >' +
                    '<th>' + window.translation.visible_to + '</th>' +
                    '<th>' + window.translation.enabled + '</th>');
            } else {
                $("#page-table").find('thead tr th.content-type-column').removeClass('hide');
                $("#page-table").find('thead tr').empty();
                $("#page-table").find('thead tr').append('<th>'+ window.translation.actions +'</th >'+
                    '<th class="large-column">' + window.translation.page + '</th>' +
                    '<th class= "large-column" >' + window.translation.url + '</th >' +
                    '<th class="content-type-column">' + window.translation.content_types + '</th>' +
                    '<th>' + window.translation.visible_to + '</th>' +
                    '<th>' + window.translation.enabled + '</th>');
            }



            for (var i = 0; i < jsonResult.length; i++) {
                var visibility = window.translation[jsonResult[i].visibilityText.toLowerCase() + '_users'];
                if (visibility === null || visibility === undefined) {
                    visibility = 'Inherit';
                }
                var info_table = '<tr><td><a element-reveal="page-conf" data-url="' + jsonResult[i].FriendlyUrl + '" data-page-id="' + jsonResult[i].ID + '" class="blue-key">'+ window.translation.edit +'</a> | <a target="_blank" href="/' + jsonResult[i].FriendlyUrl + '">'+ window.translation.view +'</a></td><td class="parent"><a element-reveal="page-conf" data-url="' + jsonResult[i].FriendlyUrl + '" data-page-id="' + jsonResult[i].ID + '" class="blue-key">' + jsonResult[i].PageName + '</a></td><td>/' + jsonResult[i].FriendlyUrl + '</td><td class="content-type-column">' + jsonResult[i].Categories + '</td><td>' + visibility + '</td><td>' + window.translation[jsonResult[i].Enabled + '_text'] + '</td></tr>';
                if (thereisContenType === false) {
                    info_table = '<tr><td><a element-reveal="page-conf" data-url="' + jsonResult[i].FriendlyUrl + '" data-page-id="' + jsonResult[i].ID + '" class="blue-key">'+ window.translation.edit +'</a> | <a target="_blank" href="/' + jsonResult[i].FriendlyUrl + '">'+ window.translation.view +'</a></td><td class="parent"><a element-reveal="page-conf" data-url="' + jsonResult[i].FriendlyUrl + '" data-page-id="' + jsonResult[i].ID + '" class="blue-key">' + jsonResult[i].PageName + '</a></td><td>/' + jsonResult[i].FriendlyUrl + '</td><td>' + visibility + '</td><td>' + window.translation[jsonResult[i].Enabled + '_text'] + '</td></tr>';
                }
                $("#page-management table tbody").append(info_table);
            }
            datatable_initialize_notAjax_with_params(objectTable, null, null, false, true, false);

        } else {
            var empty_page = '<tr class="odd"><td valign="top" colspan="0" class="dataTables_empty">Nothing records found - sorry</td></tr>';
            $("#page-management table tbody").append(empty_page);
        }

        //Hide processing screen
        $('#page-management .processing_screen').hide();
    });
}

function populate_menu_edit_settings(linkObject, open) {
    var menuID = linkObject.data('menu-id');
    var blockID = linkObject.data('block-id');
    var elementReveal = linkObject.data('element-reveal');
    var languageId = parseInt($('#' + elementReveal).data('language-id'));
    var titleMenu = '';
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if (open) {
        $('#' + elementReveal).foundation('open');
    }

    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetMenuItems",
        data: { menuBlockId: menuID, blockId: blockID },
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
            datatable_destory_by_id('menu-item-table');
            $('#menu-item-table tbody').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        var objectTable = $('#menu-item-table');
        var weightItemsMenu = 0;

        if (jsonResult.status === "200") {

            window.menuItemsInfo = jsonResult;

            //Reset form
            $('#' + elementReveal + ' form')[0].reset();

            //Initialize datatable with new rows
            var itemRow = '';
            var objectTableBody = $('#menu-item-table tbody');
            var level = 0;

            //Recreate datatable
            $("input#menu-item-table-weight").val(0);
            append_menu_item_datatable(objectTableBody, jsonResult.items, weightItemsMenu, level, menuID);
            datatable_initialize_notAjax_with_params(objectTable, null, null, true, false, false);

            //Assing hidden of block-id
            $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

            //Assing H3 of modal
            jsonResult.titles.forEach(function (item) {
                if (item.Key !== null) {
                    var key = item.Key.ID;
                    var value = item.Value;

                    if (parseInt(key) === languageId) {
                        titleMenu = value;
                    }

                }
            });

            if (jsonResult.isSharingPortalMenu) {
                titleMenu = (!titleMenu && jsonResult.titles.length > 0) ? jsonResult.titles[0].Value : "Sharing Portal Menu";
                $(".note-sharing-portal-menu").removeAttr("style");
                $(".hide-default-sharing-portal-menu").removeAttr("style");
                $(".button-sharing-portal-menu").removeAttr("style");
                $("#hide_default_sharing_portal_menu_items").prop("checked", jsonResult.hideDefaultItemsSharingPortal);

                $(".button-sharing-portal-menu").find('input[type=button]').on('click', function () {

                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/SetHideDefaultSharingPortalItems",
                        data: { menuBlockID: menuID, active: $("#hide_default_sharing_portal_menu_items").prop('checked') },
                        beforeSend: function () {
                            $('#menu-item-edit-backend').find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status.toString() === "200") {

                            Swal.fire({
                                title: "",
                                icon: "success",
                                text: jsonResult.message,
                                confirmButtonText: "Ok"
                            }).then(function (result) {
                                location.reload();

                            });

                        }
                        else if (jsonResult.status.toString() === "500") {
                            Swal.fire({
                                title: "",
                                icon: "error",
                                text: jsonResult.message,
                                confirmButtonText: "Ok"
                            });
                        }

                        //Hide processing screen
                        $('#menu-item-edit-backend').find('.processing_screen').hide();

                        return false;
                    });

                });

            }
            else {
                $(".note-sharing-portal-menu").attr("style", "display: none;");
                $(".hide-default-sharing-portal-menu").attr("style", "display: none;");
                $(".button-sharing-portal-menu").attr("style", "display: none;");
            }

            titleMenu = (!titleMenu && jsonResult.titles.length > 0) ? jsonResult.titles[0].Value : titleMenu;
            $('#' + elementReveal).find('h3').first().text(titleMenu + ' - ' + window.translation['menu_item_settings']);
        }

        $('#' + elementReveal).find('.processing_screen').hide();
    });
}

function upload_ckeditor_file() {
    var translation = window.translation;
    var mimeTypes = $("#ckeditor_file").attr('accept');
    //Creating an XMLHttpRequest and sending
    var xhr = new XMLHttpRequest();

    var formdata = new FormData(); //FormData object
    var fileInput = document.getElementById('ckeditor_file');
    var send = true;

    if (!translation) {
        $.get('/translation', function (data) {
            translation = data;
        });
    }

    //Iterating through each files selected in fileInput
    if (fileInput != null && fileInput.value != "") {
        for (i = 0; i < fileInput.files.length; i++) {
            if (mimeTypes.indexOf(fileInput.files[i].type) > 0) {
                //Appending each file to FormData object
                formdata.append(fileInput.files[i].name, fileInput.files[i]);
            }
            else {
                send = false;
                break;
            }
        }
        if (send) {
            $("#upload_file_btn").parent(".button-div").append('<img alt="Image for spinner" title="Image for spinner" class="spinner" src="/img/default/spinner-green.svg" height="30" width="30" />');
            xhr.open('POST', '/file_manager/UploadCKeditorFile');
            xhr.send(formdata);
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var obj = JSON.parse(xhr.responseText);
                    if (obj.status.toLowerCase() == "ok") {
                        location.reload();
                    } else {
                        Swal.fire({
                            title: "Error",
                            icon: "error",
                            text: obj.message,
                            confirmButtonText: "Ok"
                        });
                    }
                }
            };
        }
        else {
            Swal.fire({
                title: "Error",
                icon: "error",
                text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                confirmButtonText: "Ok"
            });
        }
    }
}

function verifyCorporatePage(selector, status) {
    $('.backend-page #page-conf-form input[type="checkbox"].field-corporate-page').each(function () {
        var lang_id = $(this).attr("data-language-id");
        if ($(this).attr("id") != selector) {
            if (status == 1) {
                $(this).prop("checked", true);
                $('#result-text-section-' + lang_id).removeClass("is-hidden");
                $('#organization-id-section-' + lang_id).removeClass("is-hidden");
                $('input#organization-id-' + lang_id).attr("data-required", "true");
            }
            else {
                $(this).prop("checked", false);
                $('#result-text-section-' + lang_id).addClass("is-hidden");
                $('#organization-id-section-' + lang_id).addClass("is-hidden");
                $('input#organization-id-' + lang_id).removeAttr("data-required");
            }
        }
    });
}

function verifyTileInformation(selector, status) {
    $('.backend-page #page-conf-form input[type="checkbox"].field-tile-information').each(function () {
        var lang_id = $(this).attr("data-language-id");
        if ($(this).attr("id") != selector) {
            if (status == 1) {
                $(this).prop("checked", true);
                $('#tile-information-container-' + lang_id).removeClass('is-hidden');
            }
            else {
                $(this).prop("checked", false);
                $('#tile-information-container-' + lang_id).addClass('is-hidden');
            }
        }
    });
}

function vol_fields_management_save_page() {
    if (!is_backend_page()) return;
    if ($("#volunteer-fields-management").length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $("li.tabs-title").on("click", function () {
            $(this).parents(".volunteer-registration-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
        });



        $(document).on('click', '#volunteer-fields-management .save-settings', function () {
            for (var i in CKEDITOR.instances) {
                if (CKEDITOR.instances[i].name.indexOf("volunteer_registration") != -1) {
                    $("#" + CKEDITOR.instances[i].name).text(escape(CKEDITOR.instances[i].getData()));
                    $("#" + CKEDITOR.instances[i].name).val(escape(CKEDITOR.instances[i].getData()));
                }
            }
            if ($('#yes-no-visible--primary_phone').is(':checked')) {
                var value = $('#input-text--primary_phone').val();
                var valuesArray = value.split(';');
                var foundError = false;
                valuesArray.forEach(function (item) {
                    item = item.toLowerCase();
                    if (item != "home" && item != "business" && item != "mobile" && item != "other") {
                        foundError = true;
                    }
                });

                if (foundError === true) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: window.translation.message_main_phone_type,
                        confirmButtonText: "Ok"
                    });
                    return;
                } else {

                    foundError = false;
                    var errorMessage = '';
                    valuesArray.forEach(function (item) {
                        item = item.toLowerCase();
                        var active = '';
                        if (item === 'home') {
                            active = $('#yes-no-visible--phone').is(':checked');
                            if (active === false) {
                                foundError = true;
                                errorMessage = window.translate.message_home_phone;
                            }
                        }
                        if (item === 'business') {
                            active = $('#yes-no-visible--work_phone').is(':checked');
                            if (active === false) {
                                foundError = true;
                                errorMessage = window.translate.message_work_phone;
                            }
                        }
                        if (item === 'mobile') {
                            active = $('#yes-no-visible--mobile_phone').is(':checked');
                            if (active === false) {
                                foundError = true;
                                errorMessage = window.translate.message_mobile_phone;
                            }
                        }
                        if (item === 'other') {
                            active = $('#yes-no-visible--other_phone').is(':checked');
                            if (active === false) {
                                foundError = true;
                                errorMessage = window.translate.message_other_phone;
                            }
                        }

                    });
                    if (foundError === true) {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: errorMessage,
                            confirmButtonText: "Ok"
                        });
                        return;
                    }
                }

            }
            validatePhoneValues("volunteer-fields-management");
            var formData = $("#volunteer-fields-management").serializeObject();
            $.ajax({
                method: "POST",
                url: urlSite + "admin/SetVolunteerSettings",
                data: formData,
                beforeSend: function () {
                    $('#volunteer-form-settings-edit-backend').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status.toString() === "200") {
                    Swal.fire({
                        title: "",
                        icon: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"
                    }).then(function (result) {
                        $('#volunteer-form-settings-edit-backend').foundation('close');
                        var referrerURL = jsonResult.referrerURL.toString();
                        window.location.href = referrerURL;

                    });
                }
                else if (jsonResult.status.toString() === "500") {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"
                    });
                }

                //Hide processing screen
                $('#volunteer-form-settings-edit-backend').find('.processing_screen').hide();

                return false;
            });
            return false;
        });
        $(document).on('click', '#volunteer-fields-management input[type=checkbox]', function () {
            var name = $(this).attr('name');
            if (name.indexOf("required") > 0) {
                name = name.replace("required", "visible");
                if ($(this).is(':checked')) {
                    $('#' + name).prop('checked', true);
                }
            }
            if (name.indexOf("visible") > 0) {
                name = name.replace("visible", "required");
                if ($(this).is(':checked') == false) {
                    $('#' + name).prop('checked', false);
                }
            }
        });
    }
}

Date.prototype.addDays = function (days) {
    var dat = new Date(this.valueOf());
    dat.setDate(dat.getDate() + days);
    return dat;
};

String.prototype.replaceAll = function (target, replacement) {
    return this.split(target).join(replacement);
};

String.prototype.capitalizeFirstLetter = function () {
    var getWords = this.split(' ');
    return getWords.map(function (value) { return value.charAt(0).toUpperCase() + value.slice(1); }).join(' ');
};

Array.prototype.removeValue = function (name, value) {
    var array = $.map(this, function (v, i) {
        return v[name] === value ? null : v;
    });
    this.length = 0; //clear original array
    this.push.apply(this, array); //push all elements except the one we want to delete
}

function backend_personal_information_form_settings() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if ($('body.backend-page').length > 0) {

        var address_title = $('.fieldset-step[data-title-fieldset="contact_info"] legend').text();
        var phone_title = $('.fieldset-step[data-title-fieldset="phone_info"] legend').text();
        var email_title = $('.fieldset-step[data-title-fieldset="email_information"] legend').text();
        var demographic_title = $('.fieldset-step[data-title-fieldset="demographic"] legend').text();
        var volunteer_availability_title = $('.fieldset-step[data-title-fieldset="volunteer_availability"] legend').text();
        var volunteer_interest_title = $('.fieldset-step[data-title-fieldset="volunteer_interest"] legend').text();
        $(document).on('click', 'a[data-element-reveal="personal-information-form-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            $('#' + elementReveal).foundation('open');
            $('#' + elementReveal).foundation();
            //Get info of settings saved in database
            $.ajax({
                method: "POST",
                url: urlSite + "get-personal-information-settings",
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);

                $('#' + elementReveal).find('.processing_screen').hide();

                if (dataResult) {
                    //Include listing of fields with options visible and
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').empty();

                    var sections_titles = JSON.parse(dataResult.section);
                    var fields = JSON.parse(dataResult.fields);
                    var labels = JSON.parse(dataResult.labels);
                    var basic_info = JSON.parse(dataResult.basic_info);
                    var address = JSON.parse(dataResult.address);
                    var phone = JSON.parse(dataResult.phone);
                    var email_communication = JSON.parse(dataResult.email_communication);
                    var rewards_recognition = JSON.parse(dataResult.rewards_recognition);
                    var demographic = JSON.parse(dataResult.demographic);
                    var volunteer_availability = JSON.parse(dataResult.volunteer_availability);
                    var volunteer_interest = JSON.parse(dataResult.volunteer_interest);
                    var countField = 0;
                    var phones_values = JSON.parse(dataResult.phoneTypeValues);
                    var phones_text = phones_values.join(';');
                    $('#' + elementReveal).foundation('open');

                    //Include listing of fields with options visible and
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').empty();

                    //Add fields to each section of listing fields
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[0] + '</span></li>');
                    basic_info.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-4 columns"><span>' + labels[countField] + '</span></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[1] + '</span></li>');
                    address.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-4 columns"><span>' + labels[countField] + '</span></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    
                    phone.forEach(function (field) {
                        var aditional = '';
                        if (field == 'primary_phone') {
                            aditional = '<input type="hidden" name="input-text--primary_phone" id="input-text--primary_phone" value="' + phones_text + '" />';
                        }
                        var newRow = '<li class="row"><div class="small-4 columns"><span>' + labels[countField] + '</span></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>' + aditional + '</li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[2] + '</span></li>');
                    
                    email_communication.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-4 columns"><span>' + labels[countField] + '</span></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';
                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });
                    if (rewards_recognition.length > 0) {
                        countField++;
                        /* HOC3-15424
                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[3] + '</span></li>');
                        
                        rewards_recognition.forEach(function (field) {
                            var newRow = '<li class="row"><div class="small-4 columns"><span>' + labels[countField] + '</span></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-4 columns"><div class="switch large"><input disabled="disabled" class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                            $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                            countField++;
                        });
                        */
                    }
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[4] + '</span></li>');
                    demographic.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-4 columns"><span>' + labels[countField] + '</span></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[5] + '</span></li>');
                    volunteer_availability.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-4 columns"><span>' + labels[countField] + '</span></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[6] + '</span></li>');
                    volunteer_interest.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-4 columns"><span>' + labels[countField] + '</span></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-4 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });



                    if (dataResult.setting) {
                        //Read all fields and populate radio button
                        var settings = JSON.parse(dataResult.setting);

                        settings.forEach(function (settingField) {
                            var name = settingField.name;

                            if (settingField.required) {
                                $('input#yes-no-required--' + name).prop('checked', true);
                            }
                            else {
                                $('input#yes-no-required--' + name).prop('checked', false);
                            }
                            if (settingField.visible) {
                                $('input#yes-no-visible--' + name).prop('checked', true);
                            }
                            else {
                                $('input#yes-no-visible--' + name).prop('checked', false);
                            }
                            if (name == "primary_phone") {
                                $('input#input-text--' + name).val(phones_text);
                            }
                        });
                    }
                    else {
                        var fields = $('#personal-information-form').data('fields');

                        fields.forEach(function (field) {
                            $('input#yes-no-visible--' + field).prop('checked', false);
                            $('input#yes-no-required--' + field).prop('checked', false);
                        });
                    }

                    if (dataResult.internationalizationItems) {
                        //Read all items and populate the fields.
                        var items = JSON.parse(dataResult.internationalizationItems);
                        items.forEach(function (item) {
                            var group = item.Group;
                            var name = item.Item;
                            var value = item.Value;
                            var language_id = item.Language_ID;

                            $("#" + group + "_" + name + "-" + language_id).val(value);
                            $("#" + group + "_" + name + "-" + language_id).text(value);

                        });
                    }
                    $("li.tabs-title").on("click", function () {
                        $(this).parents(".personal-information-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
                    });

                    $(".personal-info-ckeditor").each(function () {
                        initialize_ckeditor_ars($(this).attr("id"), "");
                    });

                    validateAfterReader('personal-information-fields-management');

                    validateMainPhoneChanges('personal-information-fields-management');
                }
            });

        });
    }

    //Fix to hide fieldset when not exist input, select inside of fieldset
    $('#personal-information-form fieldset.fieldset-step').each(function () {
        var lenghtInput = $(this).find('input').length;
        var lengthSelect = $(this).find('select').length;
        var lengthTextarea = $(this).find('textarea').length;

        if (lenghtInput === 0 && lengthSelect === 0 && lengthTextarea === 0) {
            if ($(this).parents('.fieldset-group').length > 0) {
                $(this).parents('.columns.reduced-fieldset').remove();

                //Fix the other fieldset to addapt to screen
                $('#personal-information-form .fieldset-group .small-12.columns.reduced-fieldset').wrap('<div class="small-12 columns"></div>');
                $('#personal-information-form .fieldset-group .small-12.columns.reduced-fieldset').removeClass('medium-6');
                $('#personal-information-form .fieldset-group .small-12.columns.reduced-fieldset').addClass('medium-12');

                //Fix the fieldset button close
                $('#personal-information-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('space-right');
                $('#personal-information-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('fixed-position');
                $('#personal-information-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').wrap('<div class="small-2 medium-6 text-right columns"></div>');

                //Fix to the title of fieldset
                $('#personal-information-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').removeClass('medium-9');
                $('#personal-information-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').addClass('medium-6');
            }
            else {
                $(this).remove();
            }
        }
    });

    if ($("#personal-information-fields-management").length > 0) {



        $(document).on('click', '#personal-information-fields-management .save-settings', function () {
            validatePhoneValues('personal-information-fields-management');

            for (var i in CKEDITOR.instances) {
                if (CKEDITOR.instances[i].name.indexOf("personal_information") != -1) {
                    $("#" + CKEDITOR.instances[i].name).text(escape(CKEDITOR.instances[i].getData()));
                    $("#" + CKEDITOR.instances[i].name).val(escape(CKEDITOR.instances[i].getData()));
                }
            }

            var formData = $("#personal-information-fields-management").serializeObject();
            $.ajax({
                method: "POST",
                url: urlSite + "set-form-settings/PersonalInformation",
                data: formData,
                beforeSend: function () {
                    $('#personal-information-form-settings-edit-backend').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status.toString() === "200") {
                    //Close modal and update page list
                    Swal.fire({
                        title: "",
                        icon: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"

                    }).then(function (result) {
                        $('#personal-information-form-settings-edit-backend').foundation('close');
                        var referrerURL = jsonResult.referrerURL.toString();
                        window.location.href = referrerURL;

                    });

                }
                else if (jsonResult.status.toString() === "500") {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"
                    });
                }

                //Hide processing screen
                $('#personal-information-form-settings-edit-backend').find('.processing_screen').hide();

                return false;
            });
            return false;
        });

        $(document).on('click', '#personal-information-fields-management input[type=checkbox]', function () {
            var name = $(this).attr('name');
            if (name.indexOf("required") > 0) {
                name = name.replace("required", "visible");
                if ($(this).is(':checked')) {
                    $('#' + name).prop('checked', true);
                }
            }
            if (name.indexOf("visible") > 0) {
                name = name.replace("visible", "required");
                if ($(this).is(':checked') == false) {
                    $('#' + name).prop('checked', false);
                }
            }
        });

    }
}
function rollback_FormSetting(jsonResult, pageName) {
    if (jsonResult.blockFormSetting.length > 0) {
        jsonResult.blockFormSetting.forEach(function (blockInfo) {
            var settings = [];
            if (blockInfo.settingsJSON != null && blockInfo.settingsJSON != undefined) {
                settings = blockInfo.settingsJSON;
            } else if (blockInfo.Settings != null && blockInfo.Settings != undefined) {
                settings = JSON.parse(blockInfo.Settings);
            }
            if (settings.length > 0) {
                if (pageName == "PersonalInformation") {
                    $('#personal-information-fields-management input[type="checkbox"]').prop('checked', false);

                    settings.forEach(function (setting) {
                        var field = setting.name;
                        var required = setting.required;
                        var visible = setting.visible;

                        $('#personal-information-fields-management input[name="yes-no-visible--' + field + '"').prop('checked', visible);
                        $('#personal-information-fields-managementt input[name="yes-no-required--' + field + '"').prop('checked', required);
                    });
                }
                if (pageName == "OrganizationSignUp") {
                    $('#organization-fields-management input[type="checkbox"]').prop('checked', false);

                    settings.forEach(function (setting) {
                        var field = setting.name;
                        var required = setting.required;
                        var visible = setting.visible;

                        $('#organization-fields-management input[name="yes-no-visible--' + field + '"').prop('checked', visible);
                        $('#organization-fields-managementt input[name="yes-no-required--' + field + '"').prop('checked', required);
                    });
                }
            }
        });
    }
}

function rollback_pageCategory(jsonResult) {
    var self = $('#page-category-conf');
    var parentAssigned = false;

    if (jsonResult.pageCategories.length > 0) {
        jsonResult.pageCategories.forEach(function (pageCategory) {
            var parentId = pageCategory.parentCategory;

            //Validate if exists value in select
            if (self.find('select[name="parent_category_id"]').find('option[value="' + parentId + '"]').length > 0 && !parentAssigned) {
                self.find('select[name="parent_category_id"]').val(parentId);
                parentAssigned = true;
            }
        });
    }
    if (jsonResult.blockLanguagePageCategories.length > 0) {
        jsonResult.blockLanguagePageCategories.forEach(function (languagePageCategory) {
            var languageId = languagePageCategory.language;
            var description = languagePageCategory.description;
            var name = languagePageCategory.name;

            self.find('input[name="name-' + languageId + '"]').val(name);
            self.find('input[name="description-' + languageId + '"]').val(description);
        });
    }
}

function rollback_ButtonBlock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#button-block-advanced-settings');

    var self = $('#button-block-configuration');

    //Populate info of block
    if (jsonResult.blockData) {
        var blockInfo = jsonResult.blockData;

        self.find('input[name="system_name"]').val(blockInfo.SystemName);
        self.find('input[name="sort_weight"]').val(blockInfo.Weight);

        if (blockInfo.ShowTitle) {
            self.find('input[name="show_title"]').val(blockInfo.ShowTitle);
            self.find('input.button-show-title').prop('checked', true);
        }
        else {
            self.find('input[name="show_title"]').val(null);
            self.find('input.button-show-title').prop('checked', false);
        }

        self.find('input[name="enabled"]').prop('checked', blockInfo.Enabled);
        self.find('input[name="button_visible_to"]').prop('checked', false);
        self.find('input#button_visibility_' + blockInfo.Visibility).prop('checked', true);
        self.find('textarea[name="button_visibility_urls"]').val(blockInfo.VisibilityUrls);
        self.find('select[name="region"]').val(blockInfo.Region);

        if (blockInfo.Visibility != 0) {
            self.find('#button_exception_url_container').removeClass('is-hidden');
        }
        else {
            self.find('#button_exception_url_container').addClass('is-hidden');
        }
    }

    //Populate info of languages block
    if (jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            self.find('input[name="title-' + title.Language + '"]').val(title.Title);
        });
    }

    //Populate info of text button languages
    if (jsonResult.blockLanguageButtonBlock.length > 0) {
        jsonResult.blockLanguageButtonBlock.forEach(function (textbutton) {
            self.find('input[name="text-button-' + textbutton.Language + '"]').val(textbutton.TextButton);
        });
    }

    //Populate info specific of button block
    if (jsonResult.blockButtonBlock) {
        jsonResult.blockButtonBlock.forEach(function (buttonBlock) {
            self.find('input[name="button_url"]').val(buttonBlock.Url);
            self.find('select[name="button_target"]').val(buttonBlock.Target);
            self.find('select[name="button_alignment"]').val(buttonBlock.Alignment);
            self.find('select[name="button_type"]').val(buttonBlock.TypeButton);
        });
    }
}

//backend for organization settings
function backend_organization_form_settings() {
    if ($('body.backend-page').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var basic_title = $('.fieldset-step[data-title-fieldset="basic_info"] legend').text();
        var organization_contact_title = $('.fieldset-step[data-title-fieldset="organization_contact_info"] legend').text();
        var second_contact_title = $('.fieldset-step[data-title-fieldset="second_contact_info"] legend').text();
        var describe_title = $('.fieldset-step[data-title-fieldset="describe_info"] legend').text();
        $(document).on('click', 'a[data-element-reveal="organization-form-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            var dataFrom = $(this).attr('data-modal-from');
            //validate if edit ling is from partner ars workflow
            if (dataFrom == 'ars-partner') {
                $("#ars-vol-reg-workflow").find('.processing_screen').show();
                $("#organization-fields-management").attr('data-modal-from', 'ars-partner');
            } else {
                $("#organization-fields-management").attr('data-modal-from', 'from-page');
            }

            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetOrganizationSettings",
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);
                $('#' + elementReveal).find('.processing_screen').hide();
                if (dataResult) {
                    var labels = JSON.parse(dataResult.labels);
                    var fields = JSON.parse(dataResult.fields);
                    var sections_titles = JSON.parse(dataResult.section_titles);
                    var basic = JSON.parse(dataResult.basic);
                    var organization_contact = JSON.parse(dataResult.contact_info);
                    var primary_contact = JSON.parse(dataResult.primary_contact);
                    var second_contact = JSON.parse(dataResult.second_contact);
                    var describe = JSON.parse(dataResult.describe);
                    var country = JSON.parse(dataResult.country);
                    var hedaCompatible = dataResult.hedaCompatible;
                    var countField = 0;

                    countrylist = '<option value="">' + window.translation.select + '</option>';

                    country.forEach(function (tempCountry) {
                        countrylist = countrylist + '<option value="' + tempCountry + '">' + tempCountry + '</option>';
                    });

                    $('#' + elementReveal).foundation('open');
                    $('#' + elementReveal).foundation();

                    $("li.tabs-title").on("click", function () {
                        $(this).parents(".organization-registration-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
                    });

                    $(".org-reg-ckeditor").each(function () {
                        initialize_ckeditor_ars($(this).attr("id"), "");
                    });
                    //Include listing of fields with options visible and
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').empty();

                    //Add fields to each section of listing fields
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[0] + '</span></li>');
                    basic.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';
                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);
                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[1] + '</span></li>');
                    organization_contact.forEach(function (field) {
                        var newRow = '';
                        if (field != 'country') {
                            var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';
                        } else {
                            var option = '<select class="country" name=select-default--' + field + ' id=select-default--' + field + '>' + countrylist + '</select>';
                            var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns">' + option + '</div></li>';
                        }

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[2] + '</span></li>');
                    primary_contact.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[3] + '</span></li>');
                    second_contact.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    $('#' + elementReveal).find('.listing-fields-volunteer ul').append('<li class="row title"><span class="title-section">' + sections_titles[4] + '</span></li>');
                    describe.forEach(function (field) {
                        var newRow = '<li class="row"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible--' + field + '" type="checkbox" name="yes-no-visible--' + field + '"><label class="switch-paddle" for="yes-no-visible--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required--' + field + '" type="checkbox" name="yes-no-required--' + field + '"><label class="switch-paddle" for="yes-no-required--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div></div></li>';

                        $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        countField++;
                    });

                    if (dataResult.setting) {
                        //Read all fields and populate radio button
                        var settings = JSON.parse(dataResult.setting);
                        settings.forEach(function (settingField) {
                            var name = settingField.name;
                            if (settingField.required) {
                                //$('input#yes-radio-required-'+name).prop('checked', true);
                                $('input#yes-no-required--' + name).prop('checked', true);
                            }
                            else {
                                //$('input#no-radio-required-'+name).prop('checked', true);
                                $('input#yes-no-required--' + name).prop('checked', false);
                            }
                            if (settingField.visible) {
                                //$('input#yes-radio-visible-'+name).prop('checked', true);
                                $('input#yes-no-visible--' + name).prop('checked', true);
                            }
                            else {
                                //$('input#no-radio-visible-'+name).prop('checked', true);
                                $('input#yes-no-visible--' + name).prop('checked', false);
                            }
                            if (name == "country") {
                                $('select#select-default--' + name).val(settingField.text);
                            }

                            if (hedaCompatible === false) {
                                if (name === "primary_contact_first_name" || name === "primary_contact_last_name" || name === "primary_contact_email") {
                                    $('input#yes-no-required--' + name).prop('disabled', 'disabled');
                                    $('input#yes-no-visible--' + name).prop('disabled', 'disabled');
                                }
                            } else {
                                if (name === "primary_contact_first_name" || name === "primary_contact_last_name" || name === "primary_contact_email") {
                                    
                                    $('input#yes-no-visible--' + name).prop('disabled', 'disabled');
                                }
                            }
                        });
                    }
                    else {
                        var fields = $('#organization-register-form').data('fields');

                        //Set all false
                        fields.forEach(function (field) {
                            $('input#yes-no-visible--' + field).prop('checked', false);
                            $('input#yes-no-required--' + field).prop('checked', false);
                        });
                    }
                    if (dataResult.internationalizationItems) {
                        //Read all items and populate the fields.
                        var items = JSON.parse(dataResult.internationalizationItems);
                        items.forEach(function (item) {
                            var group = item.Group;
                            var name = item.Item;
                            var value = item.Value;
                            var language_id = item.Language_ID;

                            $("#" + group + "_" + name + "-" + language_id).val(value);
                            $("#" + group + "_" + name + "-" + language_id).text(value);

                        });
                    }

                }

                if (dataFrom == 'ars-partner') {
                    $("#ars-vol-reg-workflow").find('.processing_screen').hide();
                } 


            });
        });
    }

    //Fix to hide fieldset when not exist input, select inside of fieldset
    $('#organization-register-form fieldset.fieldset-step').each(function () {
        var lenghtInput = $(this).find('input').length;
        var lengthSelect = $(this).find('select').length;
        var lengthTextarea = $(this).find('textarea').length;

        if (lenghtInput === 0 && lengthSelect === 0 && lengthTextarea === 0) {
            if ($(this).parents('.fieldset-group').length > 0) {
                $(this).parents('.columns.reduced-fieldset').remove();

                //Fix the other fieldset to addapt to screen
                $('#organization-register-form .fieldset-group .small-12.columns.reduced-fieldset').wrap('<div class="small-12 columns"></div>');
                $('#organization-register-form .fieldset-group .small-12.columns.reduced-fieldset').removeClass('medium-6');
                $('#organization-register-form .fieldset-group .small-12.columns.reduced-fieldset').addClass('medium-12');

                //Fix the fieldset button close
                $('#organization-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('space-right');
                $('#organization-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('fixed-position');
                $('#organization-register-form.fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').wrap('<div class="small-2 medium-6 text-right columns"></div>');

                //Fix to the title of fieldset
                $('#organization-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').removeClass('medium-9');
                $('#organization-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').addClass('medium-6');
            }
            else {
                $(this).remove();
            }
        }
    });

    if ($("#organization-fields-management").length > 0) {

        $(document).on('click', '#organization-fields-management .save-settings', function () {
            for (var i in CKEDITOR.instances) {
                if (CKEDITOR.instances[i].name.indexOf("organization_registration") != -1) {
                    $("#" + CKEDITOR.instances[i].name).text(escape(CKEDITOR.instances[i].getData()));
                    $("#" + CKEDITOR.instances[i].name).val(escape(CKEDITOR.instances[i].getData()));
                }
            }
            var formData = $("#organization-fields-management").serializeObject();

            $.ajax({
                method: "POST",
                url: urlSite + "admin/SetOrganizationRegistrationSettings",
                data: formData,
                beforeSend: function () {
                    $('#personal-information-form-settings-edit-backend').find('.processing_screen').show();
                    $("#organization-form-settings-edit-backend").find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status.toString() === "200") {

                    Swal.fire({
                        title: "",
                        icon: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"
                    }).then(function (result) {
                        //Close modal and update page list
                        $('#personal-information-form-settings-edit-backend').foundation('close');

                        var referrerURL = jsonResult.referrerURL.toString();

                        var modalfrom = $("#organization-fields-management").attr('data-modal-from')

                        if (modalfrom != 'ars-partner') {
                            window.location.href = referrerURL;
                        } else {
                            $("#organization-form-settings-edit-backend").foundation('close');
                        }

                    });

                }
                else if (jsonResult.status.toString() === "500") {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"
                    });
                }

                //Hide processing screens
                $('#personal-information-form-settings-edit-backend').find('.processing_screen').hide();
                $("#organization-form-settings-edit-backend").find('.processing_screen').hide();

                return false;
            });
            return false;
        });
        $(document).on('click', '#organization-fields-management input[type=checkbox]', function () {
            var name = $(this).attr('name');
            if (name.indexOf("required") > 0) {
                name = name.replace("required", "visible");
                if ($(this).is(':checked')) {
                    $('#' + name).prop('checked', true);
                }
            }
            if (name.indexOf("visible") > 0) {
                name = name.replace("visible", "required");
                if ($(this).is(':checked') == false) {
                    $('#' + name).prop('checked', false);
                }
            }
        });
    }
}



function findAndAdd(array, property, value, addProperty, addValue) {
    var bol = false;
    if (array.length > 0)
        $.each(array, function (index, result) {
            if (result[property] == value) {
                result[addProperty].push(addValue);
                bol = true;
            }
        });
    return bol;
}

function apply_backend_multiselect(selector) {

    if ($(selector).closest('.input-group-select').length > 0) {
        if ($(selector).closest('.input-group-select').find('.ms-options-wrap').length > 0) {
            $(selector).multiselect('unload');
            $(selector).closest('.input-group-select').find('.ms-options-wrap').remove();
        }
    }

    $(selector).multiselect({
        'selectAll': true,
        'columns': 1,
        'showCheckbox': true,
        texts: {
            placeholder: window.translation.select_options,
            search: window.translation.search,
            selectedOptions: ' ' + window.translation.selected,
            selectAll: window.translation.select_all
        }
    });
}

function apply_backend_multiselect_group(selector, selectAll, value, availableAll) {

    $(selector).multiselect('unload');
    if ($(selector).closest('.input-group-select').length > 0) {
        if ($(selector).closest('.input-group-select').find('.ms-options-wrap').length > 0) {
            $(selector).closest('.input-group-select').find('.ms-options-wrap').remove();
        }
    }

    //Wait 1000ms and reinitialize select
    setTimeout(function () {
        //Find id of parent modal
        var parentModal = $(selector).parents('.reveal').first();

        $(selector).multiselect({
            'selectAll': selectAll,
            'columns': 1,
            'showCheckbox': true,
            'search': true,
            texts: {
                placeholder: window.translation.select_options,
                search: window.translation.search,
                selectedOptions: ' ' + window.translation.selected,
                selectAll: window.translation.select_all
            }
        });

        //Assign values
        $(selector).val(value);
        $(selector).multiselect('reload');

        //Validate if value is array and apply validations to populate/disable checkboxes
        if (value) {
            value.forEach(function (regionId) {
                var container = $(selector).parents('.input_group_region_multiple').first();
                var checkboxElement = container.find('input[type="checkbox"][value="' + regionId + '"]').first();
                var liElement = checkboxElement.parent();
                var ulparent = checkboxElement.parents('ul').first();
                if (!availableAll) {
                    //Disable all others checkbox
                    ulparent.find('input[type="checkbox"]').attr('disabled', 'disabled');
                    ulparent.find('label').addClass('checkbox_disabled');

                    //Remove disable of current checkbox
                    checkboxElement.removeAttr('disabled');
                    liElement.find('label').removeClass('checkbox_disabled');
                }
            });
        }

        //Calculate if modal is 'Image' or 'ImageSlider' or 'Corporate Image ' and display recommended resolution
        if (parentModal.attr('id') === 'blocks-image-configuration' || parentModal.attr('id') === 'corporate-image-configuration' ||
            parentModal.attr('id') === 'blocks-slider-conf') {
            var imageBlockId = parentModal.find('input[name="image_block_id"]').val();
            var sliderBlockId = parentModal.find('input[name="slider_block_id"]').val();
            var blockId = parentModal.find('input[name="block_id"]').val();

            if (parentModal.attr('id') === 'blocks-image-configuration') {
                blockId = imageBlockId;
            }
            else if (parentModal.attr('id') === 'blocks-slider-conf') {
                blockId = sliderBlockId;
            }

            setTimeout(function () {
                display_suggested_resolution_in_modal(parentModal, $(selector), false, blockId);
            }, 500);
        }
        else if (parentModal.attr('id') === 'sponsor-block-configuration') {
            var blockId = parentModal.find('input[name="block_id"]').val();

            setTimeout(function () {
                display_suggested_resolution_in_modal(parentModal, $(selector), true, blockId);
            }, 500);
        }
    }, 1000);
}

function loadFeaturedOppMenuItems() {
    if ($(".backend-page").length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $.ajax({
            method: "GET",
            url: urlSite + "ARS/GetSignupWorkflows",
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            var menu = $(".backend-page ul.manage ul.workflows-menu");
            var htmlMarkup = '';
            var markup = '';

            markup = markup + '<li><a data-element-reveal="ars-workflow-link" data-from="signup" title="' + window.translation.add_workflow + '" class="add-component menu" data-workflow-id="0" style="display: block;">' + window.translation.add_workflow + '</a></li>';

            jsonResult.forEach(function (item) {
                markup = markup + '<li><a data-element-reveal="ars-workflow-link" data-from="signup" title="" class="edit-component menu" data-workflow-id="' + item.ID + '">' + item.Name + '</a></li>';
            });

            htmlMarkup += '<li>' +
                '<a data-element-reveal="ars-workflow-link" data-from="vol-reg" title="' + window.translation.vol_reg + '" class="edit-component menu" data-workflow-id="0">' + window.translation.vol_reg + '</a>' +
                '</li>' +
                '<li class="has-submenu">' +
                '<a title="' + window.translation.opportunity_signup + '" class="edit-component menu">' + window.translation.opportunity_signup + '</a>' +
                '<ul class="submenu menu vertical">' + markup + '</ul>' +
                '</li>';

            menu.html(htmlMarkup);
        });
    }
}


function selectFileWithCkFinder(elementId, imageField) {
    if (typeof CKFinder !== 'undefined') {
        CKFinder.basePath = '/CKFinderScripts/';
        CKFinder.popup({
            chooseFiles: true,
            width: 800,
            height: 600,
            startupPath: 'Images:/',
            onInit: function (finder) {
                finder.on('files:choose', function (evt) {
                    var file = evt.data.files.first();
                    var output = document.getElementById(elementId);
                    var imgField = document.getElementById(imageField);
                    if (output !== null) {
                        output.value = file.getUrl();
                        $('#' + elementId).trigger('change');
                    }

                    if (imgField !== null)
                        imgField.setAttribute("src", file.getUrl());
                    else {
                        var selector = "#" + elementId;
                        var parent = $(selector).parent();
                        if (parent !== null) {
                            var child = parent.find('div.ezdz-dropzone div');
                            if (child !== null) {
                                child.text("");
                                var newImage = '<img src="' + file.getUrl() + '" style="display: inline-block;" id="' + imageField + '" alt="ckfinder image"/>';
                                child.html(newImage);
                            }
                        }
                    }
                });

                finder.on('file:choose:resizedImage', function (evt) {
                    var output = document.getElementById(elementId);
                    if (output !== null)
                        output.value = evt.data.resizedUrl;
                    var imgField = document.getElementById(imageField);
                    if (imgField !== null)
                        imgField.setAttribute("src", evt.data.resizedUrl);
                });
            }
        });
    }
}

//backend first step volunteer oppotunity in Sharing Portal
function backend_first_step_vol_opp_form_settings() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if ($('body.backend-page').length > 0) {
        $(document).on('click', 'a[data-element-reveal="fisrt-pag-vol-opp-form-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            var settings;
            $('#' + elementReveal).foundation('open');
            $('#' + elementReveal).foundation();

            //Get info of settings saved in database
            $.ajax({
                method: "POST",
                url: urlSite + "get-first-page-vol-opp-settings",
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                    //sessionStorage.removeItem('last_schedule_option');
                    //sessionStorage.removeItem('last_registration_option');
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);


                $("li.tabs-title").on("click", function () {
                    $(this).parents(".volunteer-opportunity-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
                });

                $(".intro-eio-ckeditor").each(function () {
                    initialize_ckeditor_ars($(this).attr("id"), "");
                });

                if (dataResult) {
                    //Include listing of fields with options visible and
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').empty();
                    $('#' + elementReveal).find('.listing-fields-volunteer-custom ul').empty();
                    var role = JSON.parse(dataResult.roles);
                    var customFormActivated = dataResult.customFormActivated;
                    var hasHighPrivilege = dataResult.hasHighPrivilege;
                    var labels = JSON.parse(dataResult.labels);
                    var fields = JSON.parse(dataResult.fields);
                    var editFields = JSON.parse(dataResult.editFields);
                    var disabledEditFields = JSON.parse(dataResult.disabledEditFields);
                    var booleanFields = JSON.parse(dataResult.booleanFields);
                    var country = JSON.parse(dataResult.country);
                    
                    var countField = 0;
                    $("#role-select").empty();
                    //Fill the Select Role
                    role.forEach(function (field) {
                        if (field.name == "Partner Staff")
                            $("#role-select").append('<option value="' + field.ID + '"selected>' + field.name + '</option>');
                        else if (field.name != "System Administrator" && field.name != "Volunteer" && field.name != "Staff" && field.name != "Client Administrator")
                            $("#role-select").append('<option value="' + field.ID + '">' + field.name + '</option>');

                        if (field.name === 'Partner Staff') {
                            $('#' + elementReveal).find('input[name="url-print-check-in-sheet-ps"]').addClass('field-url-' + field.ID);
                        } else if (field.name === "Volunteer Leader") {
                            $('#' + elementReveal).find('input[name="url-print-check-in-sheet-vl"]').addClass('field-url-' + field.ID);
                        }


                    });
                    $('#' + elementReveal).find('.field-occ-url').hide();

                    

                    fields.forEach(function (field) {
                        var roleSelect = $("#role-select").val();
                        role.forEach(function (role) {
                            var newRow = '';
                            var option = '';
                            if (IsFieldsEdit(editFields, field)) {
                                if (field === "schedule_type") {
                                    option = '<select class="schedule-type" name=default-' + role.ID + '--' + field + ' id=default-' + role.ID + '--' + field + '><option value="Date & Time Specific">Date & Time Specific</option><option value="Individually Scheduled">Individually Scheduled</option></select>'
                                    var option2 = '<select multiple="multiple" class="schedule-type-options" name=default-' + role.ID + '--' + field + '--options id=default-' + role.ID + '--' + field + '--options><option value="Date & Time Specific">Date & Time Specific</option><option value="Individually Scheduled">Individually Scheduled</option></select>';
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns available-options"><span id="span-' + role.ID + '--' + field + '--options">' + option2 + '     </span></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '">' + option + '     </span></div></li>';
                                } else if (field === "registration_type") {
                                    option = '<select name=default-' + role.ID + '--' + field + ' id=default-' + role.ID + '--' + field + '></select>'
                                    var options2 = '<optgroup label="Date & Time Specific">Date & Time Specific</optgroup><option value="Sign Up">Sign Up</option><option value="Express Interest">Express Interest</option><optgroup label="Individually Scheduled">Individually Scheduled</optgroup><option value="Express Interest with Schedule">Express Interest with Schedule</option><option value="Express Interest Only">Express Interest Only</option>';
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns available-options"><span id="span-' + role.ID + '--' + field + '--options"><select class="register-type-options" multiple="multiple" name=default-' + role.ID + '--' + field + '--options id=default-' + role.ID + '--' + field + '--options data-original-value="Sign Up">' + options2 + '</select></span></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '">' + option + '     </span></div></li>';
                                } else if (field === "maximum_age" || field === "maximum_attendance" || field === "minimum_age" || field === "minimum_age_adult") {
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '"><input type="text" class="default-value-field" name=default-' + role.ID + '--' + field + ' id=default-' + role.ID + '--' + field + ' value=""></span></li>';
                                }
                                else if (field === "location_country") {
                                    option = '<select class="country" name=default-' + role.ID + '--' + field + ' id=default-' + role.ID + '--' + field + '></select>'
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '">' + option + '     </span></li>';
                                }
                                else {
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '"><input type="text" class="default-value-field" name=default-' + role.ID + '--' + field + ' id=default-' + role.ID + '--' + field + ' data-original-value="1" value="1"></span></li>';
                                }

                            } else {
                                if (booleanFields.indexOf(field) > -1) {
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="hidden-field small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '">False</span></div></li>';
                                } else if (field == "activity_type") {
                                    newRow = '<li class="row activity-type-' + role.ID + ' vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '"></span></div></li>';
                                } else if (field == "training_type") {
                                    newRow = '<li class="row training-type-' + role.ID + ' vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '"></span></div></li>';
                                } else if (field == "genders_served") {
                                    newRow = '<li class="row  vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '">All Genders Served</span></div></li>';
                                }
                                else
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-2 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"></div><div class="small-2 columns"><span id="span-' + role.ID + '--' + field + '"></span></div></li>';
                            }
                            $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);

                        });
                        countField++;
                    });
                    if (customFormActivated == true) {
                        var formBlocks = JSON.parse(dataResult.formBlocks);
                        var items = GetDropdownValuesSettings(formBlocks);

                        var formBlocksOccurrence = JSON.parse(dataResult.formBlocksOccurrence);
                        var itemsOccurrence = GetDropdownValuesSettings(formBlocksOccurrence);

                        var formBlocksRecurrence = JSON.parse(dataResult.formBlocksRecurrence);
                        var itemsRecurrence = GetDropdownValuesSettings(formBlocksRecurrence);

                        role.forEach(function (role) {
                            var applyHigherPrivileges = false;

                            if (role.name === 'Partner Staff')
                                applyHigherPrivileges = true;

                            var field = "opportunity_custom_form";
                            var formRow = opportunity_custom_form_build(role.ID, field, items, window.translation.volunteer_opportunity, applyHigherPrivileges, hasHighPrivilege, 'opportunity_higher_pivilege_custom_form');

                            //-- Begin occurrence - reccurrence additional form block
                            var field = "occurrence_custom_form";
                            formRow += opportunity_custom_form_build(role.ID, field, itemsOccurrence, window.translation.occurrence, applyHigherPrivileges, hasHighPrivilege, 'occurrence_higher_pivilege_custom_form');
                            var field = "recurrence_custom_form";
                            formRow += opportunity_custom_form_build(role.ID, field, itemsRecurrence, window.translation.recurrence, applyHigherPrivileges, hasHighPrivilege, 'recurrence_higher_pivilege_custom_form');
                            //-- End occurrence - reccurrence additional form block

                            $('#' + elementReveal).find('.listing-fields-volunteer-custom ul').append(formRow);

                        });
                    }
                    settings = JSON.parse(dataResult.settings);
                    var countrylist = "";
                    country.forEach(function (tempCountry) {
                        countrylist = countrylist + '<option value="' + tempCountry + '">' + tempCountry + '</option>';
                    });
                    //Set the fields with value
                    settings.forEach(function (set) {
                        $('.vo-settings').hide();
                        $('.set-' + $("#role-select").val()).show();


                        SetValueSettings(set.Settings, editFields, set.RoleId, countrylist);
                        //Activity Type
                        if ($('#yes-no-visible-' + $("#role-select").val() + '--type').is(':checked')) {
                            $('.activity-type-' + $("#role-select").val()).show();
                            $('.training-type-' + $("#role-select").val()).show();
                        } else {
                            $('.activity-type-' + $("#role-select").val()).hide();
                            $('.training-type-' + $("#role-select").val()).show();
                        }
                    });

                    $('input#yes-no-enabled-ai').prop('checked', dataResult.aienabled);
                    $('select#ai-api-to-use').val(dataResult.aiapi);

                    //Disabled the Fields cann't edit
                    //Boolean Fields, hidden the required setting
                    role.forEach(function (role) {
                        disabledEditFields.forEach(function (field) {
                            var name = "-" + role.ID + '--' + field;
                            $('#yes-no-visible' + name).closest('.row.vo-settings').find('span:first-child').first().prop('class', 'non-editable');
                            $('#yes-no-visible' + name).prop('disabled', true);
                            $('#yes-no-required' + name).prop('disabled', true);
                        });
                        booleanFields.forEach(function (field) {
                            var name = "-" + role.ID + '--' + field;
                            $('#span' + name).text("False");
                        });

                    });

                    $('#' + elementReveal).find('.field-url-' + $("#role-select").val()).show();
                    //Event if change the role
                    $("#role-select").change(function () {
                        $('.vo-settings').hide();
                        $('.set-' + $("#role-select").val()).show();
                        $('#' + elementReveal).find('.field-occ-url').hide();
                        $('#' + elementReveal).find('.field-url-' + $("#role-select").val()).show();
                    });

                    //Event if change the available values for shcedule types
                    $(".schedule-type-options").change(function (e) {
                        var res = $(this).attr('id').split("--")[0].split("-");
                        var name = res[1];

                        for (var i = 2; i < res.length; i++) {
                            name = name + "-" + res[i];
                        }

                        var selectedScheduleTypeOptions = $(this).val();

                        var lastScheduleOptions = sessionStorage.getItem('last_schedule_option' + name);

                        if (lastScheduleOptions !== null && lastScheduleOptions !== undefined && selectedScheduleTypeOptions === null) {
                            $(this).val(lastScheduleOptions.split(','));
                            selectedScheduleTypeOptions = lastScheduleOptions.split(',');
                            $(this).multiselect('reload');
                            $(this).parent('span').find('div.ms-options').show();
                            return;
                        }

                        selectedScheduleTypeOptions = selectedScheduleTypeOptions + '';

                        $('#default-' + name + '--schedule_type').empty();
                        var str = "";
                        var strAll = "";

                        $('#default-' + name + '--schedule_type--options option:selected').each(function () {
                            str = $(this).text();
                            strAll += str + ';';
                            $('#default-' + name + '--schedule_type').append($('<option>', { value: str, text: str }));
                        });


                        /* if the scheduleType was removed, then to remove the register options related,
                         * but, if was added, then to add the register options as checked by default
                         * */

                        var currentRegisterOptions = $('#default-' + name + '--registration_type--options option').map(function () { return $(this).val(); }).get();


                        if (strAll.indexOf('Date & Time Specific') === -1) {
                            $('#default-' + name + '--registration_type--options optgroup[label="Date & Time Specific"]').remove();
                            $('#default-' + name + '--registration_type--options option[value="Sign Up"]').remove();
                            $('#default-' + name + '--registration_type--options option[value="Express Interest"]').remove();
                        } else {
                            if (currentRegisterOptions.includes("Sign Up") === false) {// then add the new options  as checked
                                $('#default-' + name + '--registration_type--options').append($('<optgroup>', { label: 'Date & Time Specific', text: 'Date & Time Specific' }));
                                $('#default-' + name + '--registration_type--options').append($('<option>', { value: 'Sign Up', text: 'Sign Up', selected: true }));
                                $('#default-' + name + '--registration_type--options').append($('<option>', { value: 'Express Interest', text: 'Express Interest', selected: true }));
                            }
                        }

                        if (strAll.indexOf('Individually Scheduled') === -1) {
                            $('#default-' + name + '--registration_type--options optgroup[label="Individually Scheduled"]').remove();
                            $('#default-' + name + '--registration_type--options option[value="Express Interest with Schedule"]').remove();
                            $('#default-' + name + '--registration_type--options option[value="Express Interest Only"]').remove();
                        } else {
                            if (currentRegisterOptions.includes("Express Interest with Schedule") === false) {// then add the new options as checked
                                $('#default-' + name + '--registration_type--options').append($('<optgroup>', { label: 'Individually Scheduled', text: 'Individually Scheduled' }));
                                $('#default-' + name + '--registration_type--options').append($('<option>', { value: 'Express Interest with Schedule', text: 'Express Interest with Schedule', selected: true }));
                                $('#default-' + name + '--registration_type--options').append($('<option>', { value: 'Express Interest Only', text: 'Express Interest Only', selected: true }));
                            }
                        }

                        // reload the register-options and scheduletype select
                        $('#default-' + name + '--registration_type--options').multiselect('reload');
                        $('#default-' + name + '--schedule_type').trigger('change');

                        // set session storage
                        sessionStorage.setItem('last_schedule_option' + name, selectedScheduleTypeOptions);
                        sessionStorage.setItem('last_registration_option' + name, $('#default-' + name + '--registration_type--options').val());
                    });

                    $(".register-type-options").change(function () {
                        var applyRollBack = false;
                        var res = $(this).attr('id').split("--")[0].split("-");
                        var name = res[1];

                        for (var i = 2; i < res.length; i++) {
                            name = name + "-" + res[i];
                        }

                        var currentVals = $(this).val() + '';
                        var lastRegistrationOption = sessionStorage.getItem('last_registration_option' + name);
                        var currentValsArray = undefined;

                        if (lastRegistrationOption !== null && lastRegistrationOption !== undefined) {
                            var scheduleTypeOptionsTmp = $('#default-' + name + '--schedule_type--options').val();

                            if (currentVals !== null && currentVals !== '') {
                                currentValsArray = currentVals.split(",");

                                $('#default-' + name + '--schedule_type--options option:selected').each(function () {
                                    if ($(this).val() == "Date & Time Specific" && (currentValsArray.includes("Sign Up") || currentValsArray.includes("Express Interest")) === false) {
                                        applyRollBack = true;
                                    } else if ($(this).val() == "Individually Scheduled" && (currentValsArray.includes("Express Interest with Schedule") || currentValsArray.includes("Express Interest Only")) === false) {
                                        applyRollBack = true;
                                    }
                                });

                            } else {
                                applyRollBack = true;
                            }

                            if (applyRollBack === true) {
                                $(this).val(lastRegistrationOption.split(','));
                                currentVals = lastRegistrationOption.split(',');
                                $(this).multiselect('reload');
                                $(this).parent('span').find('div.ms-options').show();
                                return;
                            }

                        }

                        if (applyRollBack === false && currentVals !== '' && currentVals !== null) {
                            var scheduleDefaultValue = $('#default-' + name + '--schedule_type').val();

                            if (scheduleDefaultValue !== '') {
                                $('#default-' + name + '--registration_type').empty();
                                if (currentValsArray === undefined)
                                    currentValsArray = currentVals.split(",");

                                for (var i = 0; i < currentValsArray.length; i++) {
                                    var internalValue = currentValsArray[i];
                                    if (scheduleDefaultValue == 'Date & Time Specific') {
                                        if (internalValue == "Sign Up" || internalValue == "Express Interest") {
                                            $('#default-' + name + '--registration_type').append($('<option>', { value: internalValue, text: internalValue }));
                                        }

                                    } else if (scheduleDefaultValue == 'Individually Scheduled') {
                                        if (internalValue == "Express Interest with Schedule" || internalValue == "Express Interest Only") {
                                            $('#default-' + name + '--registration_type').append($('<option>', { value: internalValue, text: internalValue }));
                                        }
                                    }

                                }
                            }

                            sessionStorage.setItem('last_registration_option' + name, currentVals);
                        }
                    });

                    //Event if change the Schedule Type
                    $(".schedule-type").change(function () {
                        var res = $(this).attr('id').split("--")[0].split("-");
                        var name = res[1];

                        for (var i = 2; i < res.length; i++) {
                            name = name + "-" + res[i];
                        }

                        var currentRegistrationTypesAllowed = $('#default-' + name + '--registration_type--options').val();

                        $('#default-' + name + '--registration_type').empty();

                        if (currentRegistrationTypesAllowed !== undefined && currentRegistrationTypesAllowed !== null) {

                            if ($(this).val() == "Date & Time Specific") {

                                if (currentRegistrationTypesAllowed.includes('Sign Up'))
                                    $('#default-' + name + '--registration_type').append($('<option>', { value: 'Sign Up', text: 'Sign Up' }));

                                if (currentRegistrationTypesAllowed.includes('Express Interest'))
                                    $('#default-' + name + '--registration_type').append($('<option>', { value: 'Express Interest', text: 'Express Interest' }));
                            }
                            else if ($(this).val() == "Individually Scheduled") {
                                if (currentRegistrationTypesAllowed.includes('Express Interest with Schedule'))
                                    $('#default-' + name + '--registration_type').append($('<option>', { value: 'Express Interest with Schedule', text: 'Express Interest with Schedule' }));
                                if (currentRegistrationTypesAllowed.includes('Express Interest Only'))
                                    $('#default-' + name + '--registration_type').append($('<option>', { value: 'Express Interest Only', text: 'Express Interest Only' }));
                            }
                        }
                    });

                    if (dataResult.internationalizationItems) {
                        //Read all items and populate the fields.
                        var items = JSON.parse(dataResult.internationalizationItems);
                        items.forEach(function (item) {
                            var group = item.Group;
                            var name = item.Item;
                            var value = item.Value;
                            var language_id = item.Language_ID;

                            $("#" + group + "_" + name + "-" + language_id).val(value);
                            $("#" + group + "_" + name + "-" + language_id).text(value);

                        });
                    }


                }

                $('select.schedule-type-options').multiselect({
                    'selectAll': true,
                    'columns': 1,
                    'showCheckbox': true,
                    'search': false,
                    texts: {
                        placeholder: window.translation.select_options,
                        search: window.translation.search,
                        selectedOptions: ' ' + window.translation.selected,
                        selectAll: window.translation.select_all
                    }
                });

                $('select.register-type-options').multiselect('unload');
                $('select.register-type-options').multiselect({
                    'selectAll': true,
                    'columns': 1,
                    'showCheckbox': true,
                    'search': false,
                    texts: {
                        placeholder: window.translation.select_options,
                        search: window.translation.search,
                        selectedOptions: ' ' + window.translation.selected,
                        selectAll: window.translation.select_all
                    }
                });


                $('#' + elementReveal).find('.processing_screen').hide();
            });
        });
    }
    if ($("#first-step-vol-opp-form-fields-management").length > 0) {


        $(document).on('click', '.switch-form-block', function () {
            if ($(this).prop('checked')) {
                $(this).closest('li').find('select').prop('disabled', false);
            }
            else {
                $(this).closest('li').find('select').prop('disabled', true);
            }

        });

        $(document).on('click', '#first-step-vol-opp-form-fields-management .save-settings', function (e) {

            e.stopImmediatePropagation();

            for (var i in CKEDITOR.instances) {
                if (CKEDITOR.instances[i].name.indexOf("opportunity") != -1) {
                    $("#" + CKEDITOR.instances[i].name).text(escape(CKEDITOR.instances[i].getData()));
                    $("#" + CKEDITOR.instances[i].name).val(escape(CKEDITOR.instances[i].getData()));
                }
            }


            //Validate the default values
            var isThereError = false;
            var message = '';


            var urlcheckingForPL = $('#first-step-vol-opp-form-fields-management').find('input[name="url-print-check-in-sheet-ps"]').val();
            var urlcheckingForVL = $('#first-step-vol-opp-form-fields-management').find('input[name="url-print-check-in-sheet-vl"]').val();

            
            if (urlcheckingForPL !== undefined && urlcheckingForPL !== null && urlcheckingForPL !== '') {
                if (urlcheckingForPL.indexOf('?') === -1) {
                    
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: 'Url for Print Check-in Sheet in Partner Staff should have a parameter in the query string',
                        confirmButtonText: "Ok"
                    });

                    return;
                }
            }
            if (urlcheckingForVL !== undefined && urlcheckingForVL !== null && urlcheckingForVL !== '') {
                if (urlcheckingForVL.indexOf('?') === -1) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: 'Url for Print Check-in Sheet in Volunteer Leader should have a parameter in the query string',
                        confirmButtonText: "Ok"
                    });

                    return;
                }
            }

            //verifying empty defaults
            $('#first-step-vol-opp-form-fields-management').find('.vo-settings:visible').find('input.default-value-field').each(function () {
                var values = $(this).attr('name').split('--');
                var originalValue = $(this).attr('data-original-value');
                var name = values[values.length - 1];
                var value = $(this).val();
                var selfField = $(this);


                var baseName = $(this).attr('name');
                var newNameRequired = baseName.replace('default', 'yes-no-required');


                if (name.indexOf('minimum_age') !== -1 || name.indexOf('minimum_age_adult') !== -1
                    || name.indexOf('maximum_attendance') !== -1) {
                    if (value === null || value === undefined || (value !== null && value !== undefined && value.trim() === '')) {

                        var selector = 'input[name="' + newNameRequired + '"]';

                        var field = "";
                        if (name.indexOf('minimum_age_adult') !== -1) {
                            field = "Minimum Age (w/ adult)";
                        }

                        else if (name.indexOf('minimum_age') !== -1) {
                            field = "Minimum Age";
                        }

                        else if (name.indexOf('maximum_attendance') !== -1) {
                            field = "Maximum Attendance";
                        }


                        var message = "The default value for " + field + " can be blank only if this field is required. The Initial Value was restored";
                        if ($(selector).is(':checked') === false) {
                            isThereError = true;
                            Swal.fire({
                                title: "",
                                icon: "error",
                                text: message,
                                confirmButtonText: "Ok"
                            });
                            selfField.val(originalValue);

                        }

                    }
                }



            });


            //verify configuration related to scheduleType and registrationType
            $('#first-step-vol-opp-form-fields-management select#role-select option').each(function () {
                var roleName = $(this).text();
                var roleId = $(this).val();

                var selectedScheduleTypeOptions = $('#default-' + roleId + '--schedule_type--options').val();
                var selectedRegistrationTypeOptions = $('#default-' + roleId + '--registration_type--options').val();

                if (selectedScheduleTypeOptions === '' || selectedScheduleTypeOptions === null) {
                    isThereError = true;
                    message += '\n You must choose at least one option for Schedule Type field.  Please review the configuration for   ' + roleName;
                } else if (selectedRegistrationTypeOptions === '' || selectedRegistrationTypeOptions === null) {
                    isThereError = true;
                    message += '\n You must choose at least one option for Registration Type field.  Please review the configuration for   ' + roleName;
                } else {

                    if (selectedScheduleTypeOptions.includes('Date & Time Specific') === true && (selectedRegistrationTypeOptions.includes("Sign Up") || selectedRegistrationTypeOptions.includes("Express Interest")) === false) {
                        isThereError = true;
                        message += "\n You've selected Date & Time Specific as possible schedule type, you must choose at least one of the registration types allowed for it. Please review the configuration for " + roleName;
                    }

                    if (selectedScheduleTypeOptions.includes('Individually Scheduled') === true && (selectedRegistrationTypeOptions.includes("Express Interest with Schedule") || selectedRegistrationTypeOptions.includes("Express Interest Only")) === false) {
                        isThereError = true;
                        message += "\n You've selected Individually Scheduled as possible schedule type, you must choose at least one of the registration types allowed for it. Please review the configuration for " + roleName;
                    }
                }

                if (isThereError === true) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: message,
                        confirmButtonText: "Ok"
                    });
                }

            });

            if (isThereError === true) {
                return;
            }


            //verifying defaults with incorrect values.
            $('#first-step-vol-opp-form-fields-management').find('.vo-settings:visible').find('input.default-value-field').each(function () {
                var values = $(this).attr('name').split('--');
                var name = values[values.length - 1];
                var value = $(this).val();

                if (name.indexOf('registration_cutoff') !== -1 || name.indexOf('minimum_age') !== -1
                    || name.indexOf('minimum_age_adult') !== -1 || name.indexOf('minimum_attendance') !== -1
                    || name.indexOf('maximum_attendance') !== -1 || name.indexOf('maximum_age') !== -1) {
                    if (value !== null && value !== undefined && value !== "") {
                        var valueInt = parseInt(value);
                        if (valueInt < 0) {
                            isThereError = true;
                            if (name.indexOf('registration_cutoff') !== -1)
                                message += 'Registration cutoff (hours) can not be less than 0\n';
                            else if (name.indexOf('minimum_age_adult') !== -1)
                                message += 'Minimum Age (w/ adult) can not be less than 0\n';
                            else if (name.indexOf('minimum_age') !== -1)
                                message += 'Minimum Age can not be less than 0\n';
                            else if (name.indexOf('maximum_age') !== -1)
                                message += 'Maximum Age can not be less than 0\n';
                            else if (name.indexOf('maximum_attendance') !== -1)
                                message += 'Maximum Attendance can not be less than 0\n';
                            else if (name.indexOf('minimum_attendance') !== -1)
                                message += 'Minimum Attendance can not be less than 0\n';
                        }

                    }
                }
            });

            if (isThereError === true && message != '') {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: message,
                    confirmButtonText: "Ok"
                });
                return;
            }

            var formData = $("#first-step-vol-opp-form-fields-management").serializeObject();
            var urlToSend = urlSite + "set-vo-form-settings/FirstPageVolunteerOpportunity";
            $.ajax({
                method: "POST",
                url: urlToSend,
                data: formData,
                beforeSend: function () {
                    $('#fisrt-pag-vol-opp-form-settings-edit-backend').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status.toString() === "200") {

                    Swal.fire({
                        title: "",
                        icon: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    }).then(function (result) {
                        $('#fisrt-pag-vol-opp-form-settings-edit-backend').foundation('close');
                        location.reload();

                    });


                }
                else if (jsonResult.status.toString() === "500") {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    });
                }

                //Hide processing screen
                $('#fisrt-pag-vol-opp-form-settings-edit-backend').find('.processing_screen').hide();
                return false;
            });
            return false;
        });
        $(document).on('click', '#first-step-vol-opp-form-fields-management input[type=checkbox]', function () {
            var name = $(this).attr('name');

            if (name !== undefined) {
                if (name.indexOf("required") > 0) {
                    name = name.replace("required", "visible");
                    if ($(this).is(':checked')) {
                        $('#' + name).prop('checked', true);
                    }

                    if (name.indexOf("primary_impact_area") > 0 && $(this).is(':checked') == false) {
                        Swal.fire({
                            title: "",
                            icon: "warning",
                            text: "Be sure to update page layout in Salesforce to remove requirement of Primary Impact Area",
                            confirmButtonText: "Ok"
                        });
                    }
                    if (name.indexOf("location_") > 0 && $(this).is(':checked') == false) {
                        Swal.fire({
                            title: "",
                            icon: "warning",
                            text: "Be sure to update page layout in Salesforce to remove requirement",
                            confirmButtonText: "Ok"
                        });
                    }
                }
                if (name.indexOf("visible") > 0) {
                    var rid = $('#role-select').val();

                    var isScheduleOrRegistrationType = false;
                    var fieldBaseName = '';

                    if (name.indexOf('schedule_type') > 0) {
                        isScheduleOrRegistrationType = true;
                        fieldBaseName = '--schedule_type';
                    } else if (name.indexOf('registration_type') > 0) {
                        isScheduleOrRegistrationType = true;
                        fieldBaseName = '--registration_type';
                    }

                    name = name.replace("visible", "required");

                    if ($(this).is(':checked') == false) {
                        $('#' + name).prop('checked', false);

                        if (isScheduleOrRegistrationType === true) { // then , all the available options must be checked and the field marked as not editable
                            $('#default-' + rid + fieldBaseName + '--options option').prop("selected", "selected");
                            $('#default-' + rid + fieldBaseName + '--options').multiselect('reload');
                            $('#default-' + rid + fieldBaseName + '--options').trigger('change');
                            $('#span-' + rid + fieldBaseName + '--options div.ms-options-wrap').addClass("custom-disabled");
                        }
                    } else {
                        if (isScheduleOrRegistrationType === true) {
                            $('#span-' + rid + fieldBaseName + '--options div.ms-options-wrap').removeClass("custom-disabled");
                        }
                    }
                    if (name.indexOf("minimum_age_adult") > 0) {
                        var role = $(this).attr('name').replace("--minimum_age_adult", "").replace("yes-no-visible-", "");
                        if ($(this).is(':checked') == false) {
                            $("#default-" + role + "--minimum_age_adult").hide();
                            $("#span-" + role + "--minimum_age_adult").text("Automatically set to same age as Minimum Age");
                        } else {

                            $("#span-" + role + "--minimum_age_adult").text("");
                            $("#span-" + role + "--minimum_age_adult").append('<input name=default-' + role + '--minimum_age_adult' + ' id=default-' + role + '--minimum_age_adult' + ' value="1">');
                            $("#default-" + role + "--minimum_age_adult").show();
                        }
                    }

                    if (name.indexOf("type") > 0) {
                        var role = $(this).attr('name').replace("--type", "").replace("yes-no-visible-", "");

                        if ($(this).is(':checked') == false) {
                            $(".activity-type-" + role).hide();
                            $(".training-type-" + role).hide();
                        } else {
                            $(".activity-type-" + role).show();
                            $(".training-type-" + role).show();
                        }
                    }

                    if (name.indexOf("activity_type") > 0) {
                        var role = $(this).attr('name').replace("--activity_type", "").replace("yes-no-visible-", "");

                        if ($(this).is(':checked') == false) {
                            $(".training-type-" + role).hide();
                        } else {
                            $(".training-type-" + role).show();
                        }
                    }

                }
            }


        });
    }
}

function GetDropdownValuesSettings(formBlocks) {
    var items = '';
    formBlocks.forEach(function (formBlock) {
        items = items + '<option value="' + formBlock.value + '">' + formBlock.label + '</option>';
    });
    return items;
}

function IsFieldsEdit(array, name) {
    var bol = false;
    array.forEach(function (temp) {
        if (temp == name)
            bol = true;
    });
    return bol;
}

function opportunity_custom_form_build(roleID, field, items, object_name, addFieldForHigherPrivilege, showFieldForHigherPrivilege, fieldNameForHigherPrivilegeUsers) {
    var addAdvancedFields = false;
    var mainLIClass = '';

    // This is to hide the recurrence sp from first step volunteer opportunity  configuration
    if (field.indexOf('recurrence_custom_form') != -1) {
        mainLIClass = 'hide';
        showFieldForHigherPrivilege = false;
    }
    if (addFieldForHigherPrivilege !== undefined && addFieldForHigherPrivilege === true && fieldNameForHigherPrivilegeUsers !== undefined)
        addAdvancedFields = true;

    var option = '<select class="vo-form-blocks" name="formblock-' + roleID + '--' + field + '" id="formblock-' + roleID + '--' + field + '" disabled="disabled">' +
        items +
        '</select>';

    var formRow = '<li class="' + mainLIClass + ' row  vo-settings set-' + roleID + '" style="display:none">' +
        '<div class="small-4 columns">' +
        '<span >' + object_name + '</span>' +
        '</div>' +
        '<div class="small-4 columns">';

    if (addAdvancedFields === true && showFieldForHigherPrivilege === true) {
        formRow += '<div class="small-7 columns"><span style="padding-top:15px">' + window.translation.for_regular_users + '</span></div>' +
            '<div class="small-5 columns switch large">';
    } else {
        formRow += '<div class="switch large">';
    }


    formRow += '<input class="switch-input switch-form-block" id="yes-no-enabled-' + roleID + '--' + field + '" type="checkbox" name="yes-no-enabled-' + roleID + '--' + field + '">' +
        '<label class="switch-paddle" for="yes-no-enabled-' + roleID + '--' + field + '">' +
        '<span class="show-for-sr">Enabled?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span>' +
        '<span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span>' +
        '</label>' +
        '</div>';

    formRow += '</div>' +
        '<div class="small-4 columns">' +
        '<span id="span-' + roleID + '--' + field + '">' + option + '</span>';


    formRow += '</div>' +
        '</li>';

    if (addAdvancedFields === true) {

        var optionHigherPrivilege = '<select class="vo-form-blocks" name="formblock-' + roleID + '--' + fieldNameForHigherPrivilegeUsers + '" id="formblock-' + roleID + '--' + fieldNameForHigherPrivilegeUsers + '" disabled="disabled">' +
            items +
            '</select>';
        var cssSpecialClass = "";
        if (showFieldForHigherPrivilege === false)
            cssSpecialClass = "hide";

        formRow += '<li class="row ' + cssSpecialClass + ' vo-settings set-' + roleID + '" style="display:none">' +
            '<div class="small-4 columns">' +
            '<span ></span>' +
            '</div>' +
            '<div class="small-4 columns">' +
            '<div class="small-7 columns"><span style="padding-top:15px">' + window.translation.for_higher_privilege_user + '</span></div>';

        formRow += '<div class="small-5 columns switch large">' +
            '<input class="switch-input switch-form-block" id="yes-no-enabled-' + roleID + '--' + fieldNameForHigherPrivilegeUsers + '" type="checkbox" name="yes-no-enabled-' + roleID + '--' + fieldNameForHigherPrivilegeUsers + '">' +
            '<label class="switch-paddle" for="yes-no-enabled-' + roleID + '--' + fieldNameForHigherPrivilegeUsers + '">' +
            '<span class="show-for-sr">Enabled?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span>' +
            '<span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span>' +
            '</label>' +
            '</div>';

        formRow += '</div>' +
            '<div class="small-4 columns">' +
            '<span id="span-' + roleID + '--' + fieldNameForHigherPrivilegeUsers + '">' + optionHigherPrivilege + '</span>';


        formRow += '</div>' +
            '</li>';
    }
    return formRow;
}

function SetValueSettings(array, editFields, roleId, countrylist) {
    var schedule_type = "Date & Time Specific";
    var registration_type = 'Sign Up';
    var bol_location = false;
    var schedule_type_options = []
    var registration_type_options = []

    if ($('#default-' + roleId + '--location_country').length > 0) {
        $('#default-' + roleId + '--location_country').append(countrylist);
        $('#default-' + roleId + '--location_country').val("United States");
    } else if ($('select[name*="location_country"]').length > 0) {
        /*  $('select[name*="location_country"]').append(countrylist);
          $('select[name*="location_country"]').val("United States");*/
    }
    
    if (array != null && array.length > 0) {
        array.forEach(function (settingField) {
            var name = "-" + roleId + '--' + settingField.name;
            $('#default-' + name).val();
            $('#span-' + name).text();

            if (settingField.name === "url-print-check-in-sheet-ps" || settingField.name === "url-print-check-in-sheet-vl") {
                $('input[name="' + settingField.name + '"]').val(settingField.text);
            }
            

            if (settingField.visible) {
                if (name.indexOf('opportunity_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', true);
                    $('#formblock' + name).prop('disabled', false);
                }
                else if (name.indexOf('occurrence_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', true);
                    $('#formblock' + name).prop('disabled', false);
                }
                else if (name.indexOf('recurrence_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', true);
                    $('#formblock' + name).prop('disabled', false);
                } else if (name.indexOf('opportunity_higher_pivilege_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', true);
                    $('#formblock' + name).prop('disabled', false);
                } else if (name.indexOf('occurrence_higher_pivilege_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', true);
                    $('#formblock' + name).prop('disabled', false);
                } else if (name.indexOf('recurrence_higher_pivilege_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', true);
                    $('#formblock' + name).prop('disabled', false);
                }

                else {
                    $('input#yes-no-visible' + name).prop('checked', true);
                }
            }
            else {

                if (name.indexOf('opportunity_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', false);
                    $('#formblock' + name).prop('disabled', true);
                }
                else if (name.indexOf('occurrence_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', false);
                    $('#formblock' + name).prop('disabled', true);
                }
                else if (name.indexOf('recurrence_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', false);
                    $('#formblock' + name).prop('disabled', true);
                } else if (name.indexOf('opportunity_higher_pivilege_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', false);
                    $('#formblock' + name).prop('disabled', true);
                } else if (name.indexOf('occurrence_higher_pivilege_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', false);
                    $('#formblock' + name).prop('disabled', true);
                } else if (name.indexOf('recurrence_higher_pivilege_custom_form') != -1) {
                    $('input#yes-no-enabled' + name).prop('checked', false);
                    $('#formblock' + name).prop('disabled', true);
                }
                else {
                    $('input#yes-no-visible' + name).prop('checked', false);
                    $('input#yes-no-required' + name).prop('checked', false);
                }
            }
            if (settingField.required) {
                $('input#yes-no-required' + name).prop('checked', true);
                $('input#yes-no-visible' + name).prop('checked', true);
            }
            else {
                $('input#yes-no-required' + name).prop('checked', false);
            }
            if (settingField.name.indexOf("location") != -1)
                bol_location = true;
            if (IsFieldsEdit(editFields, settingField.name)) {

                if (settingField.text != null && settingField.text != "") {
                    $('#default' + name).val(settingField.text);
                    $('#default' + name).attr("data-original-value", settingField.text);
                    if (settingField.name == "schedule_type") {
                        schedule_type = settingField.text;
                        schedule_type_options = settingField.options;
                    }
                    if (settingField.name == "registration_type") {
                        registration_type = settingField.text;
                        registration_type_options = settingField.options;
                    }
                }
            } else {
                if (settingField.name != "genders_served" && settingField.name.indexOf("opportunity_custom_form") == -1 && settingField.name.indexOf("occurrence_custom_form") == -1 && settingField.name.indexOf("recurrence_custom_form") == -1 && settingField.name.indexOf("_higher_pivilege_custom_form") == -1) {
                    $('#span' + name).text(settingField.text);
                }
                else if (settingField.name.indexOf("opportunity_custom_form") != -1) {
                    $('#formblock' + name).val(settingField.text);
                }
                else if (settingField.name.indexOf("occurrence_custom_form") != -1) {
                    $('#formblock' + name).val(settingField.text);
                }
                else if (settingField.name.indexOf("recurrence_custom_form") != -1) {
                    $('#formblock' + name).val(settingField.text);
                } else if (settingField.name.indexOf("opportunity_higher_pivilege_custom_form") != -1) {
                    $('#formblock' + name).val(settingField.text);
                } else if (settingField.name.indexOf("occurrence_higher_pivilege_custom_form") != -1) {
                    $('#formblock' + name).val(settingField.text);
                } else if (settingField.name.indexOf("recurrence_higher_pivilege_custom_form") != -1) {
                    $('#formblock' + name).val(settingField.text);
                }
                else {
                    $('#span' + name).text("All Genders Served");
                }
            }
        });
    }

    if (schedule_type_options != null && schedule_type_options.length > 0) {
        $('#default-' + roleId + '--schedule_type').empty();
        schedule_type_options.forEach(function (item) {
            $('#default-' + roleId + '--schedule_type').append($('<option>', { value: item, text: item }));
        });

        $('#default-' + roleId + '--schedule_type--options').val(schedule_type_options);
        sessionStorage.setItem('last_schedule_option' + roleId, schedule_type_options + '');

        if (schedule_type_options.includes('Date & Time Specific') === false) {
            // remove form registration type all the items related to it
            $('#default-' + roleId + '--registration_type--options option[value="Sign Up"]').remove();
            $('#default-' + roleId + '--registration_type--options option[value="Express Interest"]').remove();
            $('#default-' + roleId + '--registration_type--options optgroup[label="Date & Time Specific"]').remove();
        }

        if (schedule_type_options.includes('Individually Scheduled') === false) {
            // remove form registration type all the items related to it
            $('#default-' + roleId + '--registration_type--options option[value="Express Interest with Schedule"]').remove();
            $('#default-' + roleId + '--registration_type--options option[value="Express Interest Only"]').remove();
            $('#default-' + roleId + '--registration_type--options optgroup[label="Individually Scheduled"]').remove();
        }
    }

    if (registration_type_options != null && registration_type_options.length > 0) {
        $('#default-' + roleId + '--registration_type').empty();
        registration_type_options.forEach(function (item) {
            $('#default-' + roleId + '--registration_type').append($('<option>', { value: item, text: item }));
        });

        $('#default-' + roleId + '--registration_type--options').val(registration_type_options);
        sessionStorage.setItem('last_registration_option' + roleId, registration_type_options + '');

    }
    //Schedule Type , now this values are based on the configured
	/*
    if (schedule_type == "Date & Time Specific") {
        $('#default-' + roleId + '--registration_type').append($('<option>', { value: 'Sign Up', text: 'Sign Up' }));
        $('#default-' + roleId + '--registration_type').append($('<option>', { value: 'Express Interest', text: 'Express Interest' }));
    }
    else {
        $('#default-' + roleId + '--registration_type').append($('<option>', { value: 'Express Interest with Schedule', text: 'Express Interest with Schedule' }));
        $('#default-' + roleId + '--registration_type').append($('<option>', { value: 'Express Interest Only', text: 'Express Interest Only' }));
    }*/
    $('#default-' + roleId + '--schedule_type').val(schedule_type);
    $('#default-' + roleId + '--registration_type').val(registration_type);
    if ($('#default-' + roleId + '--registration_type').val() == null)
        $('#default-' + roleId + '--registration_type').val("Sign Up");

    //Static Setting
    $('input#yes-no-visible-' + roleId + '--coordinator').prop('checked', true);
    $('input#yes-no-required-' + roleId + '--coordinator').prop('checked', true);
    $('input#yes-no-visible-' + roleId + '--location').prop('checked', true);
    $('input#yes-no-required-' + roleId + '--location').prop('checked', true);
    $('input#yes-no-visible-' + roleId + '--description').prop('checked', true);
    $('input#yes-no-required-' + roleId + '--description').prop('checked', true);
    //location
    if (!bol_location) {
        var name = "-" + roleId + '--location_';
        $("input[id*='" + name + "']").each(function (i, el) {
            $(this).prop('checked', true);
        });
    }



}

function getActivableBlocks(array, name, globalArray, cmsPrivilegesArray) {
    var bol = false;
    if (array !== null && array !== undefined && array.length > 0)
        $.each(array, function (index, result) {
            if (result.name == name)
                bol = result.active;
        });
    var bolGlobal = false;
    if (globalArray !== null && globalArray !== undefined && globalArray.length > 0)
        $.each(globalArray, function (index, result) {
            if (result.Code == name)
                bolGlobal = true;
        });

    var namePrivileges = name;
    switch (name) {
        case 'feature_opps':
            namePrivileges = 'FeatureOpps';
            break;
        case 'listing_cms':
            namePrivileges = 'ListingCMS';
            break;
        case 'search_result':
            namePrivileges = 'SearchResult';
            break;
        case 'first_step_volunteer_opportunity_form':
            namePrivileges = 'FirstStepVOForm';
            break;
    }
    var bolPrivileges = false;
    if (cmsPrivilegesArray !== null && cmsPrivilegesArray !== undefined && cmsPrivilegesArray.length > 0)
        $.each(cmsPrivilegesArray, function (index, result) {
            if (result == namePrivileges)
                bolPrivileges = true;
        });
    return (bol || bolGlobal || bolPrivileges);
}

function getActivableBlocksByGlobal(name, globalArray) {
    var bolGlobal = false;
    var value = "";
    if (globalArray !== null && globalArray !== undefined && globalArray.length > 0)
        $.each(globalArray, function (index, result) {
            if (result.Code == name)
                bolGlobal = true;
        });
    if (bolGlobal)
        value = "global-restricted";
    return value;
}

function backend_code_injection_settings() {
    if (!is_backend_page()) return;

    $(document).on('click', 'a[data-element-reveal="code-injection-edit-backend"]', function () {
        var siteID = $(this).data('site-id');
        var elementReveal = $(this).data('element-reveal');
        $('#' + elementReveal).find('.CodeMirror').remove();

        //Adding code mirror
        var textarea1 = document.getElementById("CssContent");
        var editorCss = CodeMirror.fromTextArea(textarea1, {
            extraKeys: { "Ctrl-Space": "autocomplete" },
            autoRefresh: true,
            lineNumbers: true,
            styleActiveLine: true,
            matchBrackets: true,
            lineWrapping: true
        });
        textarea2 = document.getElementById("JavaScriptLibrary");
        var editorjsLib = CodeMirror.fromTextArea(textarea2, {
            extraKeys: { "Ctrl-Space": "autocomplete" },
            autoRefresh: true,
            lineNumbers: false,
            styleActiveLine: true,
            matchBrackets: true,
        });
        textarea3 = document.getElementById("JavaScriptHeader");
        var editorjsHeader = CodeMirror.fromTextArea(textarea3, {
            extraKeys: { "Ctrl-Space": "autocomplete" },
            autoRefresh: true,
            lineNumbers: true,
            styleActiveLine: true,
            matchBrackets: true,
            lineWrapping: true,
        });
        textarea4 = document.getElementById("JavaScriptBody");
        var editorjsBody = CodeMirror.fromTextArea(textarea4, {
            extraKeys: { "Ctrl-Space": "autocomplete" },
            autoRefresh: true,
            lineNumbers: true,
            styleActiveLine: true,
            matchBrackets: true,
            lineWrapping: true,
        });




        clearCodeInjectionForm(elementReveal, true, editorCss, editorjsHeader, editorjsLib, editorjsBody);
        $('#' + elementReveal).find('input[name=SiteID]').val(siteID);
        $('#' + elementReveal).foundation('open');

        var allFine = populateSiteWideInformation(elementReveal, editorCss, editorjsHeader, editorjsLib, editorjsBody);
        if (allFine) {
            var selector = '#' + elementReveal + " input[name=SourceType]";
            if ($(selector).length > 0) {
                $(selector).change(function () {
                    var value = $(this).val();
                    clearCodeInjectionForm(elementReveal, true, editorCss, editorjsHeader, editorjsLib, editorjsBody);
                    if (value == "perpage") {
                        populatePerpageInformation(elementReveal, siteID, editorCss, editorjsHeader, editorjsLib, editorjsBody);
                    } else if (value == "sitewide") {
                        populateSiteWideInformation(elementReveal, editorCss, editorjsHeader, editorjsLib, editorjsBody);
                    }
                });
            }
        }
    });
}


function clearCodeInjectionForm(elementReveal, disableSelect, editorCss, editorJs, editorLib, editorJsBody) {
    var selector = '#' + elementReveal + ' #searchpages';
    if (disableSelect == true)
        $(selector).addClass('hide');
    $('#' + elementReveal).find('input[name=OptionToSave]').val("0");
    $('#' + elementReveal).find('input[type=submit]').prop("disabled", true);
    $('#' + elementReveal).find('input[type=submit]').addClass("disabled");
    $('#' + elementReveal).find('textarea[name=CssContent]').val("");
    $('#' + elementReveal).find('textarea[name=JavaScriptHeader]').val("");
    $('#' + elementReveal).find('textarea[name=JavaScriptBody]').val("");
    $('#' + elementReveal).find('textarea[name=JavaScriptLibrary]').val("");
    $('#' + elementReveal).find('select[name=Position]').val("1");
    $('#' + elementReveal).find('input[name=EnableCss]').prop("checked", false);
    $('#' + elementReveal).find('input[name=EnableJavaScript]').prop("checked", false);
    if (editorCss !== null && editorCss !== undefined) {
        editorCss.setValue('');
    }
    if (editorJs !== null && editorJs !== undefined) {
        editorJs.setValue('');
    }
    if (editorJsBody !== null && editorJsBody !== undefined) {
        editorJsBody.setValue('');
    }
    if (editorLib !== null && editorLib !== undefined) {
        editorLib.setValue('');
    }
}
function populatePerpageInformation(elementReveal, siteID, editorCss, editorJs, editorLib, editorBody) {
    var selector = '#' + elementReveal + ' #searchpages';
    $(selector).removeClass('hide');
    selector += " select[name=PageToRender]"
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if ($(selector).length > 0) {
        $(selector).html("");
    }
    $.ajax({
        method: "GET",
        url: urlSite + 'CodeInjection/GetPages/',
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status == "1") {
            $(selector).append($("<option></option>").text("--Select--"));
            jsonResult.pages.forEach(function (item) {
                $(selector).append($("<option></option>").text(item.name).attr("value", item.id));
            });
            $(selector).change(function () {
                var value = $(this).val();
                if (value == '--Select--') {
                    clearCodeInjectionForm(elementReveal, false, editorCss, editorJs, editorLib, editorBody);
                } else {
                    clearCodeInjectionForm(elementReveal, false, editorCss, editorJs, editorLib, editorBody);
                    loadPageInformation(elementReveal, value, editorCss, editorJs, editorLib, editorBody);
                }
            });
        } else {
            Swal.fire({
                title: "",
                icon: "error",
                text: jsonResult.message,
                confirmButtonText: "Ok"
            });
        }
        $('#' + elementReveal).find('.processing_screen').hide();
    });
}

function loadPageInformation(elementReveal, id, editorCss, editorJs, editorLib, editorBody) {
    var allFine = true;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $.ajax({
        method: "GET",
        url: urlSite + 'CodeInjection/GetCMSInformationPerPage/' + id,
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status == "1") {
            $('#' + elementReveal).find('input[name=OptionToSave]').val("2");
            $('#' + elementReveal).find('input[type=submit]').prop("disabled", false);
            $('#' + elementReveal).find('input[type=submit]').removeClass("disabled");
            $('#' + elementReveal).find('input[name=SiteID]').val(jsonResult.SiteID);
            $('#' + elementReveal).find('input[name=ID]').val(jsonResult.ID);
            $('#' + elementReveal).find('input[name=SiteAddonID]').val(jsonResult.SiteAddonID);
            if (editorCss !== null && editorCss !== undefined) {
                if (jsonResult.CssContent != null && jsonResult.CssContent !== undefined && jsonResult.CssContent.trim() !== "") {
                    editorCss.setValue(jsonResult.CssContent);
                } else {
                    editorCss.setValue("");
                }

            }


            if (jsonResult.NewVersion === false) {
                if (editorJs !== null && editorJs !== undefined)
                    editorJs.setValue('');
                if (editorBody !== null && editorBody !== undefined)
                    editorBody.setValue('');
                if (jsonResult.Position === "2") {
                    if (editorJs !== null && editorJs !== undefined) {
                        if (jsonResult.JavaScriptContent !== null && jsonResult.JavaScriptContent !== undefined && jsonResult.JavaScriptContent.trim() !== "") {
                            editorJs.setValue(jsonResult.JavaScriptContent);
                        } else {
                            editorJs.setValue('');
                        }
                    }

                } else {
                    if (editorBody !== null && editorBody !== undefined) {
                        if (jsonResult.JavaScriptContent !== null && jsonResult.JavaScriptContent !== undefined && jsonResult.JavaScriptContent.trim() !== "") {
                            editorBody.setValue(jsonResult.JavaScriptContent);
                        } else {
                            editorBody.setValue('');
                        }
                    }

                }

            } else {
                if (editorBody !== null && editorBody !== undefined) {
                    if (jsonResult.JavaScriptBody !== null && jsonResult.JavaScriptBody !== undefined && jsonResult.JavaScriptBody.trim() !== "") {
                        editorBody.setValue(jsonResult.JavaScriptBody);
                    } else {
                        editorBody.setValue('');
                    }
                }

                if (editorJs !== null && editorJs !== undefined) {
                    if (jsonResult.JavaScriptHeader !== null && jsonResult.JavaScriptHeader !== undefined && jsonResult.JavaScriptHeader.trim() !== "") {
                        editorJs.setValue(jsonResult.JavaScriptHeader);
                    } else {
                        editorJs.setValue('');
                    }
                }

            }



            if (editorLib !== null && editorLib !== undefined) {
                if (jsonResult.JavaScriptLibrary !== null && jsonResult.JavaScriptLibrary !== undefined && jsonResult.JavaScriptLibrary.trim() !== "") {
                    editorLib.setValue(jsonResult.JavaScriptLibrary);
                } else {
                    editorLib.setValue('');
                }
            }
            $('#' + elementReveal).find('select[name=Position]').val(jsonResult.Position);
            if (jsonResult.EnableCss == true)
                $('#' + elementReveal).find('input[name=EnableCss]').prop("checked", true);
            if (jsonResult.EnableJavaScript === true)
                $('#' + elementReveal).find('input[name=EnableJavaScript]').prop("checked", true);

        } else if (jsonResult.status == "2") {
            $('#' + elementReveal).find('input[name=ID]').val("0");
            $('#' + elementReveal).find('input[name=OptionToSave]').val("2");
            $('#' + elementReveal).find('input[type=submit]').prop("disabled", false);
            $('#' + elementReveal).find('input[type=submit]').removeClass("disabled");
            $('#' + elementReveal).find('input[name=SiteID]').val(jsonResult.SiteID);
            $('#' + elementReveal).find('input[name=SiteAddonID]').val(jsonResult.SiteAddonID);

        } else {
            Swal.fire({
                title: "",
                icon: "error",
                text: jsonResult.message,
                confirmButtonText: "Ok"
            });
            allFine = false;

        }

        //Hide processing screen
        $('#' + elementReveal).find('.processing_screen').hide();
    });
    return allFine;
}

function populateSiteWideInformation(elementReveal, editorCss, editorJs, editorLib, editorjsBody) {
    var allFine = true;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $.ajax({
        method: "GET",
        url: urlSite + 'CodeInjection/GetCMSInformation',
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status == "1") {
            $('#' + elementReveal).find('input[name=OptionToSave]').val("1");
            $('#' + elementReveal).find('input[type=submit]').prop("disabled", false);
            $('#' + elementReveal).find('input[type=submit]').removeClass("disabled");
            $('#' + elementReveal).find('input[name=ID]').val(jsonResult.ID);
            $('#' + elementReveal).find('input[name=SiteID]').val(jsonResult.SiteID);
            $('#' + elementReveal).find('input[name=SiteAddonID]').val(jsonResult.SiteAddonID);
            if (editorCss !== null && editorCss !== undefined) {
                if (jsonResult.CssContent != null && jsonResult.CssContent !== undefined && jsonResult.CssContent.trim() !== "") {
                    editorCss.setValue(jsonResult.CssContent);
                } else {
                    editorCss.setValue("");
                }

            }

            if (jsonResult.NewVersion === false) {
                if (editorJs !== null && editorJs !== undefined)
                    editorJs.setValue('');
                if (editorjsBody !== null && editorjsBody !== undefined)
                    editorjsBody.setValue('');
                if (jsonResult.Position === "2") {
                    if (editorjsBody !== null && editorjsBody !== undefined) {
                        if (jsonResult.JavaScriptContent !== null && jsonResult.JavaScriptContent !== undefined && jsonResult.JavaScriptContent.trim() !== "") {
                            editorjsBody.setValue(jsonResult.JavaScriptContent);
                        } else {
                            editorjsBody.setValue('');
                        }
                    }

                } else {
                    if (editorJs !== null && editorJs !== undefined) {
                        if (jsonResult.JavaScriptContent !== null && jsonResult.JavaScriptContent !== undefined && jsonResult.JavaScriptContent.trim() !== "") {
                            editorJs.setValue(jsonResult.JavaScriptContent);
                        } else {
                            editorJs.setValue('');
                        }
                    }

                }
            }
            else {
                if (editorjsBody !== null && editorjsBody !== undefined) {
                    if (jsonResult.JavaScriptBody !== null && jsonResult.JavaScriptBody !== undefined && jsonResult.JavaScriptBody.trim() !== "") {
                        editorjsBody.setValue(jsonResult.JavaScriptBody);
                    } else {
                        editorjsBody.setValue('');
                    }
                }

                if (editorJs !== null && editorJs !== undefined) {
                    if (jsonResult.JavaScriptHeader !== null && jsonResult.JavaScriptHeader !== undefined && jsonResult.JavaScriptHeader.trim() !== "") {
                        editorJs.setValue(jsonResult.JavaScriptHeader);
                    } else {
                        editorJs.setValue('');
                    }
                }


            }


            if (editorLib !== null && editorLib !== undefined) {
                if (jsonResult.JavaScriptLibrary !== null && jsonResult.JavaScriptLibrary !== undefined && jsonResult.JavaScriptLibrary.trim() !== "") {
                    editorLib.setValue(jsonResult.JavaScriptLibrary);
                } else {
                    editorLib.setValue('');
                }
            }




            $('#' + elementReveal).find('select[name=Position]').val(jsonResult.Position);
            if (jsonResult.EnableCss == true)
                $('#' + elementReveal).find('input[name=EnableCss]').prop("checked", true);
            if (jsonResult.EnableJavaScript == true)
                $('#' + elementReveal).find('input[name=EnableJavaScript]').prop("checked", true);

        } else if (jsonResult.status == "2") {
            $('#' + elementReveal).find('input[name=ID]').val("0");
            $('#' + elementReveal).find('input[name=OptionToSave]').val("1");
            $('#' + elementReveal).find('input[type=submit]').prop("disabled", false);
            $('#' + elementReveal).find('input[type=submit]').removeClass("disabled");
            $('#' + elementReveal).find('input[name=SiteID]').val(jsonResult.SiteID);
            $('#' + elementReveal).find('input[name=SiteAddonID]').val(jsonResult.SiteAddonID);
        } else {
            Swal.fire({
                title: "",
                icon: "error",
                text: jsonResult.message,
                confirmButtonText: "Ok"
            });
            allFine = false;
        }

        //Hide processing screen
        $('#' + elementReveal).find('.processing_screen').hide();
    });

    return allFine;

}

function backend_multiselect_widget() {
    if (!is_backend_page()) return;
    //Event to multiselect of regions
    $(document).on('click', '.input_group_region_multiple .ms-options-wrap li.optgroup ul li label', function () {

        var ulparent = $(this).parents('ul').first();
        var liElement = $(this).parent();
        var parentModal = $(this).parents('.reveal').first();
        var selectMultiple = $(this).parents('.input_group_region_multiple').first().find('select[multiple="multiple"]').first();
        var checkboxElement = liElement.find('input[type="checkbox"]');
        var select2Span = $(this).parents('.input_group_region_multiple').first().find('.ms-options-wrap button span').first();
        var currentProp = checkboxElement.prop('checked');
        var pendingChangeField = $(this).parents('form').first().find('input[name="pending-changes"]');
        var currentValues = selectMultiple.val();
        //If checkbox is not checked, checked it and disable all checkboxes (Validate only if is not disabled)
        if (checkboxElement.is(':disabled') === false) {
            if (currentProp === false) {

                //Disable all others checkbox
                ulparent.find('input[type="checkbox"]').attr('disabled', 'disabled');
                ulparent.find('label').addClass('checkbox_disabled');

                
                

                //Remove disable of current checkbox
                checkboxElement.removeAttr('disabled');
                liElement.find('label').removeClass('checkbox_disabled');
                liElement.addClass('selected');
                checkboxElement.prop('checked', true);
                if (pendingChangeField !== null && pendingChangeField !== undefined)
                    pendingChangeField.val("true");

                var selectedID = checkboxElement.val();
                currentValues.push(selectedID);

            }
            else {
                liElement.removeClass('selected');
                checkboxElement.prop('checked', false);
                //Remove disable to all checkboxes
                ulparent.find('input[type="checkbox"]').removeAttr('disabled');
                ulparent.find('label').removeClass('checkbox_disabled');
                if (pendingChangeField !== null && pendingChangeField !== undefined)
                    pendingChangeField.val("true");

                var selectedID = checkboxElement.val();
                const index = currentValues.indexOf(selectedID);
                if (index > -1)
                    currentValues.splice(index, 1);

            }
        }
        selectMultiple.val(currentValues);

        var sizeItems = currentValues.length;
        if (sizeItems > 0) {
            select2Span.text(sizeItems + " Selected");
        } else {
            select2Span.text(window.translation.select_options);
        }

        //Validation to suggest resolution size if modal is image block or image slider block
        if (parentModal.attr('id') === 'blocks-image-configuration' ||
            parentModal.attr('id') === 'blocks-slider-conf') {
            var imageBlockId = parentModal.find('input[name="image_block_id"]').val();
            var blockId = parentModal.find('input[name="slider_block_id"]').val();

            if (parentModal.attr('id') === 'blocks-image-configuration') {
                blockId = imageBlockId;
            }

            setTimeout(function () {
                display_suggested_resolution_in_modal(parentModal, selectMultiple, false, blockId);
            }, 500);
        }
        else if (parentModal.attr('id') === 'sponsor-block-configuration') {
            var blockId = parentModal.find('input[name="block_id"]').val();

            setTimeout(function () {
                display_suggested_resolution_in_modal(parentModal, selectMultiple, true, blockId);
            }, 500);
        }
        else if (parentModal.attr('id') === 'corporate-image-configuration') {
            var blockId = parentModal.find('input[name="block_id"]').val();

            setTimeout(function () {
                display_suggested_resolution_in_modal(parentModal, selectMultiple, false, blockId);
            }, 500);
        }

        return false;
    });
}

function display_suggested_resolution_in_modal(parentModal, selectMultiple, isSponsor, blockId) {
    var elementSuggestion = parentModal.find('p.recommended-size');
    var textSuggestion = window.translation.recommended_resolution;  //Text of suggestion, template to include calculation.
    var recommendation = ''; //Information to recommend
    var regionsSelected = selectMultiple.val();
    var currentLayoutID = $('body').attr('data-layout-info');
    var modal = parentModal.attr("id");
    var isCorporateImageModal = (modal === 'corporate-image-configuration') ? true : false;
    var isRequiredAjaxCallRegionBlock = false;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var width = 0;
    var height = 0;
    var isCustom = false;

    if (!isSponsor) {
        if (regionsSelected) {
            var regionId = 0;
            var sizesDifferent = false;
            var idsToEvaluate = [];
            var are_equals = true;
            var procesedValidation = false;
            regionsSelected.forEach(function (regionItem) {
                var optionItem = selectMultiple.find('option[value="' + regionItem + '"]').first();
                var isNormalLayout = optionItem.attr('data-normal-layout');
                if (isNormalLayout == "True") {
                    idsToEvaluate.push(regionItem);
                }
            });

            if (idsToEvaluate.length === 0) {
                //only select mobile and /or tablet
                regionId = 0;
            } else if (idsToEvaluate.length == 1) {
                regionId = idsToEvaluate[0];
            } else if (idsToEvaluate.length > 1) {
                var textToSend = idsToEvaluate.join(',');
                $.ajax({
                    method: "POST",
                    url: urlSite + "Admin/GetRegionBlockRecordsByBlockIdRegionId",
                    data: { blockId: blockId, regionIds: textToSend },
                    beforeSend: function () {
                        parentModal.find('.recommended-size-loader').removeClass('hide-custom');
                        elementSuggestion.hide();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult != null) {
                        if (jsonResult.status == "ok") {
                            if (jsonResult.comparisonDetails != "compatible") {
                                elementSuggestion.empty();
                                elementSuggestion.text(window.translation.warning_image_multiregion);
                            } else {
                                procesedValidation = true;
                                var possibleRegionID = 0;
                                idsToEvaluate.forEach(function (regionItem) {
                                    var optionItem = selectMultiple.find('option[value="' + regionItem + '"]').first();
                                    var layoutID = optionItem.attr('data-info-layout');
                                    if (currentLayoutID === layoutID)
                                        possibleRegionID = regionItem;
                                });

                                if (possibleRegionID > 0) {
                                    regionId = possibleRegionID;
                                }

                                if (jsonResult.size == "custom") {
                                    width = jsonResult.width;
                                    height = jsonResult.height;
                                    isCustom = true;
                                }
                                process_recommendation(selectMultiple, elementSuggestion, isCorporateImageModal, regionId, modal, width, height, isCustom, true, blockId);
                            }
                        } else {
                            elementSuggestion.empty();
                            elementSuggestion.text(window.translation.warning_image_multiregion);
                        }
                    } else {
                        elementSuggestion.empty();
                        elementSuggestion.text(window.translation.warning_image_multiregion);
                    }
                    parentModal.find('.recommended-size-loader').addClass('hide-custom');
                    elementSuggestion.show();

                });


            }
            if (regionId !== 0 && procesedValidation == false) {
                process_recommendation(selectMultiple, elementSuggestion, isCorporateImageModal, regionId, modal, width, height, isCustom, false, blockId);
            }
            else if (sizesDifferent) {
                //Display warning of multiple regions
                elementSuggestion.empty();
                elementSuggestion.text(window.translation.warning_image_multiregion);
            }
        }
        else {
            elementSuggestion.empty();
            elementSuggestion.text(window.translation.select_region_to_recomend_resolution);
        }
    }
    else {
        elementSuggestion.empty();
        elementSuggestion.html(window.translation.recommended_resolution_sponsor);
    }
}

function assign_recommendations_size_to_html(modal, isCorporateImageModal, widthPx, heightPx, elementSuggestion) {
    var widthCorporateWithTitle = 0;
    var heightCorporateWithTitle = 0;
    var textSuggestion = window.translation.recommended_resolution;  //Text of suggestion, template to include calculation.

    // Validate if is corporate image block
    if (modal != null && isCorporateImageModal) {
        widthCorporateWithTitle = widthPx;
        heightCorporateWithTitle = heightPx;

        widthPx = Math.round(widthPx * 0.3);

        if (widthPx < heightPx) {
            heightPx = widthPx;
        }
    }

    //Create recommendations
    var recommendation1 = '<span>' + window.translation.minimum + ': ' + widthPx + ' x ' + heightPx + ' px </span>';
    var recommendation2 = '<span>' + window.translation.maximum + ': ' + (parseInt(widthPx) * 2) + ' x ' + (parseInt(heightPx) * 2) + ' px </span>';
    var recommendationCorporateMin = '<span>' + window.translation.minimum + ': ' + widthCorporateWithTitle + ' x ' + heightCorporateWithTitle + ' px </span>';
    var recommendationCorporateMax = '<span>' + window.translation.maximum + ': ' + (parseInt(widthCorporateWithTitle) * 2) + ' x ' + (parseInt(heightCorporateWithTitle) * 2) + ' px </span>';

    if (isCorporateImageModal) {
        var withTitle = '<span class="title-corporate">' + window.translation.with_title_slogan + '</span>';
        var withOutTitle = '<span class="title-corporate">' + window.translation.without_title_slogan + '</span>';
        textSuggestion = textSuggestion.replace('{pixels-size}', withTitle + recommendation1 + recommendation2 + withOutTitle + recommendationCorporateMin + recommendationCorporateMax);
    }
    else {
        textSuggestion = textSuggestion.replace('{pixels-size}', recommendation1 + recommendation2);
    }

    elementSuggestion.empty();
    elementSuggestion.html(textSuggestion);
}

function retrieve_resource_recommended_size_default(parentModal, isSponsors) {
    var recommendedSize = window.translation.recommended_size;
    var multiselectRegions = parentModal.find('select.no-custom-multiple[multiple="multiple"]');

    if (!isSponsors) {
        if (multiselectRegions.length > 0) {
            //Find if already exists a recommended size text
            var recommendedSizeElement = parentModal.find('p.recommended-size');
            var regionSelected = multiselectRegions.val();

            if (recommendedSizeElement.length > 0) {
                recommendedSize = recommendedSizeElement.html();
            }
            else {
                if (regionSelected) {
                    recommendedSize = '';
                }
                else {
                    recommendedSize = window.translation.select_region_to_recomend_resolution;
                }
            }
        }
    }
    else {
        recommendedSize = window.translation.recommended_resolution_sponsor;
    }

    return recommendedSize;
}

function open_invitation_code() {
    if (!is_backend_page()) return;
    if (window.location.hash) {
        if (window.location.hash.indexOf('open-invitation-code-block') != -1) {

            var blockID = 0;
            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetInvitationCodeId",
                data: {}
            }).done(function (data) {

                var jsonResult = JSON.parse(data);

                if (jsonResult.status === "200") {
                    blockID = jsonResult.BlockId;
                }


                var elementReveal = 'invitation-code-edit-backend';
                var languageId = parseInt($('#' + elementReveal).data('language-id'));
                var titleMenu = '';

                $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

                // Applying validation to invitation code block
                initiate_jquery_validate_reveal($('#invitation-code-management'), 'invitation-code-management');

                $('#' + elementReveal).foundation('open');

                //Reload components inside of modal
                $('#' + elementReveal).foundation();

                if (blockID != 0) {
                    // show delete link
                    $('#' + elementReveal).find('.delete_block').show();
                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/GetInvitationCodeInfo",
                        data: { blockId: blockID },
                        beforeSend: function () {
                            $('#' + elementReveal).find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status === "200") {
                            var visibleToValue = (jsonResult.visibleTo) ? jsonResult.visibleTo : '0';
                            //Reset form
                            $('#' + elementReveal + ' form')[0].reset();

                            //Assigning values
                            //1- Titles
                            jsonResult.titles.forEach(function (item) {
                                if (item.Key !== null) {
                                    var key = item.Key.ID;
                                    var value = item.Value;
                                    if (parseInt(key) == languageId) {
                                        titleMenu = value;
                                    }
                                    $('input[name="title-' + key + '"]').val(value);
                                }
                            });

                            //2- Show title, Show keywords, Show advanced link
                            if (jsonResult.showTitleToUser) {
                                $('#show_title_invitation_code').prop('checked', jsonResult.showTitleToUser);
                            }

                            //3- Advanced Settings
                            hideVisibleOptions(jsonResult.uniqueRegion, '#invitation-code-advanced-settings');
                            $('input[name="css_class_invitation_code"]').val(jsonResult.cssClass);
                            $('input[name="weight-invitation-code"]').val(jsonResult.weight);
                            if (jsonResult.enabled) {
                                $('#enabled-invitation-code').prop('checked', jsonResult.enabled);
                            }
                            $('input[name="visible_invitation_code__to"]#visibility_invitation_code_' + visibleToValue).prop('checked', true);
                            if (jsonResult.urls) {
                                $('#exception_url_invitation_code').val(jsonResult.urls.join('\n'));
                            }
                            if (jsonResult.visibleTo !== 0) {
                                $('#exception_url_container_invitation_code').removeClass('is-hidden');
                            }

                            //4- Hidden of block-id and search-id
                            $('#' + elementReveal).find('input[name="block_id"]').val(blockID);

                            //5 - Assigning system name of the block.
                            if (jsonResult.systemName !== "") {
                                $('input[name="invitation_system_name"]').val(jsonResult.systemName);
                            }

                            //6 - Assigning region to block
                            if (jsonResult.regionId !== "") {
                                $('select[name="invitation_region"]').val(jsonResult.regionId);
                            }

                            //7 - Multiregions field
                            if (jsonResult.regionsMultiple) {
                                //Apply multiselect widget to region select
                                apply_backend_multiselect_group('#' + elementReveal + ' select[name="invitation_region_multiple"]', false, jsonResult.regionsMultiple);
                            }
                        }

                        //Hide processing screen
                        $('#' + elementReveal).find('.processing_screen').hide();
                    });
                }
                else {
                    //Assing values by default
                    var formSelector = '#invitation-code-management';
                    $(formSelector + ' select[name="invitation_region"]').val($('select[name="invitation_region"] option:first-child').val());
                    $(formSelector + ' #enabled-invitation-code').prop('checked', true);
                    $('#exception_url_container_invitation_code').addClass('is-hidden');
                    $('#exception_url_invitation_code').val('');

                    //Hide delete link
                    $('#' + elementReveal).find('.delete_block').hide();

                    //Manage multiregions field
                    apply_backend_multiselect_group(formSelector + ' select[name="invitation_region_multiple"]', false, '');

                }

            });



        }


    }

}

function minAgeCOPAConfirm() {
    var age = parseInt($('#input-text--minimum_age_of_volunteer_for_registration').val());
    if (age < 13) {

        Swal.fire({
            title: "",
            text: window.translation.copa_warning,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            cancelButtonText: window.translation.cancel,
            confirmButtonText: window.translation.yes,
            closeOnConfirm: true

        }).then(function (result) {
            if (result.isConfirmed) {
                return true;
            } else {
                $('#input-text--minimum_age_of_volunteer_for_registration').val("13");
                return true;
            }
        });

    }
}

function calendar_form_settings_add_dependences_event() {
    if ($('body.backend-page').length > 0 && $('div#calendar-settings-edit-backend').length > 0) {
        $('div#calendar-settings-edit-backend').on('change', 'input[id="yes-no-visible--location_names"]', function () {
            if ($(this).is(':checked')) {
                verificate_calendar_settings_fields('div#calendar-settings-edit-backend input[id="yes-no-visible--zip"]', false);
                verificate_calendar_settings_fields('div#calendar-settings-edit-backend input[id="yes-no-visible--distance"]', false);
            } else {
                verificate_calendar_settings_fields('div#calendar-settings-edit-backend input[id="yes-no-visible--zip"]', true);
                verificate_calendar_settings_fields('div#calendar-settings-edit-backend input[id="yes-no-visible--distance"]', true);
            }
        });

        $('div#calendar-settings-edit-backend').on('change', 'input[id="yes-no-visible--zip"]', function () {
            if ($(this).is(':checked')) {
                verificate_calendar_settings_fields('div#calendar-settings-edit-backend input[id="yes-no-visible--location_names"]', false);
            } else {
                verificate_calendar_settings_fields('div#calendar-settings-edit-backend input[id="yes-no-visible--location_names"]', true);
                verificate_calendar_settings_fields('div#calendar-settings-edit-backend input[id="yes-no-visible--distance"]', false);
            }

        });

        $('div#calendar-settings-edit-backend').on('change', 'input[id="yes-no-visible--distance"]', function () {
            if ($(this).is(':checked')) {
                verificate_calendar_settings_fields('div#calendar-settings-edit-backend input[id="yes-no-visible--location_names"]', false);
                verificate_calendar_settings_fields('div#calendar-settings-edit-backend input[id="yes-no-visible--zip"]', true);
            }
        });
    }
}

function verificate_calendar_settings_fields(selector, value) {
    if ($(selector).length > 0)
        $(selector).prop('checked', value);
}

function event_toggle_advanced_search_block_modal(modal, locationEnabled) {
    if (locationEnabled) {
        modal.find('input[name="show-zipcode-field"]').prop('checked', false);
        modal.find('input[name="show-distance-field"]').prop('checked', false);
    }
    else {
        modal.find('input[name="show-location-field"]').prop('checked', false);
    }
}

function manage_opportunity_details_setting() {
    if ($('body.backend-page').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        if ($("#opportunity-detail-settings-edit-backend").length > 0) {
            if ($('#opp-setting-allow-multi-sign-up').length > 0) {

                $('#opp-setting-allow-multi-sign-up').on('change', function () {
                    if ($(this).is(':checked')) {
                        $('p.help-text.multi-signup-help').show();
                    } else
                        $('p.help-text.multi-signup-help').hide();
                });
            }
            $("#opportunity-detail-settings-edit-backend li.tabs-title").on("click", function () {
                $(this).parents(".opportunity-detail-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });

            $(document).on('click', '#opportunity-detail-settings-edit-backend .save-settings', function () {

                var formData = $("#opp-detail-fields-management").serializeObject();
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/SetOpportunityDetailSettings",
                    data: formData,
                    beforeSend: function () {
                        $('#opportunity-detail-settings-edit-backend').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult.status.toString() === "200") {
                        //Close modal and update page list
                        $('#opportunity-detail-settings-edit-backend').foundation('close');
                        location.reload();
                        Swal.fire({
                            title: "",
                            icon: "success",
                            text: "The settings were saved correctly",
                            confirmButtonText: "Ok",
                        });
                    }
                    else if (jsonResult.status.toString() === "500") {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: jsonResult.message,
                            confirmButtonText: "Ok",
                        });
                    }

                    //Hide processing screen
                    $('#opportunity-detail-settings-edit-backend').find('.processing_screen').hide();

                    return false;
                });
                return false;
            });

        }
        $(document).on('click', 'a[data-element-reveal="opportunity-detail-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');

            $('#' + elementReveal).foundation('open');

            $.ajax({
                method: "POST",
                url: urlSite + "admin/OpportunityDetailSettings",
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);
                if (dataResult) {
                    if (dataResult.Status == "200") {
                        $('#' + elementReveal).find('input[name="sign_up_button_type"][value="' + dataResult.OptionSignUp + '"]').prop('checked', true);
                        $('#' + elementReveal).find('input[name="express_interest_button_type"][value="' + dataResult.OptionExpressInterest + '"]').prop('checked', true);
                        $('#' + elementReveal).find('input[name="or_sign_up_with_team_button_type"][value="' + dataResult.OptionSignUpTeam + '"]').prop('checked', true);
                        $('#' + elementReveal).find('input[name="or_express_interest_with_team_button_type"][value="' + dataResult.OptionExpressInterestTeam + '"]').prop('checked', true);
                        if (dataResult.DisplayCoordinatorName == true)
                            $('#' + elementReveal).find('input[name="yes-no-visible--coordinator-name"]').prop('checked', true);
                        else
                            $('#' + elementReveal).find('input[name="yes-no-visible--coordinator-name"]').prop('checked', false);

                        if (dataResult.DisplayCoordinatorIcon == true)
                            $('#' + elementReveal).find('input[name="yes-no-visible--coordinator-icon"]').prop('checked', true);
                        else
                            $('#' + elementReveal).find('input[name="yes-no-visible--coordinator-icon"]').prop('checked', false);

                        dataResult.ButtonText.forEach(function (item) {

                            $('#' + elementReveal).find('input[name="' + item.FieldName + '-' + item.LanguageID + '"]').val(item.Value);
                        });

                        $('#' + elementReveal).find('input[name="yes-no-visible--coordinator-name"]').on('change', function () {
                            if (!$(this).is(':checked')) {
                                $('#' + elementReveal).find('input[name="yes-no-visible--coordinator-icon"]').prop('checked', false);
                            }
                        });
                        $('#' + elementReveal).find('input[name="yes-no-visible--coordinator-icon"]').on('change', function () {
                            if ($(this).is(':checked')) {
                                $('#' + elementReveal).find('input[name="yes-no-visible--coordinator-name"]').prop('checked', true);
                            }
                        });


                        $('#' + elementReveal + ' select#sort-occurrences').val(dataResult.SortOccurrences);

                        if ($('body.new-template-system').length > 0) {
                            if (dataResult.Templates !== null && dataResult.Templates !== undefined) {

                                $('#' + elementReveal).find('a.link-custom-system-page').on('click', function (e) {
                                    e.preventDefault();
                                    window.location.href = "/#custom-system-page-settings";
                                    window.location.reload();
                                    return false;
                                });


                                var options = '';
                                var selectedTemplate = 0;
                                var countLayouts = 0;
                                dataResult.Templates.forEach(function (item) {
                                    if (item.InUse === true)
                                        selectedTemplate = item.ID;
                                    countLayouts++;
                                    options += '<option value="' + item.ID + '">' + item.TemplateName + '</option>';

                                });
                                $('select#opp-setting-template-name').empty();
                                $('select#opp-setting-template-name').html(options);
                                $('select#opp-setting-template-name').val(selectedTemplate);

                                if (dataResult.RegionList !== undefined && dataResult.RegionList !== null) {
                                    var options = '';
                                    var selected = 0;
                                    var regionSearch = 0;
                                    if (dataResult.RegionSelected !== null && dataResult.RegionSelected !== undefined) {
                                        regionSearch = dataResult.RegionSelected;
                                    }
                                    dataResult.RegionList.forEach(function (item) {
                                        if (item.ID == regionSearch) {
                                            selected = regionSearch;
                                        }
                                        options += '<option value="' + item.ID + '">' + item.Name + '</option>';
                                    });
                                    $('select#opp-setting-region-image').empty();
                                    $('select#opp-setting-region-image').html(options);
                                    $('select#opp-setting-region-image').val(selected);
                                }


                                if (dataResult.RegionTabletList !== undefined && dataResult.RegionTabletList !== null) {
                                    var options = '';
                                    var selected = 0;
                                    var regionSearch = 0;
                                    if (dataResult.RegionTabletSelected !== null && dataResult.RegionTabletSelected !== undefined) {
                                        regionSearch = dataResult.RegionTabletSelected;
                                    }
                                    dataResult.RegionTabletList.forEach(function (item) {
                                        if (item.ID == regionSearch) {
                                            selected = regionSearch;
                                        }
                                        options += '<option value="' + item.ID + '">' + item.Name + '</option>';
                                    });
                                    $('select#opp-setting-region-image-tablet').empty();
                                    $('select#opp-setting-region-image-tablet').html(options);
                                    $('select#opp-setting-region-image-tablet').val(selected);
                                }

                                if (dataResult.RegionMobileList !== undefined && dataResult.RegionMobileList !== null) {
                                    var options = '';
                                    var selected = 0;
                                    var regionSearch = 0;
                                    if (dataResult.RegionMobileSelected !== null && dataResult.RegionMobileSelected !== undefined) {
                                        regionSearch = dataResult.RegionMobileSelected;
                                    }
                                    dataResult.RegionMobileList.forEach(function (item) {
                                        if (item.ID == regionSearch) {
                                            selected = regionSearch;
                                        }
                                        options += '<option value="' + item.ID + '">' + item.Name + '</option>';
                                    });
                                    $('select#opp-setting-region-image-mobile').empty();
                                    $('select#opp-setting-region-image-mobile').html(options);
                                    $('select#opp-setting-region-image-mobile').val(selected);
                                }

                                if (countLayouts > 1) {
                                    if (selectedTemplate !== 0 && selectedTemplate !== '0')
                                        $('#' + elementReveal).find('.image-region-position').show();
                                    else
                                        $('#' + elementReveal).find('.image-region-position').hide();
                                } else {
                                    $('#' + elementReveal).find('.image-region-position').hide();
                                    $('select#opp-setting-region-image').val('0');
                                    $('select#opp-setting-region-image-tablet').val('0');
                                    $('select#opp-setting-region-image-mobile').val('0');
                                }


                            }

                            if (dataResult.FormList !== undefined && dataResult.FormList !== null) {
                                var options = '';
                                dataResult.FormList.forEach(function (item) {
                                    options += '<option value="' + item.ID + '">' + item.Name + '</option>';
                                });
                                $('select#opp-setting-additional-fields').empty();
                                $('select#opp-setting-additional-fields').html(options);
                            }

                            if (dataResult.FormAdditionalFields !== null && dataResult.FormAdditionalFields != undefined) {

                                $("select#opp-setting-additional-fields").val(dataResult.FormAdditionalFields);
                            }


                            if (dataResult.OccListMode !== null && dataResult.OccListMode != undefined) {

                                $("select#opp-setting-occlist-mode").val(dataResult.OccListMode);
                            }

                            if (dataResult.OppSettingVisibleTo !== null && dataResult.OppSettingVisibleTo != undefined) {
                                if (dataResult.OppSettingVisibleTo == 0) {$('.row-setting-visible-to-rol').hide();}
                                $("select#opp-setting-visible-to").val(dataResult.OppSettingVisibleTo);
                            }
                            if (dataResult.OppSettingVisibleToRol !== null && dataResult.OppSettingVisibleToRol != undefined) {
                                $("select#opp-setting-visible-to-rol").val(dataResult.OppSettingVisibleToRol);
                            }
                            if (dataResult.DisplayMap !== undefined && dataResult.DisplayMap !== null) {
                                $("#opp-setting-display-map").prop('checked', dataResult.DisplayMap);
                            }

                            if (dataResult.DisplayLabelOcc !== undefined && dataResult.DisplayLabelOcc !== null) {
                                $("#opp-setting-display-label-occ").prop('checked', dataResult.DisplayLabelOcc);
                            }
                            if (dataResult.ShowOrganizationNameAndLink !== undefined && dataResult.ShowOrganizationNameAndLink !== null) {
                                $("#opp-setting-display-org-name-link").prop('checked', dataResult.ShowOrganizationNameAndLink);
                            } else {
                                $("#opp-setting-display-org-name-link").prop('checked', true);
                            }
                            if (dataResult.AllowMultiSignUp !== undefined && dataResult.AllowMultiSignUp !== null) {
                                $("#opp-setting-allow-multi-sign-up").prop('checked', dataResult.AllowMultiSignUp);
                                if (dataResult.AllowMultiSignUp === true)
                                    $('p.help-text.multi-signup-help').show();
                                else
                                    $('p.help-text.multi-signup-help').hide();
                            } else {
                                $("#opp-setting-allow-multi-sign-up").prop('checked', false);
                            }


                            if (dataResult.DisplayNextOccInPastOcc !== undefined && dataResult.DisplayNextOccInPastOcc !== null) {
                                $("#opp-setting-display-next-occ").prop('checked', dataResult.DisplayNextOccInPastOcc);
                            } else {
                                $("#opp-setting-display-next-occ").prop('checked', false);
                            }

                            $('#opp-setting-template-name').on('change', function () {
                                var valueSelected = $(this).val();
                                $('#' + elementReveal).find('.processing_screen').show();
                                $.ajax({
                                    method: "GET",
                                    url: urlSite + "admin/GetRegionsPerLayout?id=" + $(this).val()

                                }).done(function (data) {
                                    var dataResult = JSON.parse(data);
                                    if (dataResult.status === 200) {
                                        if (dataResult.listRegions !== undefined && dataResult.listRegions !== null) {
                                            var options = '';
                                            dataResult.listRegions.forEach(function (item) {
                                                options += '<option value="' + item.ID + '">' + item.Name + '</option>';
                                            });
                                            $('select#opp-setting-region-image').empty();
                                            $('select#opp-setting-region-image').html(options);
                                        }

                                        if (valueSelected !== 0 && valueSelected !== '0') {
                                            $('#' + elementReveal).find('.image-region-position').show();
                                        }
                                        else {
                                            $('#' + elementReveal).find('.image-region-position').hide();
                                            $('select#opp-setting-region-image').val('0');
                                            $('select#opp-setting-region-image-tablet').val('0');
                                            $('select#opp-setting-region-image-mobile').val('0');
                                        }
                                    } else {
                                        Swal.fire({
                                            title: "",
                                            icon: "error",
                                            text: dataResult.Message,
                                            confirmButtonText: "Ok"
                                        });

                                    }
                                    $('#' + elementReveal).find('.processing_screen').hide();
                                });
                            });

                            $('#opp-setting-visible-to').on('change', function () {
                                if ($(this).val() == 1) {
                                    $('.row-setting-visible-to-rol').show();
                                }else{
                                    $('.row-setting-visible-to-rol').hide();
                                }
                            });
                        }
                        var selectorSelect = 'select[name="social_network_multiple"]';
                        //$(selectorSelect).multiselect('unload');
                        if (dataResult.SocialNetworkMultiple !== undefined && dataResult.SocialNetworkMultiple !== null && dataResult.SocialNetworkMultiple !== '' && dataResult.SocialNetworkMultiple !== 'none') {
                            var avalues = dataResult.SocialNetworkMultiple.split(',');
                            $(selectorSelect).val(avalues);
                            //$(selectorSelect).multiselect('reload');
                        }

                        $(selectorSelect).multiselect({
                            'selectAll': true,
                            'columns': 1,
                            'showCheckbox': true,
                            'texts': {
                                placeholder: window.translation.select_options,
                                search: window.translation.search,
                                selectedOptions: ' ' + window.translation.selected,
                                selectAll: window.translation.select_all
                            }
                        });


                    } else if (dataResult.Status == "500") {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: dataResult.Message,
                            confirmButtonText: "Ok"
                        });
                    }
                }
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        });
    }
}

function backend_contact_page_form_settings() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    if ($('body.backend-page').length > 0) {
        $(document).on('click', 'a[data-element-reveal="contact-pages-form-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            $('#' + elementReveal).foundation('open');
            $.ajax({
                method: "GET",
                url: urlSite + "get-contact-form-settings",
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);

                if (dataResult.status == 'ok') {
                    var src_html = "";
                    $('#' + elementReveal).find('ul#list-contact-form').html("");
                    $('#' + elementReveal).find('ul#list-contact-form-custom').html("");
                    dataResult.data.forEach(function (item) {

                        src_html += get_item_contact_form(item);
                    });


                    $('#' + elementReveal).find('ul#list-contact-form').append(src_html);
                    var customFormActivated = dataResult.customFormActivated;
                    if (customFormActivated == true) {
                        var formBlocks = JSON.parse(dataResult.formBlocks);
                        var src_html_custom_block = get_item_custom_contact_form("contact_custom_form", formBlocks);
                        $('#' + elementReveal).find('ul#list-contact-form-custom').append(src_html_custom_block);
                    }


                    dataResult.data.forEach(function (item) {

                        add_current_response(item, elementReveal, '');
                    });

                    if ($('#' + elementReveal + ' #yes-no-visible--contact_type').length > 0) {
                        $('#' + elementReveal).on('change', 'input[id="yes-no-visible--contact_type"]', function () {
                            if ($(this).is(':checked')) {
                                $('#' + elementReveal).find('input[id="yes-no-required--contact_type"]').prop('checked', true);
                            }
                        });
                    }
                    if ($('#' + elementReveal + ' #yes-no-required--contact_type').length > 0) {
                        $('#' + elementReveal).on('change', 'input[id="yes-no-required--contact_type"]', function () {
                            if (!$(this).is(':checked')) {
                                $('#' + elementReveal).find('input[id="yes-no-visible--contact_type"]').prop('checked', false);
                            }
                        });
                    }

                    $('#' + elementReveal).find('input#id_form').val(dataResult.id);
                    $('#' + elementReveal).find('input#site_id').val(dataResult.siteId);
                    $('#' + elementReveal).find('.processing_screen').hide();
                    
                } else {
                    $('#' + elementReveal).find('.processing_screen').hide();
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: dataResult.Message,
                        confirmButtonText: "Ok",
                    });
                }
            });

            $(document).on('click', '.switch-form-block', function () {
                if ($(this).prop('checked')) {
                    $(this).closest('li').find('select').prop('disabled', false);
                }
                else {
                    $(this).closest('li').find('select').prop('disabled', true);
                }

            });

            //Get info of settings saved in database


        });


        $(document).on('click', '#contact-pages-form-settings-edit-backend .save-settings', function () {
            var elementReveal = 'contact-pages-form-settings-edit-backend';
            $('#' + elementReveal).find('.processing_screen').show();
            var formData = $("#contact-page-setting-form-fields").serializeObject();
            $.ajax({
                method: "POST",
                url: urlSite + "save-contact-form-settings",
                data: formData,
                beforeSend: function () {
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status.toString() === "200") {
                    //Close modal and update page list
                    $('#opportunity-detail-settings-edit-backend').foundation('close');
                    location.reload();
                    Swal.fire({
                        title: "",
                        icon: "success",
                        text: "The settings were saved correctly",
                        confirmButtonText: "Ok"
                    });
                }
                else if (jsonResult.status.toString() === "500") {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"
                    });
                }

                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();

                return false;
            });

            return false;
        });
    }
}

function Export_pages_to_scv(){
    if ($('body.backend-page').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $(document).on('click', 'a.custom-button-export-pages', function(event) {
            event.preventDefault();
            $.ajax({
                method: "GET",
                url: urlSite + "admin/PagesDownloadCSV",
                xhrFields: {
                    responseType: 'blob'
                }
            }).done(function (data) {
                var url = window.URL.createObjectURL(new Blob([data]));
                var a = document.createElement('a');
                a.href = url;
                var date = new Date().toLocaleString();
                a.download = 'pages-export-'+date+'-file.csv';
                document.body.appendChild(a);
                a.click();
                window.URL.revokeObjectURL(url);
            }).fail(function (jqXHR, textStatus, errorThrown) {
                console.error('Error AJAX:', textStatus, errorThrown);
            });
        });

    }
}

function backend_connection_page_form_settings() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    if ($('body.backend-page').length > 0) {
        $(document).on('click', 'a[data-element-reveal="connection-pages-form-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            $('#' + elementReveal).foundation('open');
            $.ajax({
                method: "GET",
                url: urlSite + "get-connection-form-settings",
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);

                if (dataResult.code != null && dataResult.code == '200') {
                    //Include listing of fields with options visible and
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').empty();
                    $('#' + elementReveal).find('.listing-fields-volunteer-custom ul').empty();
                    var customFormActivated = dataResult.customFormActivated;
                    var labels = JSON.parse(dataResult.labels);
                    var fields = JSON.parse(dataResult.fields);
                    var disabledEditFields = JSON.parse(dataResult.disabledEditFields);
                    var settings = JSON.parse(dataResult.settings);


                    var src_html = "";
                    $('#' + elementReveal).find('ul#list-connection-form').html("");
                    $('#' + elementReveal).find('ul#list-connection-form-custom').html("");
                    fields.forEach(function (item) {
                        var pos = fields.indexOf(item);
                        src_html += get_item_connection_form(item, labels[pos], disabledEditFields);
                    });

                    $('#' + elementReveal).find('ul#list-connection-form').append(src_html);

                    if (customFormActivated == true) {
                        var formBlocks = JSON.parse(dataResult.formBlocks);
                        var src_html_custom_block = get_item_custom_connection_form("connection_custom_form", formBlocks);
                        $('#' + elementReveal).find('ul#list-connection-form-custom').append(src_html_custom_block);
                    }
                    settings.forEach(function (item) {
                        add_current_response(item, elementReveal, 'connection');
                    });
                    disabledEditFields.forEach(function (item) {
                        form_name = 'connection';
                        $('#' + elementReveal).find('ul#list-' + form_name + '-form li #yes-no-visible--' + item).prop('checked', true);
                        $('#' + elementReveal).find('ul#list-' + form_name + '-form li #yes-no-required--' + item).prop('checked', true);
                    });
                    $('#' + elementReveal).find('.processing_screen').hide();
                } else {
                    $('#' + elementReveal).find('.processing_screen').hide();
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: dataResult.message,
                        confirmButtonText: "Ok"
                    });
                }
            });


            $(document).on('click', '.switch-form-block', function () {
                if ($(this).prop('checked')) {
                    $(this).closest('li').find('select').prop('disabled', false);
                }
                else {
                    $(this).closest('li').find('select').prop('disabled', true);
                }
            });

            //Get info of settings saved in database


        });

        if ($("#connection-page-setting-form-fields").length > 0) {
            $(document).on('click', '#connection-page-setting-form-fields .save-settings', function () {

                var formData = $("#connection-page-setting-form-fields").serializeObject();
                $.ajax({
                    method: "POST",
                    url: urlSite + "set-form-settings/ConnectionPage",
                    data: formData,
                    beforeSend: function () {
                        $('#connection-pages-form-settings-edit-backend').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult.status.toString() === "200") {
                        //Close modal and update page list
                        $('#connection-pages-form-settings-edit-backend').foundation('close');

                        var referrerURL = jsonResult.referrerURL.toString();
                        window.location.href = referrerURL;

                        Swal.fire({
                            title: "",
                            icon: "success",
                            text: "The settings were saved correctly",
                            confirmButtonText: "Ok"
                        });

                    }
                    else if (jsonResult.status.toString() === "500") {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: jsonResult.message,
                            confirmButtonText: "Ok"
                        });
                    }

                    //Hide processing screen
                    $('#connection-pages-form-settings-edit-backend').find('.processing_screen').hide();

                    return false;
                });
                return false;
            });
        }
    }
}

function add_default_fields_team_setting_members_page() {
    var html_text = '<li class="row title"><span class="title-section">' + window.translation.team_members_title + '</span></li>';

    html_text += '<li class="row">';
    var title = window.translation.first_name;
    html_text += '<div class="small-3 columns"><span class="required"  data-required="*">' + title + '</span></div>';
    html_text += '<div class="small-3 columns"><div class="switch large"><input id="yes-no-visible--firstname" class="switch-input" type="checkbox" name="yes-no-visible--firstname" checked disabled><label class="switch-paddle" for="yes-no-visible--firstname"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-3 columns"><div class="switch large" ><input id="yes-no-required--firstname" class="switch-input" type="checkbox" name="yes-no-required--firstname" checked disabled ><label class="switch-paddle" for="yes-no-required--firstname"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-3 columns" style="display:none" ><input id="text-firstname" name="text-firstname" type="text"/></div>';
    html_text += '</li>';

    title = window.translation.last_name;
    html_text += '<li class="row">';
    html_text += '<div class="small-3 columns"><span class="required"  data-required="*">' + title + '</span></div>';
    html_text += '<div class="small-3 columns"><div class="switch large"><input id="yes-no-visible--lastname" class="switch-input" type="checkbox" name="yes-no-visible--lastname" checked disabled><label class="switch-paddle" for="yes-no-visible--lastname"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-3 columns"><div class="switch large" ><input id="yes-no-required--lastname" class="switch-input" type="checkbox" name="yes-no-required--lastname"  checked disabled><label class="switch-paddle" for="yes-no-required--lastname"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-3 columns" style="display:none" ><input id="text-lastname" name="text-lastname" type="text"/></div>';
    html_text += '</li>';


    return html_text;
}

function add_default_fields_team_setting_custom_fields_page() {
    var html_text = '<li class="row title"><span class="title-section">' + window.translation.fields + '</span></li>';
    return html_text;
}

function add_default_fields_team_setting__page() {

    var html_text = '<li class="row title" ><span class="title-section">' + window.translation.team_information_title + '</span></li>';

    html_text += '<li class="row">';
    var title = window.translation.team_name;
    html_text += '<div class="small-3 columns"><span class="required"  data-required="*">' + title + '</span></div>';
    html_text += '<div class="small-3 columns"><div class="switch large"><input id="yes-no-visible--team_name" class="switch-input" type="checkbox" name="yes-no-visible--team_name" checked disabled><label class="switch-paddle" for="yes-no-visible--team_name"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-3 columns"><div class="switch large" ><input id="yes-no-required--team_name" class="switch-input" type="checkbox" name="yes-no-required--team_name" checked disabled ><label class="switch-paddle" for="yes-no-required--team_name"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-3 columns" style="display:none" ><input id="text-firstname" name="text-team_name" type="text"/></div>';
    html_text += '</li>';

    return html_text;
}
function get_item_contact_form(item, isTeam) {
    if (item.name == "contact_custom_form" || item.name == "team_custom_form")
        return "";
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
    var html_text = "";
    var displayDefaultText = "";
    var disabled = "";
    if (isTeam === undefined) {
        isTeam = false;
    } else if (isTeam === true) {
        displayDefaultText = "style='display:none'";
        if (item.name == "team_captain")
            disabled = "disabled";

        if (item.name == "email") {
            html_text += add_default_fields_team_setting_members_page();
        }

        if (item.name == instancePrefix + "Type_of_Group__c") {
            html_text += add_default_fields_team_setting_custom_fields_page();
        }
    }


    html_text += '<li class="row">';
    var title = (window.translation[item.name] != null && window.translation[item.name] != undefined ? window.translation[item.name] : item.name);
    html_text += '<div class="small-3 columns"><span>' + title + '</span></div>';
    html_text += '<div class="small-3 columns"><div class="switch large"><input id="yes-no-visible--' + item.name + '" class="switch-input" type="checkbox" name="yes-no-visible--' + item.name + '"><label class="switch-paddle" for="yes-no-visible--' + item.name + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-3 columns"><div class="switch large" ><input id="yes-no-required--' + item.name + '" class="switch-input" type="checkbox" name="yes-no-required--' + item.name + '" ' + disabled + '><label class="switch-paddle" for="yes-no-required--' + item.name + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-3 columns" ' + displayDefaultText + ' ><input id="text-' + item.name + '" name="text-' + item.name + '" type="text"/></div>';
    html_text += '</li>';
    return html_text;
}

function get_item_connection_form(field_name, field_label, disabled_setting) {
    if (field_name == "connetion_custom_form")
        return "";

    var displayDefaultText = "";
    var disabled = "", disabled_class = "";
    if (disabled_setting.indexOf(field_name) != -1) {
        disabled = "disabled";
        disabled_class = "non-editable";
    }
    var html_text = '<li class="row">';
    var title = (field_label);
    html_text += '<div class="small-4 columns"><span class="' + disabled + ' ' + disabled_class + '">' + title + '</span></div>';
    html_text += '<div class="small-4 columns"><div class="switch large"><input id="yes-no-visible--' + field_name + '" class="switch-input" type="checkbox" name="yes-no-visible--' + field_name + '" ' + disabled + '><label class="switch-paddle" for="yes-no-visible--' + field_name + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-4 columns"><div class="switch large" ><input id="yes-no-required--' + field_name + '" class="switch-input" type="checkbox" name="yes-no-required--' + field_name + '" ' + disabled + '><label class="switch-paddle" for="yes-no-required--' + field_name + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    //html_text += '<div class="small-3 columns" ' + displayDefaultText + ' ><input id="text-' + field_name + '" name="text-' + field_name + '" type="text"/></div>';
    html_text += '</li>';
    return html_text;
}

function get_item_custom_contact_form(field, formBlocks) {
    var items = '';
    formBlocks.forEach(function (formBlock) {
        items = items + '<option value="' + formBlock.value + '">' + formBlock.label + '</option>';
    });
    var option = '<select class="contact-form-blocks" name="formblock--' + field + '" id="formblock--' + field + '" disabled="disabled">' +
        items +
        '</select>';
    var html_text = '<li class="row">';
    html_text += '<div class="small-4 columns"><div class="switch large"><input id="yes-no-enabled--' + field + '" class="switch-input switch-form-block" type="checkbox" name="yes-no-enabled--' + field + '"><label class="switch-paddle" for="yes-no-enabled--' + field + '"><span class="show-for-sr">Enabled?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-8 columns"><span id="span--' + field + '">' + option + '</span></div>';
    html_text += '</li>';
    return html_text;
}

function get_item_custom_connection_form(field, formBlocks) {
    var items = '';
    formBlocks.forEach(function (formBlock) {
        items = items + '<option value="' + formBlock.value + '">' + formBlock.label + '</option>';
    });
    var option = '<select class="connection-form-blocks" name="formblock--' + field + '" id="formblock--' + field + '" disabled="disabled">' +
        items +
        '</select>';
    var html_text = '<li class="row">';
    html_text += '<div class="small-4 columns"><div class="switch large"><input id="yes-no-enabled--' + field + '" class="switch-input switch-form-block" type="checkbox" name="yes-no-enabled--' + field + '"><label class="switch-paddle" for="yes-no-enabled--' + field + '"><span class="show-for-sr">Enabled?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div>';
    html_text += '<div class="small-8 columns"><span id="span--' + field + '">' + option + '</span></div>';
    html_text += '</li>';
    return html_text;
}
function add_current_response(item, elementReveal, obj) {
    var form_name = 'contact';
    if (obj == 'connection')
        form_name = 'connection';

    if (item.name == "contact_custom_form") {
        add_current_response_contact_form(item, elementReveal);
    }
    else if (item.name == "connection_custom_form") {
        add_current_response_connection_form(item, elementReveal);
    }
    else if (item.name == "team_custom_form") {
        add_current_response_team_form(item, elementReveal);
    }
    else {
        if (item.visible == true)
            $('#' + elementReveal).find('ul#list-' + form_name + '-form li #yes-no-visible--' + item.name).prop('checked', true);
        if (item.required == true)
            $('#' + elementReveal).find('ul#list-' + form_name + '-form li #yes-no-required--' + item.name).prop('checked', true);
        if (item.text != null)
            $('#' + elementReveal).find('ul#list-' + form_name + '-form li #text-' + item.name).val(item.text);
    }
}

function add_current_response_team_form(item, elementReveal) {
    if (item.visible == true) {
        $('#' + elementReveal).find('ul#list-team-form-custom li #yes-no-enabled--' + item.name).prop('checked', true);
        $('#' + elementReveal).find('ul#list-team-form-custom select.contact-form-blocks').val(item.text);
        $('#' + elementReveal).find('ul#list-team-form-custom select.contact-form-blocks').prop('disabled', false);
    }
}

function add_current_response_contact_form(item, elementReveal) {
    if (item.visible == true) {
        $('#' + elementReveal).find('ul#list-contact-form-custom li #yes-no-enabled--' + item.name).prop('checked', true);
        $('#' + elementReveal).find('ul#list-contact-form-custom select.contact-form-blocks').val(item.text);
        $('#' + elementReveal).find('ul#list-contact-form-custom select.contact-form-blocks').prop('disabled', false);
    }
}

function add_current_response_connection_form(item, elementReveal) {
    if (item.visible == true) {
        $('#' + elementReveal).find('ul#list-connection-form-custom li #yes-no-enabled--' + item.name).prop('checked', true);
        $('#' + elementReveal).find('ul#list-connection-form-custom select.connection-form-blocks').val(item.text);
        $('#' + elementReveal).find('ul#list-connection-form-custom select.connection-form-blocks').prop('disabled', false);
    }
}
function GetOptionDisplayName(name) {
    display_name = name;
    if (name == "year_only")
        display_name = "Birth Year";
    else if (name == "day_month")
        display_name = "Birth Month and Day";
    else if (name == "over_default")
        display_name = "Over Age Checkbox";
    else if (name == "full_hide")
        display_name = "Hide Birthdate";
    else if (name == "default")
        display_name = "Full Birthdate";
    return display_name;
}

function retrieve_recommended_size_section(recommendedSizeText) {
    var text = '<p class="recommended-size">' + recommendedSizeText + '</p>'
        + '<div class="recommended-size-loader hide-custom">'
        + '<span>' + window.translation.please_wait + '</span>'
        + '<div class="icon-div" data-icon="ei-spinner" data-size="s"></div>'
        + '</div>';
    return text;
}

function process_recommendation(selectMultiple, elementSuggestion, isCorporateImageModal, regionId, modal, width, height, isCustom, fromService, blockId) {

    //Calculate suggestion of region selected
    var optionSelected = selectMultiple.find('option[value="' + regionId + '"]').first();
    var widthPx = optionSelected.attr('data-width');
    var heightPx = optionSelected.attr('data-height');
    var hasPageSizer = optionSelected.attr('data-has-pagesizer');
    if (isCustom == true && fromService == true) {
        widthPx = width;
        heightPx = height;
    } else if (fromService == false) {
        widthPx = $('#container-block-' + blockId).attr('data-block-width');
        heightPx = $('#container-block-' + blockId).attr('data-block-height');

        if (widthPx == null || widthPx == undefined || widthPx == 0)
            widthPx = optionSelected.attr('data-width');
        if (heightPx == null || heightPx == undefined || heightPx == 0)
            heightPx = optionSelected.attr('data-height');

    }

    //Validate if region has pagesizer
    if (parseInt(hasPageSizer)) {
        if (parseInt(widthPx) > 1024) {
            widthPx = 1024;
        }
    }

    if (parseInt(heightPx) === 0) { //When height is auto, recommend same height of width
        heightPx = widthPx;
    }
    else {
        heightPx = heightPx - 10; //This fix is to validate the padding of block container
    }


    assign_recommendations_size_to_html(modal, isCorporateImageModal, widthPx, heightPx, elementSuggestion);

}

function backend_team_page_form_settings() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
    if ($('body.backend-page').length > 0) {
        $(document).on('click', 'a[data-element-reveal="team-pages-form-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            $('#' + elementReveal).foundation('open');
            $('#' + elementReveal).foundation();
            $.ajax({
                method: "GET",
                url: urlSite + "get-setting-form-team",
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);
                if (dataResult.status == 'ok') {
                    var src_html = "";

                    $('#' + elementReveal).find('ul#list-contact-form').html("");
                    $('#' + elementReveal).find('ul#list-contact-form-custom').html("");
                    dataResult.introText.forEach(function (item) {
                        var fieldName = "#" + item.FieldName + "-" + item.LanguageID;
                        $(fieldName).val(item.Value);
                    });
                    dataResult.data.forEach(function (item) {
                        src_html += get_item_contact_form(item, true);
                    });

                    // Additional Form Block
                    var customFormActivated = dataResult.customFormActivated;
                    if (customFormActivated == true) {
                        var formBlocks = JSON.parse(dataResult.formBlocks);
                        var src_html_custom_block = get_item_custom_contact_form("team_custom_form", formBlocks);
                        $('#' + elementReveal).find('ul#list-team-form-custom').html('');
                        $('#' + elementReveal).find('ul#list-team-form-custom').append(src_html_custom_block);
                    }

                    src_html = add_default_fields_team_setting__page() + src_html;

                    $('#' + elementReveal).find('ul#list-contact-form').append(src_html);

                    dataResult.data.forEach(function (item) {
                        add_current_response(item, elementReveal, '');
                    });

                    $('#' + elementReveal).find('input#yes-no--apply-default-settings').on("change", function () {
                        var isChecked = ($(this).prop('checked')) ? true : false;
                        $('#' + elementReveal).find('ul#list-contact-form input[type="checkbox"]').prop('disabled', isChecked);

                        $('#' + elementReveal).find('ul#list-contact-form input[name*="team_name"]').prop('disabled', true);
                        $('#' + elementReveal).find('ul#list-contact-form input[name*="firstname"]').prop('disabled', true);
                        $('#' + elementReveal).find('ul#list-contact-form input[name*="lastname"]').prop('disabled', true);
                        $('#' + elementReveal).find('ul#list-contact-form input[name="yes-no-required--team_captain"]').prop('disabled', true);

                    });

                    $('#' + elementReveal).find('ul#list-contact-form input[name^="yes-no-visible--"]').on('change', function () {
                        var isChecked = ($(this).prop('checked')) ? true : false;
                        if (!isChecked) {
                            var name = $(this).prop("name");
                            name = name.replace('visible', 'required');
                            $('ul#list-contact-form input[name="' + name + '"]').prop('checked', false);
                        }
                    });

                    $('#' + elementReveal).find('ul#list-contact-form input[name^="yes-no-required--"]').on('change', function () {
                        var isChecked = ($(this).prop('checked')) ? true : false;
                        if (isChecked) {
                            var name = $(this).prop("name");
                            name = name.replace('required', 'visible');
                            $('ul#list-contact-form input[name="' + name + '"]').prop('checked', true);
                        }
                    });

                    if (dataResult.applyDefaultSettings === true || dataResult.applyDefaultSettings === "True") {
                        $('#' + elementReveal).find('input#yes-no--apply-default-settings').prop('checked', true);
                        $('#' + elementReveal).find('ul#list-contact-form input[type="checkbox"]').prop('disabled', true);
                    }


                    if (dataResult.useOrganizationLookup === true || dataResult.useOrganizationLookup === "True") {
                        $('#' + elementReveal).find('input#yes-no-visible--use-organization-lookup').prop('checked', true);
                    }

                    if (dataResult.companyDependsOfTypeOfGroup === true || dataResult.companyDependsOfTypeOfGroup === "True") {
                        $('#' + elementReveal).find('input#yes-no-visible--company-depends-of-type-of-group').prop('checked', true);
                    }

                    $('#' + elementReveal).find('ul#list-contact-form input[name^="yes-no-visible--' + instancePrefix + 'Type_of_Group__c"]').on('change', function () {
                        var isTypeOfGroupChecked = ($(this).prop('checked')) ? true : false;
                        var isUseOrganizationLookupChecked = ($('#' + elementReveal).find('#yes-no-visible--use-organization-lookup').prop('checked')) ? true : false;

                        if (isTypeOfGroupChecked && isUseOrganizationLookupChecked) {
                            $('#' + elementReveal).find('input[name="yes-no-visible--company-depends-of-type-of-group"]').prop('disabled', false);
                        } else {
                            $('#' + elementReveal).find('input[name="yes-no-visible--company-depends-of-type-of-group"]').prop('checked', false);
                            $('#' + elementReveal).find('input[name="yes-no-visible--company-depends-of-type-of-group"]').prop('disabled', true);
                        }
                    });

                    $('#' + elementReveal).find('#yes-no-visible--use-organization-lookup').on('change', function () {
                        var isUseOrganizationLookupChecked = ($(this).prop('checked')) ? true : false;
                        var isTypeOfGroupChecked = ($('#' + elementReveal).find('#yes-no-visible--' + instancePrefix + 'Type_of_Group__c').prop('checked')) ? true : false;
                        if (isTypeOfGroupChecked && isUseOrganizationLookupChecked) {
                            $('#' + elementReveal).find('input[name="yes-no-visible--company-depends-of-type-of-group"]').prop('disabled', false);
                        } else {
                            $('#' + elementReveal).find('input[name="yes-no-visible--company-depends-of-type-of-group"]').prop('checked', false);
                            $('#' + elementReveal).find('input[name="yes-no-visible--company-depends-of-type-of-group"]').prop('disabled', true);
                        }
                    });

                    if ($('#yes-no-visible--' + instancePrefix + 'Type_of_Group__c').length == 0) {
                        $('li.company-depends-of-type-of-group').hide();
                    }
                    $("li.tabs-title").on("click", function () {
                        $(this).parents(".my-teams-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
                    });

                    $(".team-page-ckeditor").each(function () {
                        initialize_ckeditor_ars($(this).attr("id"), "");
                    });

                    $('#' + elementReveal).find('input#id_form').val(dataResult.id);
                    $('#' + elementReveal).find('input#site_id').val(dataResult.siteId);
                    $('#' + elementReveal).find('.processing_screen').hide();
                    $(document).on('click', '#' + elementReveal + ' .save-settings', function () {
                        $('#' + elementReveal).find('.processing_screen').show();
                        for (var i in CKEDITOR.instances) {
                            if (CKEDITOR.instances[i].name.indexOf("team_page_my_team") != -1 || CKEDITOR.instances[i].name.indexOf("opp_signup_team") != -1 || CKEDITOR.instances[i].name.indexOf("opp_express_team") != -1 || CKEDITOR.instances[i].name.indexOf("title_captain_teams") != -1 || CKEDITOR.instances[i].name.indexOf("title_member_teams") != -1) {

                                $("#" + CKEDITOR.instances[i].name).text(escape(CKEDITOR.instances[i].getData()));
                                $("#" + CKEDITOR.instances[i].name).val(escape(CKEDITOR.instances[i].getData()));
                            }
                        }
                        var formData = $("#team-page-setting-form-fields").serializeObject();
                        $.ajax({
                            method: "POST",
                            url: urlSite + "save-team-form-settings",
                            data: formData,
                            beforeSend: function () {
                            }
                        }).done(function (data) {
                            var jsonResult = JSON.parse(data);

                            if (jsonResult.status.toString() === "200") {
                                //Close modal and update page list
                                $('#opportunity-detail-settings-edit-backend').foundation('close');
                                location.reload();
                                Swal.fire({
                                    title: "",
                                    icon: "success",
                                    text: "The settings were saved correctly",
                                    confirmButtonText: "Ok"
                                });
                            }
                            else if (jsonResult.status.toString() === "500") {
                                Swal.fire({
                                    title: "",
                                    icon: "error",
                                    text: jsonResult.message,
                                    confirmButtonText: "Ok"
                                });
                            }

                            //Hide processing screen
                            $('#' + elementReveal).find('.processing_screen').hide();

                            return false;
                        });

                        return false;
                    });
                } else {
                    $('#' + elementReveal).find('.processing_screen').hide();
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: dataResult.Message,
                        confirmButtonText: "Ok"
                    });
                }
            });


            $(document).on('click', '.switch-form-block', function () {
                if ($(this).prop('checked')) {
                    $(this).closest('li').find('select').prop('disabled', false);
                }
                else {
                    $(this).closest('li').find('select').prop('disabled', true);
                }

            });

            //Get info of settings saved in database


        });
    }
}
// backend columns list settings in Sharing Portal
function backend_columns_list_settings() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var listName = "";
    if ($('body.backend-page').length > 0) {
        $(document).on('click', 'a[data-element-reveal="columns-list-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            listName = $(this).data('list-name');
            var settings;

            var listTitle = '';
            if (listName == 'SharingPortalOpportunitiesList')
                listTitle = window.translation.volunteer_opportunities;
            if (listName == 'SharingPortalOppDetailConnectionsList')
                listTitle = window.translation.opp_detail_connections_list;
            if (listName == 'SharingPortalOppDetailOccurrencesList')
                listTitle = window.translation.opp_detail_occurrences_list;
            if (listName == 'SharingPortalReportAttendanceConnectionsList')
                listTitle = window.translation.report_attendance_list;
            if (listName == 'SharingPortalContactsList')
                listTitle = window.translation.contacts_list;
            if (listName == 'SharingPortalLocations')
                listTitle = window.translation.locations_list;
            if (listName == 'SharingPortalConnetionsByContactList')
                listTitle = window.translation.cont_detail_connections_list

            var versionLink = $('#' + elementReveal).find('h3').find('a');
            $('#' + elementReveal).find('h3').html(listTitle + ' - ' + window.translation.columns_visibility);
            versionLink.attr('data-page-name', listName);
            $('#' + elementReveal).find('h3').append(versionLink);

            versionLink.on("click", function () {
                $("#rollback-list").parent("div.reveal-overlay").css("z-index", "2000");
            });

            $('#' + elementReveal).foundation('open');
            //Get info of settings saved in database
            $.ajax({
                method: "POST",
                url: urlSite + "get-column-list-settings",
                data: {
                    "listName": listName
                },
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);
                $('#' + elementReveal).find('.processing_screen').hide();

                if (dataResult) {


                    //Include listing of fields with options visible and
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').empty();
                    $('#' + elementReveal).find('.row-filters').hide();
                    if (dataResult.displayfilter===true) {
                        $('#' + elementReveal).find('.row-filters').show();
                    }
                    $('#' + elementReveal).find('.listing-fields-volunteer-custom ul').empty();
                    var role = JSON.parse(dataResult.roles);
                    var customFormActivated = dataResult.customFormActivated;
                    var labels = JSON.parse(dataResult.labels);
                    var fields = JSON.parse(dataResult.fields);
                    var editFields = JSON.parse(dataResult.editFields);
                    var disabledEditFields = JSON.parse(dataResult.disabledEditFields);
                    var booleanFields = JSON.parse(dataResult.booleanFields);

                    if (dataResult.additionalSettings !== null && dataResult.additionalSettings != undefined) {
                        var additionalSettings = JSON.parse(dataResult.additionalSettings);
                        if (additionalSettings !== null) {
                            additionalSettings.forEach(function (field) {
                                $('#' + elementReveal).find('#' + field.name).prop('checked', field.visible);
                            });
                        }
                        
                    }
                    


                    var countField = 0;
                    $('#' + elementReveal).find("#role-select").empty();
                    //Fill the Select Role
                    role.forEach(function (field) {
                        if (field.name == "Partner Staff")
                            $('#' + elementReveal).find("#role-select").append('<option value="' + field.ID + '"selected>' + field.name + '</option>');
                        else if (field.name != "System Administrator" && field.name != "Staff" && field.name != "Client Administrator")
                            $('#' + elementReveal).find("#role-select").append('<option value="' + field.ID + '">' + field.name + '</option>');
                    });
                    fields.forEach(function (field) {
                        var roleSelect = $('#' + elementReveal).find("#role-select").val();
                        role.forEach(function (role) {
                            if (IsFieldsEdit(editFields, field)) {
                                var newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-6 columns"><span>' + labels[countField] + '</span></div><div class="small-6 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';
                            } else {
                                var newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-6 columns"><span>' + labels[countField] + '</span></div><div class="small-6 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div></li>';
                            }
                            $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);
                        });
                        countField++;
                    });
                    // I think that this section really should not exist here
                    if (customFormActivated == true) {
                        var formBlocks = JSON.parse(dataResult.formBlocks);
                        var items = GetDropdownValuesSettings(formBlocks);

                        var formBlocksOccurrence = JSON.parse(dataResult.formBlocksOccurrence);
                        var itemsOccurrence = GetDropdownValuesSettings(formBlocksOccurrence);

                        var formBlocksRecurrence = JSON.parse(dataResult.formBlocksRecurrence);
                        var itemsRecurrence = GetDropdownValuesSettings(formBlocksRecurrence);

                        role.forEach(function (role) {
                            var field = "opportunity_custom_form";
                            var formRow = opportunity_custom_form_build(role.ID, field, items, window.translation.volunteer_opportunity);

                            //-- Begin occurrence - reccurrence additional form block
                            var field = "occurrence_custom_form";
                            formRow += opportunity_custom_form_build(role.ID, field, itemsOccurrence, window.translation.occurrence);
                            var field = "recurrence_custom_form";
                            formRow += opportunity_custom_form_build(role.ID, field, itemsRecurrence, window.translation.recurrence);
                            //-- End occurrence - reccurrence additional form block

                            $('#' + elementReveal).find('.listing-fields-volunteer-custom ul').append(formRow);

                        });
                    }
                    settings = JSON.parse(dataResult.settings);
                    //Set the fields with value
                    settings.forEach(function (set) {
                        $('#' + elementReveal).find('.vo-settings').hide();
                        $('#' + elementReveal).find('.set-' + $('#' + elementReveal).find("#role-select").val()).show();
                        SetValueSettings(set.Settings, editFields, set.RoleId, "");
                    });


                    //Disabled the Fields cann't edit
                    //Boolean Fields, hidden the required setting
                    role.forEach(function (role) {
                        disabledEditFields.forEach(function (field) {
                            var name = "-" + role.ID + '--' + field;
                            $('#' + elementReveal).find('#yes-no-visible' + name).closest('.row.vo-settings').find('span:first-child').first().prop('class', 'non-editable');
                            $('#' + elementReveal).find('#yes-no-visible' + name).prop('checked', true);
                            $('#' + elementReveal).find('#yes-no-required' + name).prop('checked', true);
                            $('#' + elementReveal).find('#yes-no-visible' + name).prop('disabled', true);
                            $('#' + elementReveal).find('#yes-no-required' + name).prop('disabled', true);
                        });

                        booleanFields.forEach(function (field) {
                            var name = "-" + role.ID + '--' + field;
                            $('#' + elementReveal).find('#span' + name).text("False");
                        });

                    });

                    //Event if change the role
                    $('#' + elementReveal).find("#role-select").change(function () {
                        $('#' + elementReveal).find('.vo-settings').hide();
                        $('#' + elementReveal).find('.set-' + $('#' + elementReveal).find("#role-select").val()).show();
                    });


                }
            });
        });
    }
    if ($("#columns-list-form-fields-management").length > 0) {


        $(document).on('click', '.switch-form-block', function () {
            if ($(this).prop('checked')) {
                $(this).closest('li').find('select').prop('disabled', false);
            }
            else {
                $(this).closest('li').find('select').prop('disabled', true);
            }

        });

        $(document).on('click', '#columns-list-form-fields-management .save-settings', function () {

            var formData = $("#columns-list-form-fields-management").serializeObject();
            var urlToSend = urlSite + "set-vo-form-settings/" + listName;
            $.ajax({
                method: "POST",
                url: urlToSend,
                data: formData,
                beforeSend: function () {
                    $('#columns-list-settings-edit-backend').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status.toString() === "200") {

                    Swal.fire({
                        title: "",
                        icon: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"
                    }).then(function (result) {
                        $('#columns-list-settings-edit-backend').foundation('close');
                        location.reload();

                    });


                }
                else if (jsonResult.status.toString() === "500") {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"
                    });
                }

                //Hide processing screen
                $('#columns-list-settings-edit-backend').find('.processing_screen').show();
                return false;
            });
            return false;
        });
        $(document).on('click', '#columns-list-form-fields-management input[type=checkbox]', function () {
            var name = $(this).attr('name');
            if (name.indexOf("required") > 0) {
                name = name.replace("required", "visible");
                if ($(this).is(':checked')) {
                    $('#' + name).prop('checked', true);
                }
            }
            if (name.indexOf("visible") > 0) {
                name = name.replace("visible", "required");
                if ($(this).is(':checked') == false) {
                    $('#' + name).prop('checked', false);
                }
            }
        });
    }
}

// backend Standard Form Settings in Sharing Portal
function backend_standard_form_settings() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var category = "";
    if ($('body.backend-page').length > 0) {
        $(document).on('click', 'a[data-element-reveal="standard-form-settings-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            category = $(this).data('category-name');
            var settings;

            var listTitle = '';
            if (category == 'SharingPortalLocationSettings')
                listTitle = window.translation.location_form;

            var versionLink = $('#' + elementReveal).find('h3').find('a');
            $('#' + elementReveal).find('h3').html(listTitle);
            versionLink.attr('data-page-name', category);
            $('#' + elementReveal).find('h3').append(versionLink);

            $('#' + elementReveal).addClass(category);

            versionLink.on("click", function () {
                $("#rollback-list").parent("div.reveal-overlay").css("z-index", "2000");
            });

            $('#' + elementReveal).foundation('open');
            //Get info of settings saved in database
            $.ajax({
                method: "POST",
                url: urlSite + "get-column-list-settings",
                data: {
                    "listName": category
                },
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                },
            }).done(function (data) {
                var dataResult = JSON.parse(data);
                $('#' + elementReveal).find('.processing_screen').hide();

                if (dataResult) {
                    //Include listing of fields with options visible and
                    $('#' + elementReveal).find('.listing-fields-volunteer ul').empty();
                    $('#' + elementReveal).find('.listing-fields-volunteer-custom ul').empty();
                    var role = JSON.parse(dataResult.roles);
                    var customFormActivated = dataResult.customFormActivated;
                    var labels = JSON.parse(dataResult.labels);
                    var fields = JSON.parse(dataResult.fields);
                    var editFields = JSON.parse(dataResult.editFields);
                    var disabledEditFields = JSON.parse(dataResult.disabledEditFields);
                    var booleanFields = JSON.parse(dataResult.booleanFields);
                    var country = JSON.parse(dataResult.country);
                    var countField = 0;
                    $('#' + elementReveal).find("#role-select").empty();
                    //Fill the Select Role
                    role.forEach(function (field) {
                        if (field.name == "Partner Staff")
                            $('#' + elementReveal).find("#role-select").append('<option value="' + field.ID + '"selected>' + field.name + '</option>');
                        else if (field.name != "System Administrator" && field.name != "Staff" && field.name != "Client Administrator")
                            $('#' + elementReveal).find("#role-select").append('<option value="' + field.ID + '">' + field.name + '</option>');
                    });
                    var newRow = '';
                    fields.forEach(function (field) {
                        var roleSelect = $('#' + elementReveal).find("#role-select").val();
                        role.forEach(function (role) {
                            newRow = '';
                            if (IsFieldsEdit(editFields, field)) {
                                if (field == "location_country") {
                                    var option = '<select class="country" name=default-' + role.ID + '--' + field + ' id=default-' + role.ID + '--' + field + '></select>'
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><span id="span-' + role.ID + '--' + field + '">' + option + '</span></div></li>';
                                } else if (field == "location_zipcode") {
                                    var fieldZipCode = '<input name="default-' + role.ID + '--' + field + '" id="default-' + role.ID + '--' + field + '" value="">';
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><span id="span-' + role.ID + '--' + field + '">' + fieldZipCode + '</span></div></li>';
                                }
                                else if (field == "location_name" || field == "location_type") {
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input item-' + field + '" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input item-req-' + field + '" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><span id="span-' + role.ID + '--' + field + '" class="boolean"></span></div></li>';
                                }
                                else {
                                    newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><span id="span-' + role.ID + '--' + field + '" class="boolean"></span></div></li>';
                                }
                            } else {
                                newRow = '<li class="row vo-settings set-' + role.ID + '" style="display:none"><div class="small-3 columns"><span>' + labels[countField] + '</span></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-visible-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-visible-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-visible-' + role.ID + '--' + field + '"><span class="show-for-sr">Visible?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><div class="switch large"><input class="switch-input" id="yes-no-required-' + role.ID + '--' + field + '" type="checkbox" name="yes-no-required-' + role.ID + '--' + field + '"><label class="switch-paddle" for="yes-no-required-' + role.ID + '--' + field + '"><span class="show-for-sr">Required?</span><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span><span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div></div><div class="small-3 columns"><span id="span-' + role.ID + '--' + field + '" class="boolean"></span></div></li>';
                            }
                            $('#' + elementReveal).find('.listing-fields-volunteer ul').append(newRow);
                        });
                        countField++;
                    });
                    //if (customFormActivated == true) {
                    //    var formBlocks = JSON.parse(dataResult.formBlocks);
                    //    var items = GetDropdownValuesSettings(formBlocks);

                    //    var formBlocksOccurrence = JSON.parse(dataResult.formBlocksOccurrence);
                    //    var itemsOccurrence = GetDropdownValuesSettings(formBlocksOccurrence);

                    //    var formBlocksRecurrence = JSON.parse(dataResult.formBlocksRecurrence);
                    //    var itemsRecurrence = GetDropdownValuesSettings(formBlocksRecurrence);

                    //    role.forEach(function (role) {
                    //        var field = "opportunity_custom_form";
                    //        var formRow = opportunity_custom_form_build(role.ID, field, items, window.translation.volunteer_opportunity);

                    //        //-- Begin occurrence - reccurrence additional form block
                    //        var field = "occurrence_custom_form";
                    //        formRow += opportunity_custom_form_build(role.ID, field, itemsOccurrence, window.translation.occurrence);
                    //        var field = "recurrence_custom_form";
                    //        formRow += opportunity_custom_form_build(role.ID, field, itemsRecurrence, window.translation.recurrence);
                    //        //-- End occurrence - reccurrence additional form block

                    //        $('#' + elementReveal).find('.listing-fields-volunteer-custom ul').append(formRow);

                    //    });
                    //}
                    settings = JSON.parse(dataResult.settings);
                    var countrylist = "";
                    country.forEach(function (tempCountry) {
                        countrylist = countrylist + '<option value="' + tempCountry + '">' + tempCountry + '</option>';
                    });
                    //Set the fields with value
                    settings.forEach(function (set) {
                        $('#' + elementReveal).find('.vo-settings').hide();
                        $('#' + elementReveal).find('.set-' + $('#' + elementReveal).find("#role-select").val()).show();
                        SetValueSettings(set.Settings, editFields, set.RoleId, countrylist);
                    });


                    //Disabled the Fields cann't edit
                    //Boolean Fields, hidden the required setting
                    role.forEach(function (role) {
                        disabledEditFields.forEach(function (field) {
                            var name = "-" + role.ID + '--' + field;
                            $('#' + elementReveal).find('#yes-no-visible' + name).closest('.row.vo-settings').find('span:first-child').first().prop('class', 'non-editable');
                            $('#' + elementReveal).find('#yes-no-visible' + name).prop('checked', true);
                            $('#' + elementReveal).find('#yes-no-required' + name).prop('checked', true);
                            $('#' + elementReveal).find('#yes-no-visible' + name).prop('disabled', true);
                            $('#' + elementReveal).find('#yes-no-required' + name).prop('disabled', true);
                        });

                        booleanFields.forEach(function (field) {
                            var name = "-" + role.ID + '--' + field;
                            $('#' + elementReveal).find('#span' + name + ' .boolean').text("False");
                        });

                    });

                    //Event if change the role
                    $('#' + elementReveal).find("#role-select").change(function () {
                        $('#' + elementReveal).find('.vo-settings').hide();
                        $('#' + elementReveal).find('.set-' + $('#' + elementReveal).find("#role-select").val()).show();
                    });
                }
                add_custom_behaviors_for_standard_form_settings_modal();
            });
        });
    }
    if ($("#standard-form-settings-form-fields-management").length > 0) {

        $(document).on('click', '.switch-form-block', function () {
            if ($(this).prop('checked')) {
                $(this).closest('li').find('select').prop('disabled', false);
            }
            else {
                $(this).closest('li').find('select').prop('disabled', true);
            }
        });

        $(document).on('click', '#standard-form-settings-form-fields-management .save-settings', function () {

            var formData = $("#standard-form-settings-form-fields-management").serializeObject();
            var urlToSend = urlSite + "set-vo-form-settings/" + category;
            $.ajax({
                method: "POST",
                url: urlToSend,
                data: formData,
                beforeSend: function () {
                    $('#standard-form-settings-edit-backend').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status.toString() === "200") {

                    Swal.fire({
                        title: "",
                        icon: "success",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    }).then(function (result) {
                        $('#standard-form-settings-edit-backend').foundation('close');
                        location.reload();

                    });


                }
                else if (jsonResult.status.toString() === "500") {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok"
                    });
                }

                //Hide processing screen
                $('#standard-form-settings-edit-backend').find('.processing_screen').show();
                return false;
            });
            return false;
        });
        $(document).on('click', '#standard-form-settings-form-fields-management input[type=checkbox]', function () {
            var name = $(this).attr('name');
            if (name.indexOf("required") > 0) {
                name = name.replace("required", "visible");
                if ($(this).is(':checked')) {
                    $('#' + name).prop('checked', true);
                }
            }
            if (name.indexOf("visible") > 0) {
                name = name.replace("visible", "required");
                if ($(this).is(':checked') == false) {
                    $('#' + name).prop('checked', false);
                }
            }
        });
    }
}

function add_custom_behaviors_for_standard_form_settings_modal() {
    if ($('body.backend-page').length > 0) {
        if ($('body').find(".SharingPortalLocationSettings").length > 0) {
            var arraySettings = ['location_name', 'location_street', 'location_city', 'location_state', 'location_zipcode', 'location_specialdirection'];
            $(document).on('change', 'select.country', function () {
                var roleId = $(this).prop("name").replace("default-", "").replace("--location_country", "");
                if ($(this).val() == 'United States') {
                    $.map(arraySettings, function (value, index) {
                        $("#yes-no-visible-" + roleId + "--" + value).prop('checked', true)
                        $("#yes-no-required-" + roleId + "--" + value).prop('checked', true)
                    });
                } else {
                    // Visible and required
                    $("#yes-no-visible-" + roleId + "--location_city").prop('checked', true)
                    $("#yes-no-required-" + roleId + "--location_city").prop('checked', true)
                    $("#yes-no-visible-" + roleId + "--location_street").prop('checked', true)
                    $("#yes-no-required-" + roleId + "--location_street").prop('checked', true)

                    //Visible and no required
                    $("#yes-no-visible-" + roleId + "--location_state").prop('checked', true)
                    $("#yes-no-required-" + roleId + "--location_state").prop('checked', false)
                    $("#yes-no-visible-" + roleId + "--location_zipcode").prop('checked', true)
                    $("#yes-no-required-" + roleId + "--location_zipcode").prop('checked', false)
                }
                $("#yes-no-visible-" + roleId + "--location_country").prop('checked', false)
                $("#yes-no-required-" + roleId + "--location_country").prop('checked', false)
            });
        }
    }
}

//backend for overview settings
function backend_overview_form_settings() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $(document).on('click', 'a[data-element-reveal="overview-form-settings-edit-backend"]', function () {
        var elementReveal = $(this).data('element-reveal');
        $('#' + elementReveal).find('.processing_screen').hide();
        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();
        //Get info of settings saved in database
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetOverviewSettings",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            },
        }).done(function (data) {
            var dataResult = JSON.parse(data);

            $("#title_tabs_overview li.tabs-title").on("click", function () {
                $(this).parents(".overview-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });

            $(".overview-ckeditor").each(function () {
                initialize_ckeditor_ars($(this).attr("id"), "");
            });

            if (dataResult.code == "200") {
                if (dataResult.setting != null && dataResult.setting != undefined) {
                    var setting = JSON.parse(dataResult.setting);
                    if (setting.feedback == true) {
                        $("#yes-no-visible--feedback").prop("checked", true);
                        $(".add-url-feedback").removeClass("is-hidden");
                        $("#urlFeedback").val(setting.urlFeedback);
                    } else {
                        $("#yes-no-visible--feedback").prop("checked", false);
                        $(".add-url-feedback").addClass("is-hidden");
                        $("#urlFeedback").val('');
                    }
                    if (setting.report_hours == true) {
                        $("#yes-no-visible--report-hours").prop("checked", true);
                    } else {
                        $("#yes-no-visible--report-hours").prop("checked", false);
                    }
                    if (setting.hideEmptyLocation == true) {
                        $("#hide-empty-location").prop("checked", true);
                    } else {
                        $("#hide-empty-location").prop("checked", false);
                    }

                    if (setting.occNameActive == true) {
                        $("#yes-no-visible--occ-name").prop("checked", true);
                    } else {
                        $("#yes-no-visible--occ-name").prop("checked", false);
                    }

                    if (setting.urlRemoveme != null && setting.urlRemoveme != undefined && setting.urlRemoveme != '') {
                        $("#urlRemoveme").val(setting.urlRemoveme);
                    } else {
                        $("#urlRemoveme").val('');
                    }
                    if (setting.UrlPrintVolenteerHistory != null && setting.UrlPrintVolenteerHistory != undefined && setting.UrlPrintVolenteerHistory != '') {
                        $('input[name="UrlPrintVolenteerHistory"]').val(setting.UrlPrintVolenteerHistory);
                    } else {
                        $('input[name="UrlPrintVolenteerHistory"]').val('');
                    }
                } else {
                    $("#yes-no-visible--feedback").prop("checked", true);
                    $("#yes-no-visible--report-hours").prop("checked", true);
                    $("#yes-no-visible--occ-name").prop("checked", false);
                    $("#hide-empty-location").prop("checked", false);
                    $(".add-url-feedback").removeClass("is-hidden");
                    $("#urlFeedback").val('');
                    $("#urlRemoveme").val('');
                    $('input[name="UrlPrintVolenteerHistory"]').val('');
                }

                if (dataResult.internationalizationItems != null) {
                    var items = JSON.parse(dataResult.internationalizationItems);
                    items.forEach(function (item, index) {
                        $("#" + item.Item + "-" + item.Language_ID).val(item.Value);
                    });
                }


                $("#yes-no-visible--feedback").on('change', function () {

                    if ($(this).is(':checked')) {
                        $(".add-url-feedback").removeClass("is-hidden");

                    } else {
                        $(".add-url-feedback").addClass("is-hidden");
                        $("#urlFeedback").val('');

                    }
                });

            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: jsonResult.message,
                    confirmButtonText: "Ok"

                });
            }
            $('#' + elementReveal).find('.processing_screen').hide();

        });

    });

}

//backend for Skill Documentation page settings
function skill_document_settings() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $(document).on('click', 'a[data-element-reveal="skill-document-settings-edit-backend"]', function () {
        var elementReveal = $(this).data('element-reveal');
        $('#' + elementReveal).find('.processing_screen').hide();
        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();
        //Get info of settings saved in database
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetSkillDocumentationSettings",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            },
        }).done(function (data) {
            var dataResult = JSON.parse(data);

            $("#title_tabs_skill_doc li.tabs-title").on("click", function () {
                $(this).parents(".skill-doc-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });

            $(".skill-doc-ckeditor").each(function () {
                initialize_ckeditor_ars($(this).attr("id"), "");
            });

            if (dataResult.code == "200") {
                if (dataResult.internationalizationItems != null) {
                    var items = JSON.parse(dataResult.internationalizationItems);
                    items.forEach(function (item, index) {
                        $("#" + item.Group + "_" + item.Item + "-" + item.Language_ID).val(item.Value);
                    });
                }
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: dataResult.message,
                    confirmButtonText: "Ok"
                });
            }
            $('#' + elementReveal).find('.processing_screen').hide();

        });

    });

}

//backend for Skill page settings
function skill_settings() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $(document).on('click', 'a[data-element-reveal="skill-settings-edit-backend"]', function () {
        var elementReveal = $(this).data('element-reveal');
        $('#' + elementReveal).find('.processing_screen').hide();
        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();
        //Get info of settings saved in database
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetSkillSettings",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            },
        }).done(function (data) {
            var dataResult = JSON.parse(data);
            if (dataResult.tableSettings !== null && dataResult.tableSettings !== '' && dataResult.tableSettings !== undefined) {
                var tableSetting = JSON.parse(dataResult.tableSettings);
                $('input[name = "yes-no-visible--update_button_top"]').prop("checked", tableSetting.display_update_button_top);
                $('input[name = "yes-no-visible--accept_invitations"]').prop("checked", tableSetting.display_accept_invitations);
                $('input[name = "yes-no-visible--max_distance"]').prop("checked", tableSetting.display_max_distance);
            } else {
                $('input[name = "yes-no-visible--update_button_top"]').prop("checked", true);
                $('input[name = "yes-no-visible--accept_invitations"]').prop("checked", true);
                $('input[name = "yes-no-visible--max_distance"]').prop("checked", true);
            }

            $("#title_tabs_skill li.tabs-title").on("click", function () {
                $(this).parents(".skill-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });

            $(".skill-ckeditor").each(function () {
                initialize_ckeditor_ars($(this).attr("id"), "");
            });

            if (dataResult.code == "200") {
                if (dataResult.internationalizationItems != null) {
                    var items = JSON.parse(dataResult.internationalizationItems);
                    items.forEach(function (item, index) {
                        $("#" + item.Group + "_" + item.Item + "-" + item.Language_ID).val(item.Value);
                    });
                }
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: dataResult.message,
                    confirmButtonText: "Ok",
                });
            }
            $('#' + elementReveal).find('.processing_screen').hide();

        });

    });

}

//backend for selfReport page settings
function selfreport_page_settings() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $(document).on('click', 'a[data-element-reveal="selfreport-page-settings-edit-backend"]', function () {
        var elementReveal = $(this).data('element-reveal');
        $('#' + elementReveal).find('.processing_screen').hide();
        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();
        //Get info of settings saved in database
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetSelfReportSettings",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            },
        }).done(function (data) {
            var dataResult = JSON.parse(data);
            $("#title_tabs_selfreport li.tabs-title").on("click", function () {
                $(this).parents(".selfreport-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });

            $(".selfreport-ckeditor").each(function () {
                initialize_ckeditor_ars($(this).attr("id"), "");
            });

            if (dataResult.code == "200") {
                if (dataResult.internationalizationItems != null) {
                    var items = JSON.parse(dataResult.internationalizationItems);
                    items.forEach(function (item, index) {
                        $("#" + item.Group + "_" + item.Item + "-" + item.Language_ID).val(item.Value);
                    });
                }
                if ($('#list-self-report-table').length > 0) {
                    $('#list-self-report-table').empty();
                    if (dataResult.formSettings != null && dataResult.titles != null) {
                        var items = JSON.parse(dataResult.formSettings);
                        var titles = JSON.parse(dataResult.titles);
                        items.forEach(function (item, index) {
                            var name = item.name;
                            var label = '';
                            titles.forEach(function (ti, index) {
                                if (ti.name == name) {
                                    label = ti.label;
                                }
                            });
                            var markup = '<li class="row"><div class="small-9 columns"><span>' + label + '</span></div>';
                            //Required
                            markup += '<div class="small-3 columns">';
                            markup += '<input class="switch-input" type="checkbox" name="yes-no-required--' + name + '" id="yes-no-required--' + name + '" />';
                            markup += '<label class="switch-paddle" for="yes-no-required--' + name + '">';
                            markup += '<span class="show-for-sr">Visible?</span>';
                            markup += '<span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span>';
                            markup += '<span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span>';
                            markup += '</label>';
                            markup += '</div>';
                            //End of Required
                            markup += '<div class="small-4 columns"></div>';
                            markup += '</li>';
                            $('#list-self-report-table').append(markup);
                        });

                        items.forEach(function (item, index) {
                            var name = item.name;
                            var required = item.required;
                            var visible = item.visible;
                            if (required)
                                $('#list-self-report-table').find('input#yes-no-required--' + name).prop('checked', true);
                            else
                                $('#list-self-report-table').find('input#yes-no-required--' + name).prop('checked', false);

                            if (name === 'display_impact_area') {
                                $('#list-self-report-table').find('input#yes-no-visible--' + name).attr('disabled', 'disabled');
                            }
                        });

                    }

                }
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: dataResult.message,
                    confirmButtonText: "Ok"
                });
            }
            $('#' + elementReveal).find('.processing_screen').hide();

        });

    });

}

function validate_include_gallery(form) {
    var selector = '#' + form;
    if ($(selector).length > 0) {
        $(selector).find('.gallery-settings').addClass('is-hidden');
    }
}

function backend_gallery_settings() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    if (!is_backend_page()) return;
    if ($('body.new-template-system').length > 0 && $('#gallery-configuration').length > 0) {
        $(document).on('click', 'a[data-element-reveal="gallery-configuration"]', function () {
            /* Information about the link of click */
            var displayType = $(this).attr('data-style-display');
            var elementReveal = $(this).attr('data-element-reveal');
            var regionID = '0';
            if (displayType == "add") {
                regionID = $(this).attr('data-region-id');
            }
            var source = $(this).attr('data-from');

            process_modal_gallery(elementReveal, displayType, regionID, source, urlSite, '');

        });
    }
}

function process_modal_gallery(elementReveal, displayType, regionID, source, urlSite, dataFrom) {
    /* changes in the modal */
    var tableIDLocal = 'table-page-local-form-page';
    var tableIDGlobal = 'table-page-global-form-page';


    if (source == "ars") {
        tableIDLocal = 'table-page-local-ars-form';
        tableIDGlobal = 'table-page-global-ars-form';
    }

    var objectTableLocalForm = $('#' + tableIDLocal);
    var objectTableGlobalForm = $('#' + tableIDGlobal);


    if (dataFrom == '') {
        dataFrom = 'all';
    }
    if (source == "ars") {
        $('#' + elementReveal).parent('.reveal-overlay').css('z-index', '1007');
        $('#' + elementReveal).css('z-index', '1008');
    } else {
        $('#' + elementReveal).parent('.reveal-overlay').css('z-index', '1000');
        $('#' + elementReveal).css('z-index', '1001');
    }

    $('#' + elementReveal).find('.add-to-cms-note').hide();
    if (displayType == "add") {
        $('#' + elementReveal).find('.add-to-cms-note').show();
    } else {
        showHideTabs('display', 'all', elementReveal);
    }
    $('#' + elementReveal).foundation('open');
    $('#' + elementReveal).foundation();

    if (source == "cms") {
        showHideTabs('display', 'cms', elementReveal);
    } else if (source == "ars") {
        showHideTabs('display', 'ars', elementReveal);
    }
    $('#' + elementReveal).find('.processing_screen').show();
    $('#' + elementReveal).foundation('open');
    if (displayType == "add" || displayType == "add-ars") {
        $.ajax({
            method: "GET",
            url: urlSite + "admin/RetrieveBlocksForGallery?type=" + source + "&datafrom=" + dataFrom,

        }).done(function (data) {

            objectTableLocalForm.find('tbody').empty();
            objectTableGlobalForm.find('tbody').empty();
            if (data != null && data != undefined) {
                var dataR = JSON.parse(data);
                if (dataR.code == "200") {
                    moment.locale(dataR.locale);

                    if (dataR.globalBlocks != null && dataR.globalBlocks != undefined && dataR.globalBlocks.trim() != "") {
                        var globalblocks = JSON.parse(dataR.globalBlocks);
                        datatable_destory_by_id(tableIDGlobal);
                        objectTableGlobalForm.find('tbody').empty();
                        globalblocks.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, dataR.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                            }
                            if (displayType == 'view') {
                                link = '<a source-invoked="gallery" data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            } else if (displayType == 'add') {
                                link = '<a source-gallery="global" class="add-to-region-block" title="' + titleLink + '" data-block-id="' + item.ID + '" class="menu" data-region-id="' + regionID + '">' + window.translation.add_block + '</a>';
                            } else if (displayType == 'add-ars') {
                                link = '<a source-gallery="global" class="add-to-ars-page" title="' + titleLink + '" data-block-id="' + item.ID + '" class="menu">' + window.translation.add_block + '</a>';
                            }
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if (source == 'ars') {
                                itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td class="type-column-list">' + item.SpecialTypeGallery + '</td><td>' + link + '</td></tr>';
                            }

                            if (objectTableGlobalForm.find('tbody').length > 0) {
                                objectTableGlobalForm.find('tbody').append(itemRow);
                            }

                        });
                    }

                    if (dataR.localBlocks != null && dataR.localBlocks != undefined && dataR.localBlocks.trim() != "") {
                        var localblocks = JSON.parse(dataR.localBlocks);
                        datatable_destory_by_id(tableIDLocal);
                        objectTableLocalForm.find('tbody').empty();
                        localblocks.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, dataR.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;

                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                            }
                            if (displayType == 'view') {
                                link = '<a source-invoked="gallery" data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            } else if (displayType == 'add') {
                                link = '<a source-gallery="local" class="add-to-region-block" title="' + titleLink + '" data-block-id="' + item.ID + '" class="menu" data-region-id="' + regionID + '">' + window.translation.add_block + '</a>';
                            } else if (displayType == 'add-ars') {
                                link = '<a source-gallery="local" class="add-to-ars-page" title="' + titleLink + '" data-block-id="' + item.ID + '" class="menu">' + window.translation.add_block + '</a>';
                            }

                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if (source == 'ars') {
                                itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td class="type-column-list">' + item.SpecialTypeGallery + '</td><td>' + link + '</td></tr>';
                            }

                            if (objectTableLocalForm.find('tbody').length > 0) {
                                objectTableLocalForm.find('tbody').append(itemRow);
                            }
                        });
                    }

                    if (source == "cms") {
                        $("#" + elementReveal).find('table#table-page-global-form-page td.type-column-list').hide();
                        $("#" + elementReveal).find('table#table-page-local-form-page td.type-column-list').hide();
                    } else if (source == "ars") {
                        $("#" + elementReveal).find('table#table-page-global-form-page td.type-column-list').show();
                        $("#" + elementReveal).find('table#table-page-local-form-page td.type-column-list').show();
                    }


                } else if (data.code == "500") {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: data.message,
                        confirmButtonText: "Ok"
                    });
                }
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: "Error retrieving data",
                    confirmButtonText: "Ok"
                });
            }
            $('#' + elementReveal).find('.processing_screen').hide();


            $('#' + elementReveal).find('a.add-to-ars-page').on('click', function () {

                var blockID = $(this).attr('data-block-id');
                var sourceGallery = $(this).attr('source-gallery');
                var gallery = 0;
                if (sourceGallery === 'local')
                    gallery = 1;
                else if (sourceGallery === 'global')
                    gallery = 2;

                Swal.fire({
                    title: window.translation.are_you_sure,
                    text: window.translation.add_block_confirmation_message,
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true


                }).then(function (result) {
                    if (result.isConfirmed) {
                        $("#" + elementReveal).find('.processing_screen').show();
                        var addedToLocalStorage = false;
                        var _elemetId = $('#ars-page-conf-form div[data-element-id]').last().data('element-id');
                        var elementId = 0;
                        if (_elemetId != null) {
                            elementId = parseInt(_elemetId);
                        }

                        $.ajax({
                            method: "GET",
                            url: urlSite + "admin/GetFormInformationForARS?blockId=" + blockID + '&gallery=' + gallery,
                        }).done(function (data) {
                            var result = JSON.parse(data);

                            if (result.code == "200") {
                                var formID = result.formId;
                                var formHtml = result.form_html;
                                //var valjson = localStorage.getItem("json-ars-data");
                                var valjson = sessionStorage.getItem("json-ars-data");

                                var jsonBlock = new Object();
                                jsonBlock.idElement = elementId + 1;
                                jsonBlock.blockId = result.blockId;
                                jsonBlock.formId = result.formId;
                                jsonBlock.type = "form";
                                jsonBlock.weight = $("#ars-page-conf-form .ars_block").length;
                                jsonBlock.isdeleted = false;

                                if (!valjson) {
                                    var DataJson = [];
                                    jsonBlock.idElement = 1;
                                    DataJson.push(jsonBlock);

                                    var hiddenInfo = JSON.stringify(DataJson);
                                    //localStorage.setItem("json-ars-data", hiddenInfo);
                                    sessionStorage.setItem("json-ars-data", hiddenInfo);
                                    valjson = hiddenInfo;
                                    addedToLocalStorage = true;
                                }

                                var DataJson = JSON.parse(valjson);

                                if (elementId == 0) {

                                    DataJson.forEach(function (item) {
                                        if (item.idElement > jsonBlock.idElement) {
                                            jsonBlock.idElement = item.idElement;
                                        }
                                    });
                                    jsonBlock.weight = jsonBlock.idElement;
                                    if (!addedToLocalStorage)
                                        DataJson.push(jsonBlock);

                                    var hiddenInfo = JSON.stringify(DataJson);
                                    //localStorage.setItem("json-ars-data", hiddenInfo);
                                    sessionStorage.setItem("json-ars-data", hiddenInfo);

                                    var formBlock = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.form_block + '">' +
                                        '<div class="content">' + result.form_html + '</div>' +
                                        '<div class="options">' +
                                        '<a data-element-reveal="form-builder-block" title="Form" class="edit-ars-component" data-block-id="' + result.blockId + '" data-form-id="' + result.formId + '" data-element-id="' + jsonBlock.idElement + '"></a>' +
                                        '<a  title="Delete Content" class="delete-ars-component" data-block-id="' + result.blockId + '"  data-element-id="' + jsonBlock.idElement + '"></a>' +
                                        '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                                        '</div>' +
                                        '</div>';

                                    $('#ars-page-conf .content_page').append(formBlock);

                                    $('#ars-page-conf .content_page select[multiple="multiple"]').multiselect();

                                    date_picker_widget();

                                    initiate_jquery_validate(window.translation);

                                } else {
                                    var exists = false;
                                    DataJson.forEach(function (item) {
                                        if (item.idElement == jsonBlock.idElement) {
                                            item.blockId = jsonBlock.blockId;
                                            item.formId = jsonBlock.formId;
                                            item.isdeleted = jsonBlock.isdeleted;
                                            item.weight = jsonBlock.weight;

                                            exists = true;
                                            return false;
                                        }
                                    });

                                    if (!exists) {
                                        DataJson.push(jsonBlock);
                                    }

                                    var hiddenInfo = JSON.stringify(DataJson);
                                    //localStorage.setItem("json-ars-data", hiddenInfo);
                                    sessionStorage.setItem("json-ars-data", hiddenInfo);

                                    var formBlock = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.form_block + '">' +
                                        '<div class="content">' + result.form_html + '</div>' +
                                        '<div class="options">' +
                                        '<a data-element-reveal="form-builder-block" title="Form" class="edit-ars-component" data-block-id="' + result.blockId + '" data-form-id="' + result.formId + '" data-element-id="' + jsonBlock.idElement + '"></a>' +
                                        '<a  title="Delete Content" class="delete-ars-component" data-block-id="' + result.blockId + '"  data-element-id="' + jsonBlock.idElement + '"></a>' +
                                        '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                                        '</div>' +
                                        '</div>';

                                    if ($('#ars-page-conf .content_page .ars_block[data-element-id=' + jsonBlock.idElement + '] .content').length > 0) {
                                        $('#ars-page-conf .content_page .ars_block[data-element-id=' + jsonBlock.idElement + ']').remove();
                                        $('#ars-page-conf .content_page').append(formBlock);
                                    }
                                    else {
                                        var formBlock = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.form_block + '">' +
                                            '<div class="content">' + result.form_html + '</div>' +
                                            '<div class="options">' +
                                            '<a data-element-reveal="form-builder-block" title="Form" class="edit-ars-component" data-block-id="' + result.blockId + '" data-form-id="' + result.formId + '" data-element-id="' + jsonBlock.idElement + '"></a>' +
                                            '<a  title="Delete Content" class="delete-ars-component" data-block-id="' + result.blockId + '"  data-element-id="' + jsonBlock.idElement + '"></a>' +
                                            '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                                            '</div>' +
                                            '</div>';

                                        $('#ars-page-conf .content_page').append(formBlock);
                                    }

                                    $('#ars-page-conf .content_page select[multiple="multiple"]').multiselect();

                                    date_picker_widget();

                                    initiate_jquery_validate(window.translation);


                                }
                                $('#' + elementReveal).foundation('close');

                            } else {
                                Swal.fire({
                                    title: "",
                                    icon: "error",
                                    text: response.message,
                                    confirmButtonText: "Ok",
                                });

                            }

                            $("#" + elementReveal).find('.processing_screen').hide();
                        });

                    }
                });


            });

        });


    } else {

        //DEfining tables
        var localArsBlock = 'table-page-local-ars-block';
        var localArsForm = 'table-page-local-ars-form';
        var localArsWorkflow = 'table-page-local-ars-workflow';
        var localSharingForm = 'table-page-local-sharing-form';
        var localNormalBlock = 'table-page-local-normal-block';
        var localNormalForm = 'table-page-local-form-page';
        var globalArsBlock = 'table-page-global-ars-block';
        var globalArsForm = 'table-page-global-ars-form';
        var globalArsWorkflow = 'table-page-global-ars-workflow';
        var globalSharingForm = 'table-page-global-sharing-form';
        var globalNormalBlock = 'table-page-global-normal-block';
        var globalNormalForm = 'table-page-global-form-page';



        $.ajax({
            method: "GET",
            url: urlSite + "admin/RetrieveAllItemsForGallery"
        }).done(function (data) {
            var response = JSON.parse(data);
            $('#' + localArsBlock).find('tbody').empty();
            $('#' + localArsForm).find('tbody').empty();
            $('#' + localArsWorkflow).find('tbody').empty();
            $('#' + localSharingForm).find('tbody').empty();
            $('#' + localNormalBlock).find('tbody').empty();
            $('#' + localNormalForm).find('tbody').empty();
            $('#' + globalArsBlock).find('tbody').empty();
            $('#' + globalArsForm).find('tbody').empty();
            $('#' + globalArsWorkflow).find('tbody').empty();
            $('#' + globalSharingForm).find('tbody').empty();
            $('#' + globalNormalBlock).find('tbody').empty();
            $('#' + globalNormalForm).find('tbody').empty();

            if (response.code == "200") {
                var dataGallery = "";
                moment.locale(response.locale);

                if (response.globalInfo != null && response.globalInfo != undefined && response.globalInfo.trim() != '') {
                    var globalInfo = JSON.parse(response.globalInfo);
                    dataGallery = "global";
                    if (globalInfo.arsBlocks.length > 0) {

                    }
                    if (globalInfo.arsForms.length > 0) {
                        datatable_destory_by_id(globalArsForm);
                        $('#' + globalArsForm).find('tbody').empty();
                        globalInfo.arsForms.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                            }
                            var typeForm = item.SpecialTypeGallery;
                            link = '<a source-invoked="gallery" data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + typeForm + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + globalArsForm).find('tbody').length > 0) {
                                $('#' + globalArsForm).find('tbody').append(itemRow);
                            }

                        });
                    }
                    if (globalInfo.arsWorkflows.length > 0) {
                        datatable_destory_by_id(globalArsWorkflow);
                        $('#' + globalArsWorkflow).find('tbody').empty();
                        globalInfo.arsWorkflows.forEach(function (item, index) {

                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = 'ars-workflow-link';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            var idItem = '0';
                            var dataFrom = '';
                            var specialType = item.SpecialTypeGallery;
                            if (specialType == "volunteer") {
                                dataFrom = 'vol-reg';
                                idItem = item.ID;
                                titleLink = 'Volunteer Registration';
                            } else if (specialType == "partner") {
                                dataFrom = 'partner-reg';
                                idItem = item.ID;
                                titleLink = 'Partner Registration';
                            } else if (specialType == "signup") {
                                dataFrom = 'signup';
                                idItem = item.ID;
                                titleLink = 'Sign Up';
                            } else if (specialType == "login") {
                                dataFrom = 'login';
                                idItem = item.ID;
                                titleLink = 'Login';
                            }
                            link = '<a source-invoked="gallery" data-element-reveal="' + elementType + '" title="' + titleLink + '" data-workflow-id="' + idItem + '" class="edit-component menu" data-from="' + dataFrom + '">' + window.translation.edit_block + '</a>';
                            link += '<div><a class="add-to-site" data-gallery="' + dataGallery + '" data-item-name="' + blockName + '" data-type-item="ars-workflow" data-type-workflow="' + dataFrom + '" data-item-id="' + idItem + '">' + window.translation.add_from_gallery + '</a></div>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + globalArsWorkflow).find('tbody').length > 0) {
                                $('#' + globalArsWorkflow).find('tbody').append(itemRow);
                            }


                        });
                    }
                    if (globalInfo.normalBlocks.length > 0) {
                        datatable_destory_by_id(globalNormalBlock);
                        $('#' + globalNormalBlock).find('tbody').empty();
                        globalInfo.normalBlocks.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var idItem = item.ID;
                            var helpText = item.HelpText;
                            var typeText = '';
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                                typeText = 'Form';
                            } else if (item.Type == '21') {
                                elementType = 'listing-cms-block-conf';
                                titleLink = 'Listing CMS';
                                typeText = 'Listing CMS';

                            }
                            link = '<a source-invoked="gallery" data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            link += '<div><a class="add-to-site" data-gallery="' + dataGallery + '" data-item-name="' + blockName + '" data-type-item="block" data-item-id="' + idItem + '">' + window.translation.add_from_gallery + '</a></div>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + typeText + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + globalNormalBlock).find('tbody').length > 0) {
                                $('#' + globalNormalBlock).find('tbody').append(itemRow);
                            }

                        });

                    }
                    if (globalInfo.normalForms.length > 0) {
                        datatable_destory_by_id(globalNormalForm);
                        $('#' + globalNormalForm).find('tbody').empty();
                        globalInfo.normalForms.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var idItem = item.ID;
                            var helpText = item.HelpText;
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                            }
                            link = '<a source-invoked="gallery" data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            link += '<div><a class="add-to-site" data-gallery="' + dataGallery + '" data-item-name="' + blockName + '" data-type-item="block" data-item-id="' + idItem + '">' + window.translation.add_from_gallery + '</a></div>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + globalNormalForm).find('tbody').length > 0) {
                                $('#' + globalNormalForm).find('tbody').append(itemRow);
                            }

                        });
                    }
                    if (globalInfo.sharingForms.length > 0) {
                        datatable_destory_by_id(globalSharingForm);
                        $('#' + globalSharingForm).find('tbody').empty();

                        globalInfo.sharingForms.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            var idItem = item.ID;
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                            }
                            link = '<a source-invoked="gallery" data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            link += '<div><a class="add-to-site" data-gallery="' + dataGallery + '" data-item-name="' + blockName + '" data-type-item="block" data-item-id="' + idItem + '">' + window.translation.add_from_gallery + '</a></div>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + globalSharingForm).find('tbody').length > 0) {
                                $('#' + globalSharingForm).find('tbody').append(itemRow);
                            }

                        });
                    }


                }

                if (response.localInfo != null && response.localInfo != undefined && response.localInfo.trim() != '') {
                    var localInfo = JSON.parse(response.localInfo);
                    dataGallery = "local";
                    if (localInfo.arsBlocks.length > 0) {

                    }
                    if (localInfo.arsForms.length > 0) {
                        datatable_destory_by_id(localArsForm);
                        $('#' + localArsForm).find('tbody').empty();
                        localInfo.arsForms.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                            }
                            var typeForm = item.SpecialTypeGallery;
                            link = '<a source-invoked="gallery"  data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + typeForm + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + localArsForm).find('tbody').length > 0) {
                                $('#' + localArsForm).find('tbody').append(itemRow);
                            }

                        });
                    }
                    if (localInfo.arsWorkflows.length > 0) {
                        datatable_destory_by_id(localArsWorkflow);
                        $('#' + localArsWorkflow).find('tbody').empty();
                        localInfo.arsWorkflows.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = 'ars-workflow-link';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            var idItem = '0';
                            var dataFrom = '';
                            var specialType = item.SpecialTypeGallery;
                            if (specialType == "volunteer") {
                                dataFrom = 'vol-reg';
                                idItem = item.ID;
                                titleLink = 'Volunteer Registration';
                            } else if (specialType == "partner") {
                                dataFrom = 'partner-reg';
                                idItem = item.ID;
                                titleLink = 'Partner Registration';
                            } else if (specialType == "signup") {
                                dataFrom = 'signup';
                                idItem = item.ID;
                                titleLink = 'Sign Up';
                            } else if (specialType == "login") {
                                dataFrom = 'login';
                                idItem = item.ID;
                                titleLink = 'Login';
                            }

                            link = '<div><a source-invoked="gallery" data-element-reveal="' + elementType + '" title="' + titleLink + '" data-workflow-id="' + idItem + '" class="edit-component menu" data-from="' + dataFrom + '">' + window.translation.edit_block + '</a></div>';
                            link += '<div><a class="add-to-site" data-gallery="' + dataGallery + '" data-item-name="' + blockName + '" data-type-item="ars-workflow" data-type-workflow="' + dataFrom + '" data-item-id="' + idItem + '">' + window.translation.add_from_gallery + '</a></div>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + localArsWorkflow).find('tbody').length > 0) {
                                $('#' + localArsWorkflow).find('tbody').append(itemRow);
                            }

                        });
                    }
                    if (localInfo.normalBlocks.length > 0) {
                        datatable_destory_by_id(localNormalBlock);
                        $('#' + localNormalBlock).find('tbody').empty();
                        localInfo.normalBlocks.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            var idItem = item.ID;
                            var typeText = '';
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                                typeText = 'Form';
                            } else if (item.Type == '21') {
                                elementType = 'listing-cms-block-conf';
                                titleLink = 'Listing CMS';
                                typeText = 'Listing CMS';

                            }
                            link = '<a source-invoked="gallery"  data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            link += '<div><a class="add-to-site" data-gallery="' + dataGallery + '" data-item-name="' + blockName + '" data-type-item="block" data-item-id="' + idItem + '">' + window.translation.add_from_gallery + '</a></div>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + typeText + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + localNormalBlock).find('tbody').length > 0) {
                                $('#' + localNormalBlock).find('tbody').append(itemRow);
                            }

                        });

                    }
                    if (localInfo.normalForms.length > 0) {
                        datatable_destory_by_id(localNormalForm);
                        $('#' + localNormalForm).find('tbody').empty();
                        localInfo.normalForms.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            var idItem = item.ID;
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                            }
                            link = '<a source-invoked="gallery"  data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            link += '<div><a class="add-to-site" data-gallery="' + dataGallery + '" data-item-name="' + blockName + '" data-type-item="block" data-item-id="' + idItem + '">' + window.translation.add_from_gallery + '</a></div>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + localNormalForm).find('tbody').length > 0) {
                                $('#' + localNormalForm).find('tbody').append(itemRow);
                            }

                        });
                    }
                    if (localInfo.sharingForms.length > 0) {
                        datatable_destory_by_id(localSharingForm);
                        $('#' + localSharingForm).find('tbody').empty();

                        localInfo.sharingForms.forEach(function (item, index) {
                            var blockName = item.ItemName;
                            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
                            var user = item.LastModifiedByUser;
                            var link = '';
                            var elementType = '';
                            var titleLink = '';
                            var helpText = item.HelpText;
                            var idItem = item.ID;
                            if (item.Type == '19') {
                                elementType = 'form-builder-block';
                                titleLink = 'Form';
                            }
                            link = '<a source-invoked="gallery" data-element-reveal="' + elementType + '" title="' + titleLink + '" data-block-id="' + item.ID + '" class="edit-component menu">' + window.translation.edit_block + '</a>';
                            link += '<div><a class="add-to-site" data-gallery="' + dataGallery + '" data-item-name="' + blockName + '" data-type-item="block" data-item-id="' + idItem + '">' + window.translation.add_from_gallery + '</a></div>';
                            var itemRow = '<tr><td>' + blockName + '</td><td>' + user + '</td><td>' + date + '</td><td>' + helpText + '</td><td>' + link + '</td></tr>';
                            if ($('#' + localSharingForm).find('tbody').length > 0) {
                                $('#' + localSharingForm).find('tbody').append(itemRow);
                            }

                        });
                    }

                }
                process_add_to_site(elementReveal);

                $('#' + elementReveal).find('.processing_screen').hide();
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: response.message,
                    confirmButtonText: "Ok"
                });
                $("#" + elementReveal).find('.processing_screen').hide();

            }
        });
    }


}

function process_ars_add_block_from_gallery(dataFrom) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var displayType = "add-ars";
    var elementReveal = "gallery-configuration";
    var regionID = '0';
    var source = "ars";
    process_modal_gallery(elementReveal, displayType, regionID, source, urlSite, dataFrom);
}

function showHideTabs(status, filter, elementReveal) {
    if (status == "display" && filter == "all") {
        $("#" + elementReveal).find('.tab-local-ars-block').show();
        $("#" + elementReveal).find('.tab-local-ars-form').show();
        $("#" + elementReveal).find('.tab-local-ars-workflow').show();
        $("#" + elementReveal).find('.tab-local-sharing-form').show();
        $("#" + elementReveal).find('.tab-local-normal-block').show();
        $("#" + elementReveal).find('.tab-local-form').show();

        $("#" + elementReveal).find('.tab-global-ars-block').show();
        $("#" + elementReveal).find('.tab-global-ars-form').show();
        $("#" + elementReveal).find('.tab-global-ars-workflow').show();
        $("#" + elementReveal).find('.tab-global-sharing-form').show();
        $("#" + elementReveal).find('.tab-global-normal-block').show();
        $("#" + elementReveal).find('.tab-global-form').show();
    } else if (status == "display" && filter != "all") {
        $("#" + elementReveal).find('.tab-local-ars-block').hide();
        $("#" + elementReveal).find('.tab-local-ars-form').hide();
        $("#" + elementReveal).find('.tab-local-ars-workflow').hide();
        $("#" + elementReveal).find('.tab-local-sharing-form').hide();
        $("#" + elementReveal).find('.tab-local-normal-block').hide();
        $("#" + elementReveal).find('.tab-local-form').hide();

        $("#" + elementReveal).find('.tab-global-ars-block').hide();
        $("#" + elementReveal).find('.tab-global-ars-form').hide();
        $("#" + elementReveal).find('.tab-global-ars-workflow').hide();
        $("#" + elementReveal).find('.tab-global-sharing-form').hide();
        $("#" + elementReveal).find('.tab-global-normal-block').hide();
        $("#" + elementReveal).find('.tab-global-form').hide();

        if (filter == "cms") {
            $("#" + elementReveal).find('.tab-local-normal-block').show();
            $("#" + elementReveal).find('.tab-global-normal-block').show();
            $("#" + elementReveal).find('.tab-local-form').show();
            $("#" + elementReveal).find('.tab-global-form').show();

        } else if (filter == "ars") {
            $("#" + elementReveal).find('.tab-local-ars-block').show();
            $("#" + elementReveal).find('.tab-global-ars-block').show();
            $("#" + elementReveal).find('.tab-local-ars-form').show();
            $("#" + elementReveal).find('.tab-global-ars-form').show();

        } else if (filter == "workflow") {
            $("#" + elementReveal).find('.tab-local-ars-workflow').show();
            $("#" + elementReveal).find('.tab-global-ars-workflow').show();

        } else if (filter == "sharing") {
            $("#" + elementReveal).find('.tab-local-sharing-form').show();
            $("#" + elementReveal).find('.tab-global-sharing-form').show();

        }


    }
}

function save_workflow_item() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var formData = $("#vol-workflow-form").serializeObject();
    var inputWorkflowName = $('#vol-workflow-form').find('input[name="workflow-label"]');
    var sourceInvoked = $('#vol-workflow-form').find('input[name="source-invoked"]').val();
    var labelErrorWorkflow = inputWorkflowName.siblings('label.validation-message');
    var workflowName = formData['workflow-label'];
    var workflowId = formData['workflow-id'];
    var workflowType = formData['workflow-type'];
    var galleryType = formData['form-select-gallery'];
    var description = formData['form-help-text'];
    var requestVerificationToken = formData['__RequestVerificationToken'];

    $.ajax({
        method: "POST",
        url: urlSite + "ARS/validateWorkflowName",
        data: {
            workflowName: workflowName,
            workflowId: workflowId,
            workflowType: workflowType,
            source: sourceInvoked,
            "__RequestVerificationToken": requestVerificationToken
        },
        beforeSend: function () {
            $('img.spinner').show();
            $("#vol-workflow-form").find('.submit-button').find('.button').attr('disabled', 'disabled');
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status === 200) {
            labelErrorWorkflow.hide();

            var stepsDefaultMinimal = false;
            var customSuccessPageValidation = false;

            var arsLogin = false;
            if (!$('#vol-workflow-form #step-reg-form').hasClass('is-hidden')) {
                stepsDefaultMinimal = $('#vol-workflow-form #step-reg-form .step-rules .rule').length > 1;
            } else if (!$('#vol-workflow-form #step-sign-up').hasClass('is-hidden')) {
                stepsDefaultMinimal = $('#vol-workflow-form #step-sign-up .step-rules .rule').length > 1;
            } else if (!$('#vol-workflow-form #step-partner').hasClass('is-hidden')) {
                stepsDefaultMinimal = $('#vol-workflow-form #step-partner .step-rules .rule').length > 1;
            }

            var containSpecificUrl = false;
            if (workflowType == '4') {
                arsLogin = true;
                localStorage.removeItem("json-conditions-ars-login");
            }
            else if (workflowType == '0' || workflowType == '1') {
                if ($("#vol-workflow-form .specific-url-rule").length > 0)
                    containSpecificUrl = true;
            }

            // Validation for custom success page
            if (($("#vol-workflow-form .custom-pages ul li").length > 0 && stepsDefaultMinimal) || arsLogin == true || containSpecificUrl == true) {
                customSuccessPageValidation = true;
            }
            if ($("#vol-workflow-form .custom-steps .step-page").length > 0 || customSuccessPageValidation) {
                $.ajax({
                    method: "POST",
                    url: urlSite + "ARS/AddOrUpdateArsWorkflow",
                    data: {
                        form: formData,
                        //jsondata: localStorage.getItem("vol-workflow-pages"),
                        jsondata: sessionStorage.getItem("vol-workflow-pages"),
                        //jsonrules: localStorage.getItem("vol-workflow-rules"),
                        jsonrules: sessionStorage.getItem("vol-workflow-rules"),
                        "__RequestVerificationToken": requestVerificationToken
                    },
                    beforeSend: function () {
                        $('#ars-vol-reg-workflow').find('.processing_screen').show();
                    }
                }).done(function (dataInner) {
                    var jsonResultInner = JSON.parse(dataInner);

                    if (jsonResultInner.status === 200) {
                        //Close modal and display message of success
                        //localStorage.removeItem("vol-workflow-pages");
                        sessionStorage.removeItem("vol-workflow-pages");
                        //localStorage.removeItem("vol-workflow-rules");
                        sessionStorage.removeItem("vol-workflow-rules");

                        Swal.fire({
                            title: window.translation.success,
                            text: window.translation.workflow_saved_successfully,
                            icon: "success",
                            closeOnConfirm: true

                        }).then(function (result) {
                            var referrerURL = jsonResultInner.referrerURL.toString();

                            if (referrerURL != '') {
                                window.location.href = referrerURL;
                            }
                            else {
                                $('#ars-vol-reg-workflow').foundation('close');

                                $('img.spinner').hide();
                                $("#vol-workflow-form").find('.submit-button').find('.button').removeAttr('disabled');
                                location.reload();

                            }

                        });

                    } else {
                        Swal.fire({
                            title: window.translation.error,
                            text: jsonResultInner.message,
                            icon: "error",
                            closeOnConfirm: true
                        });
                    }

                    //Hide processing screen
                    $('#ars-vol-reg-workflow').find('.processing_screen').show();
                });
            } else {
                var messageError = window.translation.add_atleast_one_block;
                if ($("#vol-workflow-form .custom-pages ul li").length > 0) {
                    messageError = window.translation.please_add_one_branch_rule;
                }

                Swal.fire({
                    title: window.translation.warning,
                    text: messageError,
                    icon: "warning",
                    closeOnConfirm: true
                });

                $('img.spinner').hide();
                $("#vol-workflow-form").find('.submit-button').find('.button').removeAttr('disabled');
            }
        }
        else {
            labelErrorWorkflow.show();
            Swal.fire({
                title: window.translation.error,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });

            $('img.spinner').hide();
            $("#vol-workflow-form").find('.submit-button').find('.button').removeAttr('disabled');
        }
    });
}


function process_add_to_site(elementReveal) {
    $('#' + elementReveal).find('.add-to-site').on('click', function () {
        var typeItem = $(this).attr('data-type-item');
        var workflowType = $(this).attr('data-type-workflow');
        var itemID = $(this).attr('data-item-id');
        var itemName = $(this).attr('data-item-name');
        var sourceGallery = $(this).attr('data-gallery');

        if (typeItem === 'ars-workflow') {
            if (workflowType === 'signup' || workflowType === 'partner-reg' || workflowType === 'vol-reg' || workflowType === 'login') {

                Swal.fire({
                    title: window.translation.are_you_sure,
                    text: window.translation.add_workflow_from_gallery,
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true
                }).then(function (result) {
                    if (result.isConfirmed) {
                        $("#" + elementReveal).find('.processing_screen').show();
                        openModalToGetInformation(elementReveal, itemName, "ars-workflow", itemID, sourceGallery);
                    }
                });


            }
        } else if (typeItem === "block") {

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.add_block_confirmation_message,
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: true
            }).then(function (result) {
                if (result.isConfirmed) {
                    $("#" + elementReveal).find('.processing_screen').show();
                    openModalToGetInformation(elementReveal, itemName, "block", itemID, sourceGallery);
                }
            });

        }

    });
}


function openModalToGetInformation(elementReveal, currentName, source, itemID, sourceGallery) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $('#clone-select-configuration').foundation('open');
    $('#clone-select-configuration').find('input#new-name-block').val(currentName);

    $('#clone-select-configuration').on('closed.zf.reveal', function () {
        $("#" + elementReveal).find('.processing_screen').hide();
    });

    $('#clone-select-configuration').find('a.save-clone-setting-button').on('click', function (e) {

        var newName = $('#clone-select-configuration').find('input#new-name-block').val();
        //Logic for CSRF token
        var theForm = $(this).closest('form');
        var requestVerificationToken = '';
        if (theForm !== null) {
            var theDataForm = theForm.serializeObject();
            requestVerificationToken = theDataForm['__RequestVerificationToken'];
        }

        
        if (source == "ars-workflow") {
            //Add the new name
            var values = {
                wID: itemID,
                gType: sourceGallery,
                newName: newName,
                isSignup: "true",
                "__RequestVerificationToken": requestVerificationToken
            };
            $.ajax({
                method: "POST",
                url: urlSite + "admin/CloneARSWorflowSignUp",
                data: values
            }).done(function (data) {
                var response = JSON.parse(data);
                $('#clone-select-configuration').foundation('close');
                if (response.code == "200") {
                    Swal.fire({
                        title: "",
                        icon: "success",
                        text: response.message,
                        confirmButtonText: "Ok"
                    });
                    location.reload();
                } else {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: response.message,
                        confirmButtonText: "Ok"
                    });
                    $("#" + elementReveal).find('.processing_screen').hide();

                }
            });

        } else if (source == "block") {
            var regionID = 0;

            var values = {
                source: "cms",
                regionID: regionID,
                blockID: itemID,
                sourceGallery: sourceGallery,
                newName: newName
            };

            $.ajax({
                method: "POST",
                url: urlSite + "admin/AddBlockToRegionFromGallery",
                data: values
            }).done(function (data) {
                var response = JSON.parse(data);
                $('#clone-select-configuration').foundation('close');
                if (response.code == "200") {
                    Swal.fire({
                        title: "",
                        icon: "success",
                        text: response.message,
                        confirmButtonText: "Ok"
                    });
                    location.reload();
                } else {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: response.message,
                        confirmButtonText: "Ok"
                    });
                    $("#" + elementReveal).find('.processing_screen').hide();

                }

            });

        }
    });
}

function validateMainPhoneChanges(idForm) {
    var selector = 'form#' + idForm;

    $(selector).on('change', 'input[id="yes-no-required--primary_phone"]', function () {

        var fields = $(selector).find('#input-text--primary_phone').val();

        if ($(this).is(':checked')) {
            if (fields.indexOf('Home') !== -1) {
                $(selector).find('#yes-no-visible--phone').prop('checked', true);
            } else {
                $(selector).find('#yes-no-visible--phone').prop('checked', false);
            }

            if (fields.indexOf('Business') !== -1) {
                $(selector).find('#yes-no-visible--work_phone').prop('checked', true);
            } else {
                $(selector).find('#yes-no-visible--work_phone').prop('checked', false);
            }

            if (fields.indexOf('Mobile') !== -1) {
                $(selector).find('#yes-no-visible--mobile_phone').prop('checked', true);
            } else {
                $(selector).find('#yes-no-visible--mobile_phone').prop('checked', false);
            }

            if (fields.indexOf('Other') !== -1) {
                $(selector).find('#yes-no-visible--other_phone').prop('checked', true);
            } else {
                $(selector).find('#yes-no-visible--other_phone').prop('checked', false);
            }

            $(selector).find('#yes-no-visible--phone').prop('disabled', 'disabled');
            $(selector).find('#yes-no-visible--work_phone').prop('disabled', 'disabled');
            $(selector).find('#yes-no-visible--mobile_phone').prop('disabled', 'disabled');
            $(selector).find('#yes-no-visible--other_phone').prop('disabled', 'disabled');

            $(selector).find('#yes-no-required--phone').prop('disabled', 'disabled')
            $(selector).find('#yes-no-required--work_phone').prop('disabled', 'disabled')
            $(selector).find('#yes-no-required--mobile_phone').prop('disabled', 'disabled')
            $(selector).find('#yes-no-required--other_phone').prop('disabled', 'disabled')

        } else {
            // $(selector).find('#yes-no-required--phone').removeAttr('disabled');
            // $(selector).find('#yes-no-required--work_phone').removeAttr('disabled');
            // $(selector).find('#yes-no-required--mobile_phone').removeAttr('disabled');
            // $(selector).find('#yes-no-required--other_phone').removeAttr('disabled');

        }
    });
    $(selector).on('change', 'input[id="yes-no-visible--primary_phone"]', function () {

        var fields = $(selector).find('#input-text--primary_phone').val();
        if ($(this).is(':checked')) {
            if (!$(selector).find('#yes-no-required--primary_phone').is(':checked')) {

                if (fields.indexOf('Home') !== -1) {
                    $(selector).find('#yes-no-visible--phone').prop('checked', true);
                } else {
                    $(selector).find('#yes-no-visible--phone').prop('checked', false);
                }
                if (fields.indexOf('Business') !== -1) {
                    $(selector).find('#yes-no-visible--work_phone').prop('checked', true);
                } else {
                    $(selector).find('#yes-no-visible--work_phone').prop('checked', false);
                }

                if (fields.indexOf('Mobile') !== -1) {
                    $(selector).find('#yes-no-visible--mobile_phone').prop('checked', true);
                } else {
                    $(selector).find('#yes-no-visible--mobile_phone').prop('checked', false);
                }

                if (fields.indexOf('Other') !== -1) {
                    $(selector).find('#yes-no-visible--other_phone').prop('checked', true);
                } else {
                    $(selector).find('#yes-no-visible--other_phone').prop('checked', false);
                }

                $(selector).find('#yes-no-visible--phone').prop('disabled', 'disabled');
                $(selector).find('#yes-no-visible--work_phone').prop('disabled', 'disabled');
                $(selector).find('#yes-no-visible--mobile_phone').prop('disabled', 'disabled');
                $(selector).find('#yes-no-visible--other_phone').prop('disabled', 'disabled');

                $(selector).find('#yes-no-required--phone').prop('checked', false);
                $(selector).find('#yes-no-required--work_phone').prop('checked', false);
                $(selector).find('#yes-no-required--mobile_phone').prop('checked', false);
                $(selector).find('#yes-no-required--other_phone').prop('checked', false);

                //$(selector).find('#yes-no-required--phone').prop('disabled', 'disabled');
                //$(selector).find('#yes-no-required--work_phone').prop('disabled', 'disabled');
                //$(selector).find('#yes-no-required--mobile_phone').prop('disabled', 'disabled');
                //$(selector).find('#yes-no-required--other_phone').prop('disabled', 'disabled');

            } else {
                console.log("Required checked!");
            }

        } else {

            $(selector).find('#yes-no-visible--phone').removeAttr('disabled');
            $(selector).find('#yes-no-visible--work_phone').removeAttr('disabled');
            $(selector).find('#yes-no-visible--mobile_phone').removeAttr('disabled');
            $(selector).find('#yes-no-visible--other_phone').removeAttr('disabled');

            $(selector).find('#yes-no-required--phone').removeAttr('disabled');
            $(selector).find('#yes-no-required--work_phone').removeAttr('disabled');
            $(selector).find('#yes-no-required--mobile_phone').removeAttr('disabled');
            $(selector).find('#yes-no-required--other_phone').removeAttr('disabled');
        }

    });
}

function validatePhoneValues(idForm) {
    var selector = 'form#' + idForm;
    $(selector).find('#yes-no-visible--phone').removeAttr('disabled');
    $(selector).find('#yes-no-visible--work_phone').removeAttr('disabled');
    $(selector).find('#yes-no-visible--mobile_phone').removeAttr('disabled');
    $(selector).find('#yes-no-visible--other_phone').removeAttr('disabled');

    $(selector).find('#yes-no-required--phone').removeAttr('disabled');
    $(selector).find('#yes-no-required--work_phone').removeAttr('disabled');
    $(selector).find('#yes-no-required--mobile_phone').removeAttr('disabled');
    $(selector).find('#yes-no-required--other_phone').removeAttr('disabled');
}

function validateAfterReader(idForm) {
    var selector = 'form#' + idForm;
    var fields = $(selector).find('#input-text--primary_phone').val();

    if (fields == null || fields == undefined || fields == '')
        return;

    if ($(selector).find('input[id="yes-no-visible--primary_phone"]').is(':checked')) {

        if (!$(selector).find('#yes-no-required--primary_phone').is(':checked')) {

            if (fields.indexOf('Home') !== -1) {
                $(selector).find('#yes-no-visible--phone').prop('checked', true);
            } else {
                $(selector).find('#yes-no-visible--phone').prop('checked', false);
            }
            if (fields.indexOf('Business') !== -1) {
                $(selector).find('#yes-no-visible--work_phone').prop('checked', true);
            } else {
                $(selector).find('#yes-no-visible--work_phone').prop('checked', false);
            }

            if (fields.indexOf('Mobile') !== -1) {
                $(selector).find('#yes-no-visible--mobile_phone').prop('checked', true);
            } else {
                $(selector).find('#yes-no-visible--mobile_phone').prop('checked', false);
            }

            if (fields.indexOf('Other') !== -1) {
                $(selector).find('#yes-no-visible--other_phone').prop('checked', true);
            } else {
                $(selector).find('#yes-no-visible--other_phone').prop('checked', false);
            }

            $(selector).find('#yes-no-visible--phone').prop('disabled', 'disabled');
            $(selector).find('#yes-no-visible--work_phone').prop('disabled', 'disabled');
            $(selector).find('#yes-no-visible--mobile_phone').prop('disabled', 'disabled');
            $(selector).find('#yes-no-visible--other_phone').prop('disabled', 'disabled');

        } else {

            $(selector).find('#yes-no-visible--phone').prop('disabled', 'disabled');
            $(selector).find('#yes-no-visible--work_phone').prop('disabled', 'disabled');
            $(selector).find('#yes-no-visible--mobile_phone').prop('disabled', 'disabled');
            $(selector).find('#yes-no-visible--other_phone').prop('disabled', 'disabled');

            $(selector).find('#yes-no-required--phone').prop('disabled', 'disabled')
            $(selector).find('#yes-no-required--work_phone').prop('disabled', 'disabled')
            $(selector).find('#yes-no-required--mobile_phone').prop('disabled', 'disabled')
            $(selector).find('#yes-no-required--other_phone').prop('disabled', 'disabled')
        }
    }

}

function getDataForSalesforceObject(typeModal) {
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
    var option = '<option value=""> - Select an Object - </option>';
    if (typeModal === 'partner') {
        option += '<option value="Contact">Contact</option>';
        option += '<option value="Account">Organization</option>';
    } else if (typeModal === 'signup') {
        option += '<option value="Contact">Contact</option>';
        option += '<option value="' + instancePrefix + 'Connection__c">Connection</option>';
    }
    return option;
}

function processWaiverSelectObject(urlSite, updating, objValue, fieldValue) {
    if (updating === true) {
        $('#blocks-ars-waiver-conf input[name="object_to_save"]').val(objValue);
        $('#blocks-ars-waiver-conf select[name="salesforce_object"]').val(objValue);
        callServiceForWaiver(objValue, "ARS/GetFieldsForWaivers", urlSite, fieldValue, true);
    }
    $('#blocks-ars-waiver-conf select[name="salesforce_object"]').on('change', function () {
        var objectValue = $(this).val();
        $('#blocks-ars-waiver-conf input[name="object_to_save"]').val(objectValue);
        callServiceForWaiver(objectValue, "ARS/GetFieldsForWaivers", urlSite, '', false);
    });
}

function backend_emailing_contacts_templates_settings() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var objectTable = $('#page-table');
    if ($('body.backend-page').length > 0) {
        $(document).on('click', 'a[data-element-reveal="emailing-contacts-templates-edit-backend"]', function () {
            var elementReveal = $(this).data('element-reveal');
            $('#' + elementReveal).foundation('open');

            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetEmailingContactsTemplates",
                data: {},
                beforeSend: function () {
                    $('#page-management .processing_screen').show();

                    datatable_destory_by_id('page-table');
                    $('#page-table tbody').empty();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                //Assing values
                if (jsonResult.length > 0) {
                    $("#emailing-contacts-templates-edit-backend table tbody").empty();
                    for (var i = 0; i < jsonResult.length; i++) {
                        var info_table = '<tr><td class="parent"><a data-element-reveal="create-email-contact-template" data-template-id="' + jsonResult[i].ID + '" class="blue-key">' + jsonResult[i].TemplateName + '</a></td><td>' + jsonResult[i].Active + '</td><td>' + jsonResult[i].AvailableToRole + '</td><td>' + jsonResult[i].Subject + '</td></tr>';

                        $("#emailing-contacts-templates-edit-backend table tbody").append(info_table);
                    }
                    datatable_initialize_notAjax_with_params(objectTable, null, null, false, true, false);
                } else {
                    var empty_page = '<tr class="odd"><td valign="top" colspan="0" class="dataTables_empty">No records found - sorry</td></tr>';
                    $("#emailing-contacts-templates-edit-backend table tbody").append(empty_page);
                }

                //Hide processing screen
                $('#emailing-contacts-templates-edit-backend .processing_screen').hide();
            });
        });

        $(document).on('click', 'a[data-element-reveal="create-email-contact-template"]', function () {
            var elementReveal = $(this).data('element-reveal');
            var self = $('#create-email-contact-template-form');

            // Consulting if modal was open from menu modal or page manage modal
            var modal_open_from = $(this).attr('data-modal-from');
            var template_id = $(this).attr('data-template-id');
            if (template_id != null) {
                $.ajax({
                    method: "GET",
                    url: urlSite + "admin/GetEmailingContactsTemplateDetail?emailingContactsTemplateId=" + template_id,
                    beforeSend: function () {
                        //$('#emailing-contacts-templates-edit-backend').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.code === 200) {
                        document.getElementById("create-email-contact-template-form").reset();
                        $('#' + elementReveal).find("#AvailableToRoles__").multiselect('reload');

                        $('#' + elementReveal).find("#ID").val(jsonResult['ID']);
                        $('#' + elementReveal).find("#TemplateName").val(jsonResult['TemplateName']);
                        $('#' + elementReveal).find("#AvailableToRoles__").val(jsonResult['AvailableToRole'].split(','));
                        $('#' + elementReveal).find("#AvailableToRoles__").multiselect();
                        $('#' + elementReveal).find("#AvailableToRoles__").multiselect('reload');
                        if (jsonResult['Active'] == true) {
                            $('#' + elementReveal).find("#Active").prop('checked', true);
                        }
                        if (jsonResult['IsDefault'] == true) {
                            $('#' + elementReveal).find("#IsDefault").prop('checked', true);
                        }
                        $('#' + elementReveal).find("#CC").val(jsonResult['CC']);
                        $('#' + elementReveal).find("#Subject").val(jsonResult['Subject']);
                        $('#' + elementReveal).find("#Body").val(jsonResult['Body']);
                    }
                });
            }

            $('#' + elementReveal).foundation('open');

            //Reload elements inside modal
            $('#' + elementReveal).foundation();
        });

        $(document).on('click', '#create-email-contact-template-form .save-emaling-contact-template', function () {
            if ($('#create-email-contact-template-form').valid()) {

                var formData = $("#create-email-contact-template-form").serializeObject();
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/CreateEmailingContactsTemplate",
                    data: formData,
                    beforeSend: function () {
                        $('#page-conf').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult.status.toString() === "200") {

                        Swal.fire({
                            title: "",
                            html: jsonResult.message,
                            icon: "success",
                            showCancelButton: false,
                            confirmButtonText: "Ok",
                            closeOnConfirm: true,
                            closeOnCancel: true
                        }).then(function (result) {
                            window.location.reload();
                        });
                    }
                    else if (jsonResult.status.toString() === "500") {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: jsonResult.message,
                            confirmButtonText: "Ok"
                        });
                    }

                    //Hide processing screen
                    $('#create-email-contact-template-form').find('.processing_screen').hide();

                    return false;
                });
                return false;
            } else {
                Swal.fire({
                    title: "",
                    icon: "warning",
                    text: "Please enter all required fields.",
                    confirmButtonText: "Ok"
                });
                return false;
            }
        });
    }
}

function backend_custom_system_pages() {
    if (!is_backend_page()) return;
    if (window.location.hash && $('body.backend-page.new-template-system').length > 0) {
        if (window.location.hash.indexOf('custom-system-page-settings') !== -1) {
            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
            $("#custom-system-page-configuration").foundation('open');
            var reveal = 'custom-system-page-configuration';
            $("#custom-system-page-configuration").find('.processing_screen').show();

            $.ajax({
                method: "GET",
                url: urlSite + "AdvancedCMS/GetCustomSystemPages"
            }).done(function (data) {
                var dataResult = JSON.parse(data);
                if (dataResult.status === 200) {
                    if (dataResult.Pages !== null && dataResult.Pages !== undefined) {
                        var tbody = '';
                        dataResult.Pages.forEach(function (item) {
                            var row = '<tr>';
                            row += '<td>' + item.TemplateName + '</td>';
                            row += '<td>' + item.PageName + '</td>';
                            row += '<td>' + item.Active + '</td>';
                            row += '<td>' + item.InUse + '</td>';
                            if (item.TemplateName !== 'Default System Template')
                                row += '<td>' + '<a href="#" data-element-reveal="custom-system-page-detail-configuration" class="open-custom-system-page" data-page-id="' + item.ID + '">Edit</a>' + '</td>';
                            else
                                row += '<td></td>';
                            row += '</tr>';

                            tbody += row;
                        });

                        if (tbody !== '') {
                            $('table#custom-system-page-table').find('tbody').empty();
                            $('table#custom-system-page-table').find('tbody').html(tbody);
                            $('#' + reveal).find('.processing_screen').hide();
                            $('table#custom-system-page-table tbody a.open-custom-system-page').on('click', function (e) {
                                e.preventDefault();

                                var reveal = $(this).attr('data-element-reveal');
                                $('#' + reveal).foundation('open');
                                $('#' + reveal).find('.processing_screen').show();
                                $('#' + reveal).find('.title-update').removeClass('hide-custom');
                                $('#' + reveal).find('.title-add').addClass('hide-custom');
                                var id = $(this).attr('data-page-id');


                                $.ajax({
                                    method: "GET",
                                    url: urlSite + "AdvancedCMS/GetLayoutsList"

                                }).done(function (data) {
                                    var dataResult = JSON.parse(data);
                                    if (dataResult.status === 200) {
                                        if (dataResult.layouts !== undefined && dataResult.layouts !== null) {
                                            var options = '<option>' + window.translation.select + '</option>';
                                            dataResult.layouts.forEach(function (item) {
                                                options += '<option value="' + item.ID + '">' + item.Name + '</option>';
                                            });

                                            $('#custom-system-page-detail-configuration').find('select#csp-layout-id').html(options);
                                        }


                                        $.ajax({
                                            method: "GET",
                                            url: urlSite + "AdvancedCMS/GetCustomSystemPagesPerID?id=" + id
                                        }).done(function (data) {
                                            var dataResult = JSON.parse(data);
                                            if (dataResult.status === 200) {
                                                if (dataResult.Page !== null && dataResult.Page !== undefined) {
                                                    $('input#csp-id').val(dataResult.Page.ID);
                                                    $('input#csp-site-id').val(dataResult.Page.SiteID);
                                                    $('input#csp-name').val(dataResult.Page.TemplateName);
                                                    $('select#csp-layout-id').val(dataResult.Page.LayoutID);
                                                    $('select#csp-page-name').val(dataResult.Page.PageName);
                                                    if (dataResult.Page.Active === true) {
                                                        $('input#cps-active').prop('checked', true);
                                                    } else {
                                                        $('input#cps-active').prop('checked', false);

                                                    }
                                                }
                                                $('#' + reveal).find('.processing_screen').hide();
                                            } else {
                                                Swal.fire({
                                                    title: "",
                                                    icon: "error",
                                                    text: dataResult.message,
                                                    confirmButtonText: "Ok"
                                                });
                                                $("#" + reveal).find('.processing_screen').hide();

                                            }
                                        });
                                    } else {
                                        Swal.fire({
                                            title: "",
                                            icon: "error",
                                            text: dataResult.message,
                                            confirmButtonText: "Ok"
                                        });
                                        $('#' + reveal).find('.processing_screen').hide();
                                    }
                                });
                            });
                        } else {
                            $("#" + reveal).find('.processing_screen').hide();
                        }
                    } else {
                        $("#" + reveal).find('.processing_screen').hide();
                    }
                } else {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: dataResult.message,
                        confirmButtonText: "Ok"
                    });
                    $("#custom-system-page-detail-configuration").find('.processing_screen').hide();

                }
            });

            //Add New System Page 
            if ($("#custom-system-page-configuration").find('a.create-new-system-page').length > 0) {
                $(document).on('click', '#custom-system-page-configuration a.create-new-system-page', function (e) {
                    e.preventDefault();

                    var reveal = $(this).attr('data-element-reveal');
                    if ($("#" + reveal).length > 0) {
                        $("#" + reveal).foundation('open');
                        $('#' + reveal).find('.title-update').addClass('hide-custom');
                        $('#' + reveal).find('.title-add').removeClass('hide-custom');
                        $("#" + reveal).find('processing_screen').removeClass('hide-custom');
                        $("#custom-system-page-detail-configuration").find('.processing_screen').show();
                        $.ajax({
                            method: "GET",
                            url: urlSite + "AdvancedCMS/GetLayoutsList"

                        }).done(function (data) {
                            var dataResult = JSON.parse(data);
                            if (dataResult.status === 200) {
                                if (dataResult.layouts !== undefined && dataResult.layouts !== null) {
                                    var options = '<option>' + window.translation.select + '</option>';
                                    dataResult.layouts.forEach(function (item) {
                                        options += '<option value="' + item.ID + '">' + item.Name + '</option>';
                                    });

                                    $('#custom-system-page-detail-configuration').find('select#csp-layout-id').html(options);
                                }

                                $("#custom-system-page-detail-configuration").find('.processing_screen').hide();
                            } else {
                                Swal.fire({
                                    title: "",
                                    icon: "error",
                                    text: dataResult.message,
                                    confirmButtonText: "Ok"
                                });
                                $("#custom-system-page-detail-configuration").find('.processing_screen').hide();
                            }

                        });



                        $(document).on('click', '#' + reveal + ' .custom-button', function (e) {
                            e.preventDefault();
                        });
                    }
                });
            }
        }
    }
}

//backend for browse organization page settings
function browse_organization_settings() {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $(document).on('click', 'a[data-element-reveal="browse-organization-settings-edit-backend"]', function () {
        var elementReveal = $(this).data('element-reveal');
        $('#' + elementReveal).find('.processing_screen').hide();
        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();

        //Get info of settings saved in database
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetBrowseOrganizationSettings",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            },
        }).done(function (data) {
            var dataResult = JSON.parse(data);
            if (dataResult.tableSettings !== null && dataResult.tableSettings !== undefined && dataResult.tableSettings !== "") {
                var tableSetting = JSON.parse(dataResult.tableSettings);
                $('#' + elementReveal).find('input[name="yes-no-visible--list_org_name"]').prop("checked", true);
                $('#' + elementReveal).find('input[name="yes-no-visible--list_city"]').prop("checked", tableSetting.display_city);
                $('#' + elementReveal).find('input[name="yes-no-visible--list_state"]').prop("checked", tableSetting.display_state);
                $('#' + elementReveal).find('input[name="yes-no-visible--list_impact_area"]').prop("checked", tableSetting.display_impact_area);
            } else {
                $('#' + elementReveal).find('input[name="yes-no-visible--list_org_name"]').prop("checked", true);
                $('#' + elementReveal).find('input[name="yes-no-visible--list_city"]').prop("checked", true);
                $('#' + elementReveal).find('input[name="yes-no-visible--list_state"]').prop("checked", true);
                $('#' + elementReveal).find('input[name="yes-no-visible--list_impact_area"]').prop("checked", true);
            }
            $('#' + elementReveal).find('input[name="yes-no-visible--list_org_name"]').prop("disabled", "disabled");
            $("#title_tabs_browse_org li.tabs-title").on("click", function () {
                $(this).parents(".browse-org-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });

            $(".browse-org-ckeditor").each(function () {
                initialize_ckeditor_ars($(this).attr("id"), "");
            });
            if (dataResult.code === "200") {

                if (dataResult.internationalizationItems != null) {
                    var items = JSON.parse(dataResult.internationalizationItems);
                    items.forEach(function (item, index) {
                        $("#" + item.Group + "_" + item.Item + "-" + item.Language_ID).val(item.Value);
                    });
                }
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: dataResult.message,
                    confirmButtonText: "Ok"
                });
            }
            $('#' + elementReveal).find('.processing_screen').hide();


        });

    });

}

function backend_cookie_consent_settings() {
    if (!is_backend_page()) return;
    $(document).on('click', '#cookie-consent-banner-settings-edit-backend .save-settings', function () {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
       
        $('#cookie-consent-banner-settings-edit-backend').find('.processing_screen').show();
        var formData = $("#cookie-consent-banner-management").serializeObject();

        for (var i in CKEDITOR.instances) {
            if (CKEDITOR.instances[i].name.indexOf("cookie-consent-body") != -1) {
                formData[CKEDITOR.instances[i].name] = escape(CKEDITOR.instances[i].getData());
            }
        }
        $.ajax({
            method: "POST",
            url: urlSite + "admin/SaveCookieConsentSetting",
            data: formData,
            beforeSend: function () {
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            if (jsonResult.status.toString() === "200") {
                $('#cookie-consent-banner-settings-edit-backend').foundation('close');
                Swal.fire({
                    title: "",
                    icon: "success",
                    text: "The settings were saved correctly",
                    confirmButtonText: "Ok"
                });
                location.reload();
            }
            else if (jsonResult.status.toString() === "500") {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: jsonResult.message,
                    confirmButtonText: "Ok"
                });
            }

            //Hide processing screen
            $('#cookie-consent-banner-settings-edit-backend').find('.processing_screen').hide();

            return false;
        });

        return false;
    });

    $(document).on('click', 'a[data-element-reveal="cookie-consent-banner-settings-edit-backend"]', function () {
        var elementReveal = $(this).data('element-reveal');

        $('#' + elementReveal).parent().css("z-index", "10000");
        window.scroll_current_pos_y = $(window).scrollTop();
        if ($("#cookie-consent-banner-settings-edit-backend").length > 0) {
            $("#cookie-consent-banner-settings-edit-backend li.tabs-title").on("click", function () {
                $(this).parents(".cookie-consent-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });
        }

        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();

        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $.ajax({
            method: "Get",
            url: urlSite + "admin/CookieConsentSettings",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {

            var dataResult = JSON.parse(data);
            if (dataResult) {
                if (dataResult.Status == "200") {

                    if (dataResult.IsEnabled == true)
                        $('#' + elementReveal).find('input[name="yes-no-visible--enable-cookie-consent"]').prop('checked', true);
                    else
                        $('#' + elementReveal).find('input[name="yes-no-visible--enable-cookie-consent"]').prop('checked', false);

                    if (dataResult.BackGroundRGB != '' && dataResult.BackGroundRGB !== undefined) {
                        $('#' + elementReveal).find('input[name="background-rgb"]').val(dataResult.BackGroundRGB);
                    }

                    if (dataResult.TextColor != '' && dataResult.TextColor !== undefined) {
                        $('#' + elementReveal).find('input[name="text-color"]').val(dataResult.TextColor);
                    }

                    if ($('#' + elementReveal + 'input.cookie-consent-background-rgb')) {
                        createColorPickerField($("#" + elementReveal).find('input.cookie-consent-background-rgb'), null);
                    }

                    if ($('#' + elementReveal + 'input.cookie-consent-text-color')) {
                        createColorPickerField($("#" + elementReveal).find('input.cookie-consent-text-color'), null);
                    }

                    dataResult.ButtonText.forEach(function (item) {
                        var fieldName = item.FieldName + '-' + item.LanguageID;
                        $('#' + elementReveal).find('#' + fieldName).text(item.Value);
                    });

                    $(".cookie-consent-ckeditor").each(function () {
                        initialize_ckeditor_ars($(this).attr("id"), "");
                    });

                } else if (dataResult.Status == "500") {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: dataResult.Message,
                        confirmButtonText: "Ok"
                    });
                }
            }
            $('#' + elementReveal).find('.processing_screen').hide();
        });


    });
}

function verification_code_settings() {
    if (!is_backend_page()) return;

    $(document).on('click', '#verification-code-settings-edit-backend .save-settings', function () {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $('#verification-code-settings-edit-backend').find('.processing_screen').show();
        var formData = $("#verification-code-management").serializeObject();

        for (var i in CKEDITOR.instances) {
            if (CKEDITOR.instances[i].name.indexOf("verification-code-body") != -1) {
                formData[CKEDITOR.instances[i].name] = escape(CKEDITOR.instances[i].getData());
            }
        }
        $.ajax({
            method: "POST",
            url: urlSite + "admin/SaveverificationCodeSettings",
            data: formData,
            beforeSend: function () {
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            if (jsonResult.code === 200) {
                $('#verification-code-settings-edit-backend').foundation('close');
                Swal.fire({
                    title: "",
                    icon: "success",
                    text: "The settings were saved correctly",
                    confirmButtonText: "Ok"
                });
                location.reload();
            }
            else  {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: jsonResult.message,
                    confirmButtonText: "Ok"
                });
            }

            //Hide processing screen
            $('#verification-code-settings-edit-backend').find('.processing_screen').hide();

            return false;
        });

        return false;
    });

    $(document).on('click', 'a[data-element-reveal="verification-code-settings-edit-backend"]', function () {
        var elementReveal = $(this).data('element-reveal');
        $('#' + elementReveal).parent().css("z-index", "10000");
        window.scroll_current_pos_y = $(window).scrollTop();
        if ($("#verification-code-settings-edit-backend").length > 0) {
            $("#verification-code-settings-edit-backend li.tabs-title").on("click", function () {
                $(this).parents(".verification-code-tabs").find(".tabs-panel").not("#language-page-" + $(this).find("a").attr("data-language-id")).removeClass("is-active");
            });
        }

        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();

        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $.ajax({
            method: "Get",
            url: urlSite + "admin/VerificationCodeSettingsModal",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {

            var dataResult = JSON.parse(data);
            if (dataResult) {
                if (dataResult.code == 200) {

                    let existDataByLanguage = dataResult.languages != null && dataResult.languages.length > 0;

                    $(".verification-code-ckeditor").each(function () {
                        initialize_ckeditor_ars($(this).attr("id"), "");

                        if (existDataByLanguage === true) {
                            let lngId = $(this).data("language-id");

                            let languageElement = dataResult.languages.find(x => x.language_id == lngId)
                            if (languageElement !== undefined && languageElement !== null) {
                                $(this).val(languageElement.body);
                            } 
                        }
                    });


                } else {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: dataResult.Message,
                        confirmButtonText: "Ok"
                    });
                }
            }
            $('#' + elementReveal).find('.processing_screen').hide();
        });


    });


}


function getColorBasedTo(currentColor) {
    var newColor = "";
    if (currentColor.indexOf("rgb(") > -1 && currentColor.indexOf(")") > -1) {
        currentColor = currentColor.replace("rgb(", "");
        currentColor = currentColor.replace(")", "");
        var values = currentColor.split(",");
        if (values.length == 3) {
            var value = Math.round(((parseInt(values[0]) * 299) +
                (parseInt(values[1]) * 587) +
                (parseInt(values[2]) * 114)) / 1000);
            if (value > 125)
                newColor = "#000000";
            else
                newColor = "#ffffff";
        }
    }
    return newColor;
}


function validate_redirection_to_new_open_activation_module() {
    /*if (window.location.hash && is_backend_page()) {
        if (window.location.hash.indexOf('open-activation-module') !== -1 && $('body.backend-page').length > 0) {
            window.location = "/open-activation-module";
        }
    }*/
}


function add_event_for_ckeditor(ckItem, formId) {

    if (CKEDITOR.instances[ckItem] === null || CKEDITOR.instances[ckItem] === undefined)
        return;

    CKEDITOR.instances[ckItem].on('key', function () {
        assign_pending_change_value(formId);
    });

    //--- NEW
    CKEDITOR.instances[ckItem].on('change', function () {
        assign_pending_change_value(formId);
    });
}

function assign_pending_change_value(formId) {
    var currentValue = $(formId).find('input[name="pending-changes"]').val();
    if (currentValue !== "true")
        $(formId).find('input[name="pending-changes"]').val("true").trigger('change');
}

function add_event_for_fields_in_modal(formId) {

    $(formId).find('input[name="pending-changes"]').val("false");

    //validate the fields
    $(formId).find('input[type="text"]').on('change', function () {

        assign_pending_change_value(formId);
    });

    $(formId).find('input[type="text"]').on('input', function () {

        assign_pending_change_value(formId);
    });

    $(formId).find('input[type="checkbox"]').on('change', function () {
        assign_pending_change_value(formId);
    });

    $(formId).find('select').on('change', function () {
        assign_pending_change_value(formId);
    });

    $(formId).find('textarea').on('change', function () {
        assign_pending_change_value(formId);
    });

    $(formId).find('select[multiple="multiple"]').on('change', function () {
        assign_pending_change_value(formId);
    });

    $(formId).find('input[type="radio"]').on('change', function () {
        assign_pending_change_value(formId);
    });


    $(formId).find('input[type="number"]').on('change', function () {
        assign_pending_change_value(formId);
    });

    $(formId).find('input[type="file"]').on('change', function () {
        assign_pending_change_value(formId);
    });

    $(formId).find('input.image-source-field').bind('change', function () {
        assign_pending_change_value(formId);
    });



    $(formId).find('input[name="pending-changes"]').on('change', function () {
        $(formId).find('input.save-button').addClass('pending_changes');
    });

}

function validate_changes_to_save() {
    if (!is_backend_page()) return;

    //validating close modal with pending changes
    if($('body').find('.reveal.cms-modal-special-functionality button.close-button.special-close-button').length >0) {
        
        $('.reveal.cms-modal-special-functionality button.close-button.special-close-button').on('click', function (e) {
            var modal = $(this).parent().parent().find('.reveal.cms-modal-special-functionality');
            if (selectDynamiFilterModal != undefined && selectDynamiFilterModal != null) {
                selectDynamiFilterModal.destroy();
                selectDynamiFilterModal = null;
            }
            var pendingChanges = modal.find('form input[name="pending-changes"]').val();
            if (pendingChanges == "true") {
                e.stopImmediatePropagation();

                Swal.fire({
                    title: window.translation.discard,
                    text: window.translation.discard_changes,
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true

                }).then(function (result) {
                    if (result.isConfirmed) {
                        modal.foundation('close');
                    }
                });

            }
            if (modal.find('button.std-add_rule').length > 0 && modal.find('button.std-add_rule').hasClass('event-applied')) {
                modal.find('button.std-add_rule').removeClass('event-applied');
            }
        });
    }
}

function backendChangeDefaultTheme() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="change-default-theme-config"]', function () {
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';


        $('#' + elementReveal).foundation('open');

        $('#' + elementReveal).foundation();


        $('#' + elementReveal).find('input.reset-button').on('click', function (e) {
            $('#' + elementReveal).find('#theme-operation').val('0');
            e.preventDefault();
            e.stopImmediatePropagation();

            Swal.fire({
                title: "",
                text: "This procedure will erase all content, settings and data related to this Public Site. Please be completely sure before proceed. Are you sure?",
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: true
            }).then(function (result) {
                if (result.isConfirmed) {
                    $('#' + elementReveal).find('.processing_screen').show();
                    $('#' + elementReveal).find('form#change-default-theme-config-form').submit();
                }
            });

        });


        $('#' + elementReveal).find('input.change-button').on('click', function (e) {
            $('#' + elementReveal).find('#theme-operation').val('1');
            var valueSelected = $('#' + elementReveal).find('#seleted-theme').val();
            if (valueSelected.trim() === '') {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: "You should to select a Theme",
                    confirmButtonText: "Ok"
                });
                e.preventDefault();
                return false;
            } else {
                e.preventDefault();
                e.stopImmediatePropagation();

                Swal.fire({
                    title: "",
                    text: "This procedure will erase all content, settings and data related to this Public Site. Please be completely sure before proceed. Are you sure?",
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true

                }).then(function (result) {
                    if (result.isConfirmed) {
                        $('#' + elementReveal).find('.processing_screen').show();
                        $('#' + elementReveal).find('form#change-default-theme-config-form').submit();

                    }
                });

            }
        });

        return false;

    });

}

function backend_cc_email() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="cc-email-settings"]', function () {
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';


        $('#' + elementReveal).foundation('open');

        $('#' + elementReveal).foundation();

    });
}

function mobile_app_settings() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="mobile-app-settings"]', function () {
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';


        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();

        mobile_app_settings_load(elementReveal);
    });
}
function mobile_app_settings_load(elementReveal) {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetMobileAppSettings",
        data: {},
        beforeSend: function () {
            $('#' + elementReveal + ' .processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult.code == '200') {
            if (jsonResult.ListOfSetting && jsonResult.ListOfSetting.length > 0) {
                jsonResult.ListOfSetting.forEach(function (item, index) {
                    $('#MobileAppSettingId').val(item.Id);
                    $('#message-app-mobile-setting').text(item.Message);
                    $('#title-app-mobile-setting').val(item.Title);

                });
            }
        }

        $(".mobileapptextarea").each(function () {
            initialize_ckeditor_ars($(this).attr("id"), "");
        });
        $('#' + elementReveal + ' .processing_screen').hide();
    });

    if ($('button.save-mobile-app-settings').length > 0) {
        $('button.save-mobile-app-settings').on('click', function (e) {
            $('#' + elementReveal + ' .processing_screen').show();
            $('#mobile-app-settings-form').submit();
        });
    }
}

function checkin_settings_redirects() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="checkin-settings"]', function () {
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';


        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();
                
        checkin_settings_load(elementReveal);
    });
}

function checkin_settings_load(elementReveal) {
    if (!is_backend_page()) return;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetCheckInSettings",
        data: {},
        beforeSend: function () {
            $('#'+ elementReveal+ ' .processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult.code == '200') {
            //Get QR Pages

            //Get Quick Checkin App Settings

            //Get Custom Calculation Settings
            var isForllamasite = $('ul.custom-time-configuration').hasClass('is-for-llama-site');
            $('ul.custom-time-configuration li').remove();
            var classForLi = '';
            if (isForllamasite === true) {
                classForLi = 'hide-for-llamasite';
            }
            var itemToAdd =
                '<li class="' + classForLi +'">' +
                    '<input type="hidden" name="chk_000_val" id="chk_000_val" class="val-hidden-check" />' +
                    '<div class="input-group input-group-checkbox inner-input-group-checkbox">' +
                        '<input type="checkbox" id="chk_000" class="custom-calculation-type" data-value-rule="000" />' +
                        '<label for="chk_000" class="radio-button-style">' + window.translation.traditional_served_hours_calculation + '</label>' +
                    '</div>' +
                '</li>';
            $('ul.custom-time-configuration').append(itemToAdd);
            
            var atLeastOne = false;
            if (jsonResult.customCalculation && jsonResult.customCalculation.RuleSet && jsonResult.customCalculation.RuleSet.length > 0) {
                jsonResult.customCalculation.RuleSet.forEach(function (itemR, index) {
                    if (itemR.Enabled == 'true') {
                        atLeastOne = true;
                    }
                    if (jsonResult.customCalculation.RequestInsertConfiguration != undefined) {
                        $('input[name="RequestInsertConfiguration"]').val(jsonResult.customCalculation.RequestInsertConfiguration);
                    }
                    var description = itemR.Description;
                    var itemToAdd =
                        '<li class="' + classForLi +'">' +
                        '<input type="hidden" name="chk_' + itemR.Id + '_val" id="chk_' + itemR.Id + '_val" class="val-hidden-check"  value="' + (itemR.Enabled == 'true' ? itemR.Label : '') + '" />' +
                            '<div class="input-group input-group-checkbox inner-input-group-checkbox">' +
                        '<input type="checkbox" id="chk_' + itemR.Id + '" class="custom-calculation-type" ' +
                        (itemR.Enabled == 'true' ? "checked='checked'" : '') + '  data-value-rule="' + itemR.Label + '"  data-set-id="' + itemR.Id + '" />' +
                        '<label for="chk_' + itemR.Id + '"  class="radio-button-style">' + description + '</label>' +
                            '</div>' +
                        '</li>';
                    if (itemR.Definitions && itemR.Definitions.length > 0) {

                        itemToAdd += "<ul class='definitions-list definitions-list-" + itemR.Id + "' data-parent-set='" + itemR.Id + "'>";
                        itemR.Definitions.forEach(
                            function (itemDef, indexDef) {

                                var displayMode = (itemDef.Label == 'Definition1_02_add' && !jsonResult.customCalculationVariableCondition) ? 'style="display:none;"' : '';

                                var displayChecked = itemDef.Enabled == true && itemR.Enabled == 'true';
                                var descriptionDef = itemDef.Description;
                                if (itemDef.Simple === true) {
                                    descriptionDef = descriptionDef.replaceAll('%NumericValue%', '</label>'
                                        + '<input type="number" class="text-for-minutes" id="num_' + itemDef.Label + '" name="num_' + itemDef.Label + '" value="' + itemDef.NumericValue + '" ' +
                                        (displayChecked ? "" : "disabled='disabled'") + ' />'
                                        + '<label for="chkD_' + itemDef.Id + '" class="not-new-input">');
                                    itemToAdd +=
                                        '<li>' +
                                        '<input type="hidden" name="chkD_' + itemDef.Id + '_val" id="chkD_' + itemDef.Id + '_val" class="val-hidden-check-def val-hidden-check-def-group-' + itemR.Id + '"  value="' + (displayChecked ? itemDef.Label : '') + '" />' +
                                        '<div class="input-group input-group-checkbox inner-input-group-checkbox" ' + displayMode +' >' +
                                        '<input type="checkbox" id="chkD_' + itemDef.Id + '" class="custom-calculation-definition definition-group-' + itemR.Id + '" ' +
                                        (displayChecked ? "checked='checked'" : '') + '  data-value-rule="' + itemDef.Label + '" data-definition-id="' + itemDef.Id + '" data-parent-checkbox="' + itemR.Id + '" />' +
                                        '<label for="chkD_' + itemDef.Id + '">' + descriptionDef + '</label>' +
                                        '</div>' +
                                        '</li>';
                                }
                                else {
                                    var idGrpMark = descriptionDef.replaceAll(' ', '-').replace(/[^a-zA-Z ]/g, "");
                                    itemToAdd +=
                                        '<li><div class="definition-group-div">' +
                                       '<div class="input-group input-group-checkbox auto-input-group" >'+
                                            //'<label class="definition-group">' + descriptionDef + '</label>';
                                        '<input id="prnt' + idGrpMark + '" class="parent-group" type="checkbox" ' + (displayChecked ? "checked='checked'" : '') +' />'+
                                            '<label class="" for="prnt' + idGrpMark+'">' + descriptionDef + '</label>' +
                                        '</div>';

                                    var childInfo = '<ul>';
                                    itemDef.DefinitionChild.forEach(function (itemChild, indexChild) {

                                        var displayCheckedChild = itemDef.Enabled == true && itemR.Enabled == 'true' && itemChild.Enabled == true;
                                        var descriptionDefChild = itemChild.Description;

                                        if (itemChild.Simple === true) {
                                            var grpMark = descriptionDef.replaceAll(' ', '-').replace(/[^a-zA-Z ]/g, "");
                                            descriptionDefChild = descriptionDefChild.replaceAll('%NumericValue%', '</label>'
                                                + '<input type="number" class="text-for-minutes nmbchild-group-' + grpMark + '" id="num_' + itemChild.Label + '" name="num_' + itemChild.Label + '" value="' + itemChild.NumericValue + '" ' +
                                                (displayCheckedChild ? "" : "disabled='disabled'") + ' />'
                                                + '<label for="chkD_' + itemChild.Id + '" class="not-new-input">');
                                            childInfo +=
                                                '<li>' +
                                                '<input type="hidden" name="chkD_' + itemChild.Id + '_val" id="chkD_' + itemChild.Id + '_val" '+
                                            ' class="val-hidden-check-def hidden-child-group-' + grpMark + '"  value="' + (displayCheckedChild ? itemChild.Label : '') + '" />' +
                                            '<div class="input-group input-group-checkbox inner-input-group-checkbox">' +
                                            '<input type="checkbox" id="chkD_' + itemChild.Id + '" class="custom-calculation-definition custom-calculation-child definition-group-' + itemR.Id + ' child-group-' + grpMark + ' " ' +
                                            (displayCheckedChild ? "checked='checked'" : '') + '  data-value-rule="' + itemChild.Label + '" data-definition-id="' + itemChild.Id + '" ' +
                                            ' data-parent-checkbox="' + itemR.Id + '" data-child-group="child-group-' + grpMark + '" />' +
                                                '<label for="chkD_' + itemChild.Id + '" class="radio-button-style" >' + descriptionDefChild + '</label>' +
                                                '</div>' +
                                                '</li>';
                                        }
                                    });
                                    childInfo += '</ul>';
                                    itemToAdd += childInfo + '</div></li>';
                                }
                            }
                        );
                        itemToAdd += "</ul>";
                    }
                    $('ul.custom-time-configuration').append(itemToAdd);
                });
            }

            if (!atLeastOne) {
                $('#chk_000').attr('checked', 'checked');
                $('#chk_000_val').val('000');
            }
            
            var earlyCheckInByMinutes = false;
            var lateCheckInByMinutes = false;
            var lateCheckOutByMinutes = false;
            var timeMinutesEarlyCheckIn = 0;
            var timeMinutesLateCheckIn = 0;
            var timeMinutesLateCheckOut = 0;


            if (jsonResult.checkinAppSettings && jsonResult.checkinAppSettings) {
                var checkInAppSettings = jsonResult.checkinAppSettings;
                if (checkInAppSettings.enabledCustomEarlyCheckIn != undefined && checkInAppSettings.enabledCustomEarlyCheckIn === true) {
                    earlyCheckInByMinutes = true;
                }
                if (checkInAppSettings.timeMinutesEarlyCheckIn != undefined) {
                    timeMinutesEarlyCheckIn = checkInAppSettings.timeMinutesEarlyCheckIn;
                }

                if (checkInAppSettings.enabledCustomLateCheckIn != undefined && checkInAppSettings.enabledCustomLateCheckIn === true) {
                    lateCheckInByMinutes = true;
                }
                if (checkInAppSettings.timeMinutesLateCheckIn != undefined) {
                    timeMinutesLateCheckIn = checkInAppSettings.timeMinutesLateCheckIn;
                }

                if (checkInAppSettings.enabledCustomLateCheckOut != undefined && checkInAppSettings.enabledCustomLateCheckOut === true) {
                    lateCheckOutByMinutes = true;
                }
                if (checkInAppSettings.timeMinutesLateCheckOut != undefined) {
                    timeMinutesLateCheckOut = checkInAppSettings.timeMinutesLateCheckOut;
                }
            }


            if (!earlyCheckInByMinutes) {
                $('#EarlyCheckInDefault').attr('checked', 'checked');
                $('#EarlyCheckInDefaultValue').val('false');
                $('#EarlyCheckInByMinutes').removeAttr('checked');
                $('#EarlyCheckInByMinutesValue').val('');
                $('#EarlyCheckInByMinutesNumber').val(timeMinutesEarlyCheckIn);
                $('#EarlyCheckInByMinutesNumber').attr('disabled', 'disabled');
            }
            else {
                $('#EarlyCheckInDefault').removeAttr('checked');
                $('#EarlyCheckInDefaultValue').val('');
                $('#EarlyCheckInByMinutes').attr('checked', 'checked');
                $('#EarlyCheckInByMinutesValue').val('true');
                $('#EarlyCheckInByMinutesNumber').val(timeMinutesEarlyCheckIn);
                $('#EarlyCheckInByMinutesNumber').removeAttr('disabled');
            }

            if (!lateCheckInByMinutes) {
                $('#LateCheckInDefault').attr('checked', 'checked');
                $('#LateCheckInDefaultValue').val('false');
                $('#LateCheckInByMinutes').removeAttr('checked');
                $('#LateCheckInByMinutesValue').val('');
                $('#LateCheckInByMinutesNumber').val(timeMinutesLateCheckIn);
                $('#LateCheckInByMinutesNumber').attr('disabled', 'disabled');
            }
            else {
                $('#LateCheckInDefault').removeAttr('checked');
                $('#LateCheckInDefaultValue').val('');
                $('#LateCheckInByMinutes').attr('checked', 'checked');
                $('#LateCheckInByMinutesValue').val('true');
                $('#LateCheckInByMinutesNumber').val(timeMinutesLateCheckIn);
                $('#LateCheckInByMinutesNumber').removeAttr('disabled');
            }

            if (!lateCheckOutByMinutes) {
                $('#LateCheckOutDefault').attr('checked', 'checked');
                $('#LateCheckOutDefaultValue').val('false');
                $('#LateCheckOutByMinutes').removeAttr('checked');
                $('#LateCheckOutByMinutesValue').val('');
                $('#LateCheckOutByMinutesNumber').attr('disabled', 'disabled');
                $('#LateCheckOutByMinutesNumber').val(timeMinutesLateCheckOut);
            }
            else {
                $('#LateCheckOutDefault').removeAttr('checked');
                $('#LateCheckOutDefaultValue').val('');
                $('#LateCheckOutByMinutes').attr('checked', 'checked');
                $('#LateCheckOutByMinutesValue').val('true');
                $('#LateCheckOutByMinutesNumber').val(timeMinutesLateCheckOut);
                $('#LateCheckOutByMinutesNumber').removeAttr('disabled');
            }
            
            load_qr_section(elementReveal);


            if ($('button.save-checkin-settings').length > 0) {
                $('button.save-checkin-settings').on('click', function (e) {
                    $('#' + elementReveal + ' .processing_screen').show();
                    $('#check-in-settings-form').submit();
                });
            }
        }
        else {
            Swal.fire({
                title: "",
                icon: "error",
                text: "Error loading data",
                confirmButtonText: "Ok"
            });
            $('#' + elementReveal).foundation('close');
        }
        actions_to_select_calculation('custom-calculation-type', 'val-hidden-check','custom-calculation-definition');
        actions_to_select_calculation('quick-early-check-in', 'quick-early-check-in-hidden', undefined);
        actions_to_select_calculation('quick-late-check-in', 'quick-late-check-in-hidden', undefined);
        actions_to_select_calculation('quick-late-check-out', 'quick-late-check-out-hidden', undefined);
        actions_to_select_definitions();
        actions_to_select_parent();



        $('#' + elementReveal + ' .processing_screen').hide();
        
    });


   


}

function load_qr_section(elementReveal) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        method: "GET",
        url: urlSite + "AdvancedCMS/GetSiteImagesResource",
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult != null) {

            if (jsonResult["siteImages"] !== undefined) {
                jsonResult.siteImages.forEach(function (item) {
                    if (item.ResourceType == 2) {
                        $("#" + elementReveal).find(".row-logo-contactless div.ezdz-dropzone > div").html('<img src="' + item.Url + '" alt="loading" style="display: inline-block; width: auto; height: 100%; max-height: 200px;">');
                        $("#" + elementReveal).find("input[name='logo-contactless_siteImageID']").val(item.ID);
                    }
                });
            }

            if (jsonResult["internationalizationItems"] !== undefined) {
                if (jsonResult.internationalizationItems.titleLocation != undefined) {
                    $("#" + elementReveal).find("input[name='location-title-contactless']").val(jsonResult.internationalizationItems.titleLocation);
                }
                if (jsonResult.internationalizationItems.titleOccurrence != undefined) {
                    $("#" + elementReveal).find("input[name='oc-title-contactless']").val(jsonResult.internationalizationItems.titleOccurrence);
                }
                if (jsonResult.internationalizationItems.titleOpportunity != undefined) {
                    $("#" + elementReveal).find("input[name='vo-title-contactless']").val(jsonResult.internationalizationItems.titleOpportunity);
                }
            }

        }

    });
}

function actions_to_select_parent() {
    if ($('input.parent-group').length > 0) {
        $('input.parent-group').click(function () {
            var groupInfo = $(this).closest('.definition-group-div');
            var firstChild = $(groupInfo).find('input.custom-calculation-child').first();
            var chilSelected = $(groupInfo).find('input.custom-calculation-child:checked').length;
            var ruleSetId = $(groupInfo).closest('.definitions-list').data('parent-set');
            
            var ruleSetCheck = $('#chk_' + ruleSetId);

            var valueRule = $(firstChild).data('value-rule');
            $(firstChild).attr('style','background-color:red;');
            
            if ($(this).prop('checked')) {
                if (chilSelected == 0) {
                    $(firstChild).prop('checked', true);
                    
                    $(firstChild).closest('li').find('.val-hidden-check-def').val(valueRule);

                }
                if (ruleSetCheck != undefined && !$(ruleSetCheck).prop('checked')) {
                    
                    $(ruleSetCheck).trigger('click');
                    $(this).prop('checked', true);
                    
                    $(firstChild).prop('checked', true);
                    $(firstChild).closest('li').find('.val-hidden-check-def').val(valueRule);
                }
            }
            else {
                $(groupInfo).find('.val-hidden-check-def').val('');
                $(groupInfo).find('input[type="checkbox"]').prop('checked', false);
                $(groupInfo).find('input.text-for-minutes').attr('disabled', 'disabled');
            }


        });
    }
}

function actions_to_select_definitions() {
    if ($('input.custom-calculation-definition').length > 0) {
        $('input.custom-calculation-definition').click(function () {
            var parentId = $(this).data('parent-checkbox');
            var valueRule = $(this).data('value-rule');
            var isDefChild = $(this).hasClass('custom-calculation-child');

            if ($(this).prop('checked')) {

                if (isDefChild) {
                    var groupDef = $(this).data('child-group');
                    
                    $('input.' + groupDef).not($(this)).prop('checked', false);
                    $('input.nmb' + groupDef).attr('disabled', 'disabled');
                    $('input.hidden-' + groupDef).val('');
                }

                //check parent
                $('input#chk_' + parentId).prop('checked', true);
                //assign value to parent
                $('input#chk_' + parentId + '_val').val($('input#chk_' + parentId).data('value-rule'));
                               

                //disable others
                $('.val-hidden-check').not('input#chk_' + parentId + '_val').not('.checkin-out-hidden').val('');

                //value to current definition
                $(this).closest('li').find('.val-hidden-check-def').first().val(valueRule);
                
                $('input.custom-calculation-type').not('input#chk_' + parentId).prop('checked', false);
                $('input.custom-calculation-definition').not('.definition-group-' + parentId).prop('checked', false);
                $('input.custom-calculation-definition').not('.definition-group-' + parentId).closest('li').find('input[type="number"]').attr('disabled', 'disabled');
                $(this).closest('li').find('input.text-for-minutes').removeAttr('disabled');
                if (isDefChild) {
                    $(this).closest('.definition-group-div').find('input.parent-group').prop('checked', true);
                }

            }
            else {
                if (isDefChild) {
                    return false;
                }
                $(this).closest('li').find('.val-hidden-check-def').val('');
                $(this).closest('li').find('input.text-for-minutes').attr('disabled', 'disabled');
            }

        });
    }
}

function actions_to_select_calculation(class_checkboxes, class_hidden_group, general_class_child) {
    if ($('input.' + class_checkboxes).length > 0) {
        $('input.' + class_checkboxes).click(function () {

            
            if ($(this).prop('checked')) {

                if (class_hidden_group != "val-hidden-check") {
                    $('input.' + class_hidden_group).val('');
                }
                else {
                    $('input.' + class_hidden_group).not('.checkin-out-hidden').val('');
                }
                if (class_checkboxes == 'custom-calculation-type') {
                    $('input.val-hidden-check-def').not('.checkin-out-hidden').val('');
                    $('.definition-group-div input.parent-group').prop('checked', false);
                }
                $(this).closest('li').find('input.text-for-minutes').removeAttr('disabled');
                $(this).closest('li').find('input.val-hidden-check').val($(this).data('value-rule'));
            }
            else {
                return false;
            }

            $('input.' + class_checkboxes+':checkbox').not(this).prop('checked', false);            
            $('input.' + class_checkboxes + ':checkbox').not(this).trigger('change');
            $('input.' + class_checkboxes+':checkbox').not(this).each(function () {
                $(this).closest('li').find('input.text-for-minutes').attr('disabled', 'disabled');
            });

            if (general_class_child != undefined) {
                
                var class_child_group = $(this).data('parent-checkbox');
                $('input.' + general_class_child + ':checkbox').not('.' + class_child_group).prop('checked', false);
                $('input.' + general_class_child + ':checkbox').not('.' + class_child_group).trigger('change');
                $('input.' + general_class_child + ':checkbox').not('.' + class_child_group).each(function () {
                    $(this).closest('li').find('input.text-for-minutes').attr('disabled', 'disabled');
                });
            }


            
        });
    }
}


function backend_url_redirects() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="url-redirect-settings"]', function () {
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';


        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();

        created_url_redirects();
        url_redirect_list_load();
    });
}

function created_url_redirects() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="created-url-redirection-modal"]', function () {
        var elementReveal = $(this).data('element-reveal');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $('#' + elementReveal).foundation('open');

        $('#' + elementReveal).foundation();
        var id = 0;

        if ($(this).hasClass('create-new-url')) {
            $('#' + elementReveal).find("input#URLRedirectID").val("0");
        } else if ($(this).hasClass('edit-url')) {
            id = $(this).attr('data-url-id');
            $('#' + elementReveal).find("input#URLRedirectID").val(id);
        }

        if (id !== 0) {
            $('#' + elementReveal).find("h3.title").text("Update URL");
            $('#' + elementReveal).find("a.remove-url").removeClass("hide");
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetURLRedirectByID?id=" + id,
                data: {},
                beforeSend: function () {
                    $('#created-url-redirection-form .processing_screen').show();

                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                if (jsonResult.code == 200) {
                    $('#' + elementReveal).find("input#from-url").val(jsonResult.FromURL);
                    $('#' + elementReveal).find("input#to-url").val(jsonResult.ToURL);
                    $('#' + elementReveal).find("select#type-url").val(jsonResult.TypeURL);
                    $('#' + elementReveal).find("input#active-url").attr("checked", jsonResult.ActiveURL);

                } else {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.status,
                        confirmButtonText: "Ok"
                    });
                }

                $('#created-url-redirection-form .processing_screen').hide();

            });
        } else {
            $('#' + elementReveal).find("h3.title").text("Create new URL");
            $('#' + elementReveal).find("a.remove-url").addClass("hide");
        }

        $(document).on('click', '#created-url-redirection-modal a.remove-url', function (e) {

            Swal.fire({
                title: "",
                text: "Are you sure to remove this URL?",
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: true
            }).then(function (result) {
                if (result.isConfirmed) {
                    $.ajax({
                        method: "GET",
                        url: urlSite + "admin/DeleteURLRedirectByID?id=" + id,

                        beforeSend: function () {
                            $('#created-url-redirection-form .processing_screen').show();

                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);
                        if (jsonResult.code == 200) {
                            Swal.fire({
                                title: "",
                                icon: "success",
                                text: jsonResult.status,
                                confirmButtonText: "Ok"
                            });
                        } else {
                            Swal.fire({
                                title: "",
                                icon: "error",
                                text: jsonResult.status,
                                confirmButtonText: "Ok"
                            });
                        }

                        $('#created-url-redirection-form .processing_screen').hide();
                        $('#created-url-redirection-modal').foundation('close');
                        url_redirect_list_load();

                    });


                }
            });


        });


        $(document).on('click', '#created-url-redirection-form input[type="button"]', function (e) {

            var fromURL = $('#' + elementReveal).find("input#from-url").val();
            var toURL = $('#' + elementReveal).find("input#to-url").val();

            if (!(fromURL !== undefined && fromURL !== null && fromURL.trim() !== '')) {

                Swal.fire({
                    title: "Error",
                    icon: "error",
                    text: "The From URL field can't be empty",
                    confirmButtonText: "Ok"
                });
                return;
            }
            if (!(toURL !== undefined && toURL !== null && toURL.trim() !== '')) {

                Swal.fire({
                    title: "Error",
                    icon: "error",
                    text: "The To URL field can't be empty",
                    confirmButtonText: "Ok"
                });
                return;
            }

            $.ajax({
                method: 'POST',
                url: urlSite + "admin/SaveURLRedirectCreated",
                data: $("#created-url-redirection-form").serializeObject(),
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);


                if (jsonResult.code == 200) {

                    Swal.fire({
                        title: "Success",
                        icon: "success",
                        text: "URL Redirect saved successfully",
                        confirmButtonText: "Ok"
                    }).then(function (result) {
                        $('#' + elementReveal).find('.processing_screen').hide();
                        $('#' + elementReveal).foundation('close');
                        url_redirect_list_load();
                    });

                } else {

                    Swal.fire({
                        title: "Error",
                        icon: "error",
                        text: jsonResult.status,
                        confirmButtonText: "Ok"
                    }).then(function (result) {
                        $('#' + elementReveal).find('.processing_screen').hide();
                        $('#' + elementReveal).foundation('close');
                        url_redirect_list_load();

                    });

                }
            });

            e.stopImmediatePropagation();
            return false;
        });
    });
}

function url_redirect_list_load() {
    if (!is_backend_page()) return;
    var objectTable = $('#url-redirect-table');
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetURLRedirect",
        data: {},
        beforeSend: function () {
            $('#url-redirects-form .processing_screen').show();

            datatable_destory_by_id('url-redirect-table');
            $('#url-redirect-table tbody').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        //Assing values
        if (jsonResult.length > 0) {
            $("#url-redirects-form table tbody").empty();
            for (var i = 0; i < jsonResult.length; i++) {
                var typeURL = jsonResult[i].TypeURL == 0 ? "Permanent (301 redirect)" : "Temporary (302 redirect)";
                var info_table = '<tr><td class="parent"><a data-element-reveal="created-url-redirection-modal"  data-url-id="' + jsonResult[i].ID + '" class="edit-url">' + jsonResult[i].FromURL +
                    '</a></td><td>' + jsonResult[i].ToURL + '</td><td>' + typeURL + '</td><td>' +
                    window.translation[jsonResult[i].ActiveURL + '_text'] + '</td></tr>';
                $("#url-redirects-form table tbody").append(info_table);
            }
            datatable_initialize_notAjax_with_params(objectTable, null, null, false, true, false);
        } else {
            var empty_page = '<tr class="odd"><td valign="top" colspan="0" class="dataTables_empty">Nothing records found - sorry</td></tr>';
            $("#url-redirects-form table tbody").append(empty_page);
        }

        //Hide processing screen
        $('#url-redirects-form .processing_screen').hide();
    });


}
function validate_html_editor_save() {
    //verify Body 



    $('#block-wysiwyg-form input.save-button').on('click', function (e) {

        var canContinue = true;
        var message = '';
        $('#block-wysiwyg-form ul.tabs li a').each(function () {
            var langID = $(this).attr('data-language-id');
            if (langID !== undefined && langID !== null) {
                //body
                var selector = 'wysiwyg-' + langID;

                if (typeof CKEDITOR.instances[selector] == "object") {
                    //Body
                    if (CKEDITOR.instances[selector] !== null && CKEDITOR.instances[selector] !== undefined) {
                        var value = CKEDITOR.instances[selector].getData();
                        var result = validateHtml(value);
                        if (result.valid === false) {
                            canContinue = false;
                            message = result.message;
                            return false;
                        }

                    }


                }
            }
        });

        if (canContinue === false) {

            Swal.fire({
                title: "Error",
                icon: "error",
                text: message,
                confirmButtonText: "Ok"
            });
            e.preventDefault();
            return false;

        }



    });


}

function eventsDependenceLocationType() {

    $(document).on('change', '#standard-form-settings-form-fields-management input.item-location_type', function () {
        var locationNameInput = $(this).closest('ul').find('input.item-location_name');
        var checked = $(this).prop('checked');
        if (checked) {
            locationNameInput.prop('checked', true);
        }
    });

    $(document).on('change', '#standard-form-settings-form-fields-management input.item-location_name', function () {
        var locationTypeInput = $(this).closest('ul').find('input.item-location_type');
        var locationTypeInputReq = $(this).closest('ul').find('input.item-req-location_type');
        var locationNameInputReq = $(this).closest('ul').find('input.item-req-location_name');
        var checked = $(this).prop('checked');
        if (!checked) {
            locationTypeInput.prop('checked', false);
            locationTypeInputReq.prop('checked', false);
            locationNameInputReq.prop('checked', false);
        }
    });

    $(document).on('change', '#standard-form-settings-form-fields-management input.item-req-location_type', function () {
        var locationNameInput = $(this).closest('ul').find('input.item-location_name');
        var checked = $(this).prop('checked');
        if (checked) {
            locationNameInput.prop('checked', true);
        }
    });
}



function prepare_page_llamapi_success_registration(elementReveal, self) {
    $('#' + elementReveal).find('.friendly-url-section').addClass('hide');
    $('#' + elementReveal).find('#page-conf-form-summary').addClass('hide');
    $('#' + elementReveal).find('a.remove-link').addClass('hide');
    $('#' + elementReveal).find('.page-enabled-settings').addClass('hide');
    $('#' + elementReveal).find('.visibility-field-section').addClass('hide');

    $("#page-conf-form .page-id-hidden").val(0);
    // Show delete link
    $('#' + elementReveal).find('.remove-link.delete').show();
    $('#' + elementReveal).find('.save-page').parent().parent().removeClass("medium-12");
    $('#' + elementReveal).find('.save-page').parent().parent().addClass("medium-8");

    $("#page-conf-form").find("label.error").remove();
    $(".title-field").prop('disabled', false);

    // Initialize jquery validations ti page config.
    $('#' + elementReveal).foundation('open');
    //Reload elements inside modal
    $('#' + elementReveal).foundation();
    //Initialize jQuery validate
    initiate_jquery_validate_reveal($('#page-conf-form'), 'page-conf-form');

    $('#' + elementReveal).find('input[name="page_conf_changes"]').val("false");

    //Reset form
    $('#' + elementReveal + ' form')[0].reset();
    $("#page-conf .rollback-link").hide();
    $("#page-conf-form").find("label.error").remove();
    $("#page-conf-form").find(".metatag-item").remove();
    $("#page-conf-form input[type=hidden]:not([name=__RequestVerificationToken]").val("");
    $("#page-conf-form input[type=hidden]:not([name=__RequestVerificationToken]").attr("value", "");
    $("#page-conf-form #page-id").val("true");
    $('#page-conf-form input[name="new-llamapi-ars-success"]').val("true");
    $("#page-conf-form #page-id").attr("value", false);
    $('.visibility-per-role').addClass('hide');
    $("#page-conf-form input[name=display-page-title]").val(null);
    $("#page-conf-form").find("input[name='align-title']").val($("#page-conf-form").first("select.align-title").val());
    $("#page-conf-form input.display-page-title").prop('checked', false);

    $("#page-conf-form .keywords").each(function () {
        $("#page-conf-form #page-id").val("true");
    });
    $('#page-conf-form').find('select[name="visible_to"]').find('option[value="3"]').remove();

    //Validating if modal was open from menu item modal
    $("#page-conf-form input[name='create_page_from_menu']").val(false);

    $('#page-conf-form li.tabs-title a[data-language-id]').each(function () {
        var langID = $(this).attr('data-language-id');
        $('#result-text-section-' + langID).addClass("is-hidden");
        $('#organization-id-section-' + langID).addClass("is-hidden");
        $('#tile-information-container-' + langID).addClass('is-hidden');

        $('#page-conf-form').find('input[name="title-' + langID + '"]').val('Registration Success Page');
    });

    $("#page-conf-form textarea").each(function () {
        $(this).val("<p>Thank you for register</p>");
        var bodyId = $(this).attr("id");
        if ($("#" + bodyId).length > 0) {

            initialize_ckeditor_ars(bodyId, "");
            add_event_for_ckeditor(bodyId, '#page-conf');
        }
    });

    // Show delete link when page already created.
    $('#' + elementReveal).find('.remove-link.delete').hide();
    $('#' + elementReveal).find('.save-page').parent().parent().removeClass("medium-8");
    $('#' + elementReveal).find('.save-page').parent().parent().addClass("medium-12");

    $('#' + elementReveal).find('input[name="friendly-url"]').removeAttr('readonly');

    //Load Page Categories (Tile Information) by each language tab
    $('#' + elementReveal).find('.tile-information-container').each(function () {
        var tileContainer = $(this);
        var tileInformationContainer = tileContainer.find('.page-categories-container');
        var lang_id = tileContainer.parent().find('input.field-tile-information').attr('data-language-id');

        listingcmsblock_loadpagecategorylistingcheckbox(self, tileInformationContainer, lang_id, null);
    });

    //Display textarea
    $('#' + elementReveal).find('textarea[name*=body]').each(function (index, el) {
        $(this).parents('.row').first().removeClass('hide-custom');
    });

    //Display corporate and content type fields
    $('#' + elementReveal).find('input.field-corporate-page').each(function (index, el) {
        $(this).parents('.row').first().removeClass('hide-custom');
    });

    //Display link show advanced settings
    $('#' + elementReveal).find('a.advanced-link').removeClass('hide-custom');


    $('select[name="visible_to"]').on('change', function () {
        var value = $(this).val();

        if (value === '1') {
            $(".visibility-per-role").removeClass('hide');
        } else {
            $(".visibility-per-role").addClass('hide');
        }
        show_hide_page_session_vars_config();
    });

    $("#page-conf-form").find("input.display-page-title").val(null);
    $("#page-conf-form").find("input[name='align-title']").val($("#page-conf-form").first("select.align-title").val());
    $("#page-conf-form").find("input[name=display-page-title]").prop('checked', false);
    $("#page-conf-form").find("select.align-title").addClass('hide-custom');


    add_event_for_fields_in_modal('#page-conf');



}

function validate_custom_tag() {
    if ($('#ga-code-edit-backend').length > 0) {
        $('select.options-tags').on('change', function () {
            var value = $(this).val();
            if (value =='meta_custom') {
               $('.tag-name').removeClass('is-hidden');
            } else {
                $('.tag-name').addClass('is-hidden');
            }
        });
    }

}


function load_meta_tags_page_custom(lang_id, property, contentObj, modal) {
    if (contentObj != null && contentObj != undefined && contentObj.name != null && contentObj.value != null && contentObj.name != undefined && contentObj.value != undefined) {

        var name = contentObj.name;
        var content = contentObj.value;
        var nameField = name.replaceAll(' ', '_');
        var meta = '<div><div class="row metatag-item">' +
            '<div class="large-5 medium-5 small-12 columns">' +
            '<div class="row">' +
            '<div class="small-12 medium-4 columns">' +
            '<label class="text-left middle">' + window.translation.property + ': </label>' +
            '</div>' +
            '<div class="small-12 medium-8 columns input">' +
            '<select class="og_property_item_' + lang_id + '_' + property + ' og_property_item" name="selectbox" disabled="" data-property="' + name + '">' +
            '<option value="url">og:url</option>' +
            '<option value="title">og:title</option>' +
            '<option value="description" >og:description</option>' +
            '<option value="site_name">og:site_name</option>' +
            '<option value="image">og:image</option>' +
            '<option value="keywords">keywords</option>' +
            '<option value="htmlTitle">HTML title</option>' +
            '<option value="meta_description">meta:description</option>' +
            '<option value="meta_key_google">meta:google key</option>' +
            '<option value="meta_value_google">meta:google value</option>' +
            '<option value="' + nameField + '">meta:' + nameField + '</option>' +
            '</select>' +
            '</div>' +
            '</div>' +
            '</div>' +
            '<div class="large-5 medium-5 small-12 columns">' +
            '<div class="row">' +
            '<div class="small-12 medium-3 columns">' +
            '<label class="text-left middle">' + window.translation.content + ':</label>' +
            '</div>' +
            '<div class="small-12 medium-9 columns">' +
            '<input type="text" id="og_content_item_' + lang_id + '_' + property + '_' + nameField + '" class="og_content_item_' + lang_id + ' og_content_item" type="text" name="og_content_item_' + lang_id + '_' + property + '_' + nameField + '" value="' + content + '" readonly="">' +
            '<input type="hidden" class="og_content_item_' + lang_id + ' og_content_name_item"  name="og_content_name_item_' + lang_id + '_' + property + '_' + nameField + '" value="' + nameField + '">'+
            '</div>' +
            '</div>' +
            '</div>' +
            '<div class="large-2 medium-2 small-12 columns">' +
            '<div class="row">' +
            '<div class="medium-3 columns">' +
            '<a class="edit"></a>' +
            '</div>' +
            '<div class="medium-3 columns">' +
            '<a class="delete"></a>' +
            '</div>' +
            '</div>' +
            '</div>' +
            '</div></div>';

        var object = $(meta);
        object.find('option').removeAttr("selected");
        object.find('option[value="' + nameField + '"]').attr('selected', 'selected');
        $('.metatag_items_' + lang_id).append(object.html());
        $('#og_content_' + lang_id).val('');
    }
        
}

function option_hidden() {
    var value = $('#login-block-management select[name="options_login_button_style"]').val();
    if (value === '3') {
        $('#login-block-management input[name="color_setting_login"]').prop("disabled", "disabled");
        $('#login-block-management input[name="color_hover_setting_login"]').prop("disabled", "disabled");
    } else {
        $('#login-block-management input[name="color_setting_login"]').removeAttr("disabled");
        $('#login-block-management input[name="color_hover_setting_login"]').removeAttr("disabled");
    }

    $(document).on('change', '#login-block-management select[name="options_login_button_style"]', function () {
        var value = $(this).val();

        if (value == '3') {
            $('#login-block-management .button-style-section').hide();
            $('#login-block-management input[name="color_setting_login"]').prop("disabled", "disabled");
            $('#login-block-management input[name="color_hover_setting_login"]').prop("disabled", "disabled");
        } else {
            $('#login-block-management .button-style-section').show();
            $('#login-block-management input[name="color_setting_login"]').removeAttr("disabled");
            $('#login-block-management input[name="color_hover_setting_login"]').removeAttr("disabled");
        }
    });
    $(document).on('change', '#login-block-management input[name="hide-registration-link"]', function () {
        if ($(this).prop('checked')) {
            $('#login-block-management .custom-registration-link-section').hide();
        } else {
            $('#login-block-management .custom-registration-link-section').show();
        }
    });
}


function backend_custom_session_var_list(elementReveal) {
    var objectTable = $('table#custom-variable-table');
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetCustomSessionVariables",
        data: {},
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').removeClass('hide-custom');
            datatable_destory_by_id('custom-variable-table');
            $('#' + elementReveal).find('table#custom-variable-table tbody').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.code === 200) {

            if (jsonResult.customSessionVar !== null && jsonResult.customSessionVar !== undefined) {
                var dataList = JSON.parse(jsonResult.customSessionVar);
                dataList.forEach(function (it) {
                    var info_table = '<tr>';
                    info_table += '<td><a data-id="' + it.ID + '" data-element-reveal="created-custom-session-var-modal" href="#">' + (it.SFObject == 'Q' ? 'Query String' : it.SFObject) + '</a></td>';
                    info_table += '<td>' + it.SFField + '</td>';
                    info_table += '<td>' + it.Token + '</td>';
                    info_table += '<td>' + it.Enabled + '</td>';
                    info_table += '</tr>';
                    $('#' + elementReveal).find('table#custom-variable-table tbody').append(info_table);
                });
                datatable_initialize_notAjax_with_params(objectTable, null, null, false, false, false);
            }

        } else {
            Swal.fire({
                title: "Error",
                icon: "error",
                text: jsonResult.message,
                confirmButtonText: "Ok"
            });

        }

        $('#' + elementReveal).find('.processing_screen').addClass('hide-custom');

    });


}

function backend_create_custom_session_var(elementReveal) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $(document).on('click', 'a[data-element-reveal="created-custom-session-var-modal"]', function () {

        var reveal = $(this).data('element-reveal');
        $('#' + reveal).foundation('open');
        $('#' + reveal).foundation();

        var id = $(this).attr('data-id');

        if (id === '0') {
            $('#' + reveal).find('select[name="object_item"]').val('');
            $('#' + reveal).find('select[name="field_to_select"]').empty();
            $('#' + reveal).find('select[name="field_to_select"]').append('<option>' + window.translation.select_one + '</option>');
            $('#' + reveal).find('input[name="token_selected"]').val('');
            $('#' + reveal).find('input[name="CustomSessionVarID"]').val('0');
            $('#' + reveal).find('input[name="active_csv"]').prop('checked', true);
            $('#' + reveal).find('.field-from-salesforce').removeClass('hide');
            $('#' + reveal).find('.field-from-querystring').addClass('hide');

        }
        else {
            $('#created-custom-session-var-modal').find('.processing_screen').show();
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetCurrentSessionVariable/" + id,
            }).done(function (data) {
                var dataCSV = JSON.parse(data);

                if (dataCSV.code === 200) {
                    if (dataCSV.Data !== undefined && dataCSV.Data !== null) {
                        var valueCSV = JSON.parse(dataCSV.Data);
                        $('#' + reveal).find('select[name="object_item"]').val(valueCSV.SFObject);
                        var selectField = $('#' + reveal).find('select[name="field_to_select"]');
                        selectField.empty();
                        selectField.append('<option value="">' + window.translation.select_one + '</option>');

                        //Data for the list
                        if (dataCSV.Fields !== null && dataCSV.Fields !== undefined) {
                            dataCSV.Fields.forEach(function (item) {

                                selectField.append('<option value="' + item.ApiName + '">' + item.Label + '</option>');
                            });
                        }

                        $('#' + reveal).find('select[name="field_to_select"]').val(valueCSV.SFField);

                        $('#' + reveal).find('input[name="token_selected"]').val(valueCSV.Token);
                        $('#' + reveal).find('input[name="CustomSessionVarID"]').val(valueCSV.ID);
                        $('#' + reveal).find('input[name="active_csv"]').prop('checked', valueCSV.Enabled);
                        $('#' + reveal).find('input[name="field_to_query_string"]').val(valueCSV.SFField);

                        if (valueCSV.SFObject === 'Q') {
                            $('#' + reveal).find('.field-from-salesforce').addClass('hide');
                            $('#' + reveal).find('.field-from-querystring').removeClass('hide');
                        } else {
                            $('#' + reveal).find('.field-from-salesforce').removeClass('hide');
                            $('#' + reveal).find('.field-from-querystring').addClass('hide');
                        }

                    }
                } else {
                    Swal.fire({
                        title: "Error",
                        icon: "error",
                        text: dataCSV.message,
                        confirmButtonText: "Ok"
                    });
                }
                $('#created-custom-session-var-modal').find('.processing_screen').hide();
            });
        }

        $('#' + reveal).find('select[name="object_item"]').on('change', function () {
            var objectName = $(this).val();
            $('#' + reveal).find('input[name="token_selected"]').val('');
            if (objectName !== '' && objectName !== 'Q') {

                $('#' + reveal).find('.field-from-salesforce').removeClass('hide');
                $('#' + reveal).find('.field-from-querystring').addClass('hide');

                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetObjectFieldsForCustomSessionVar",
                    data: { object: objectName },
                    beforeSend: function () {
                        $('#created-custom-session-var-modal').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var dataResult = JSON.parse(data);
                    if (dataResult.code === 200) {


                        var selectField = $('#' + reveal).find('select[name="field_to_select"]');
                        selectField.empty();
                        selectField.append('<option value="">' + window.translation.select_one + '</option>');
                        if (dataResult.Data !== null && dataResult.Data !== undefined) {
                            dataResult.Data.forEach(function (item) {

                                selectField.append('<option value="' + item.ApiName + '">' + item.Label + '</option>');
                            });
                        }

                    } else {
                        Swal.fire({
                            title: "Error",
                            icon: "error",
                            text: dataResult.message,
                            confirmButtonText: "Ok"
                        });

                    }

                    $('#created-custom-session-var-modal').find('.processing_screen').hide();

                });

            }
            else if (objectName !== '' && objectName === 'Q') {
                //query string
                $('#' + reveal).find('.field-from-salesforce').addClass('hide');
                $('#' + reveal).find('.field-from-querystring').removeClass('hide');
                $('#' + reveal).find('input[name="field_to_query_string"]').val('');
            }
            else {
                var selectField = $('#' + reveal).find('select[name="field_to_select"]');
                selectField.empty();
                selectField.append('<option value="">' + window.translation.select_one + '</option>');

            }

        });

        $('#' + reveal).find('select[name="field_to_select"]').on('change', function () {
            var fieldName = $(this).val();
            var objectName = $('#' + reveal).find('select[name="object_item"]').val();
            var token = '';
            if (objectName === '' || fieldName === '')
                token = '';
            else {
                token = 's:' + objectName + '.' + fieldName;
            }

            $('#' + reveal).find('input[name="token_selected"]').val(token);
        });


        $('#' + reveal).find('input[name="field_to_query_string"]').on('change', function () {
            var fieldName = $(this).val();
            var objectName = $('#' + reveal).find('select[name="object_item"]').val();
            var token = '';
            fieldName = fieldName.replace('q:', '');
            if (objectName === '' || fieldName === '')
                token = '';
            else {
                token = 's:' + objectName + '.' + fieldName;
            }
            $('#' + reveal).find('input[name="token_selected"]').val(token);
        });

        $('#' + reveal).find('.save-custom-session').on('click', function (e) {

            initiate_jquery_validate_reveal($('#created-custom-session-var-form'), 'created-custom-session-var-form');


            if ($('#created-custom-session-var-form').valid()) {

                $.ajax({
                    method: 'POST',
                    url: urlSite + "admin/SetCustomSessionVariables",
                    data: $("#created-custom-session-var-form").serializeObject(),
                    beforeSend: function () {
                        $('#' + reveal).find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);


                    if (jsonResult.code == 200) {

                        Swal.fire({
                            title: "Success",
                            icon: "success",
                            text: "Custom Session Variable saved successfully",
                            confirmButtonText: "Ok",

                        }).then(function (result) {
                            $('#' + reveal).find('.processing_screen').hide();
                            $('#' + reveal).foundation('close');
                            //url_redirect_list_load();
                            backend_custom_session_var_list(elementReveal);
                        });

                    } else {
                        Swal.fire({
                            title: "Error",
                            icon: "error",
                            text: jsonResult.message,
                            confirmButtonText: "Ok"
                        }).then(function (result) {
                            $('#' + reveal).find('.processing_screen').hide();
                            $('#' + reveal).foundation('close');
                            backend_custom_session_var_list(elementReveal);
                        });

                    }
                });

                e.stopImmediatePropagation();
                return false;


            } else {
                Swal.fire({
                    title: "",
                    icon: "warning",
                    text: "Please enter all required fields.",
                    confirmButtonText: "Ok"
                });
                //$.growl.error({ message: "Please enter all required fields." });
                return false;
            }

        });


    });

}





function backend_custom_session_var() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="custom-session-var-settings"]', function (e) {
        var elementReveal = $(this).data('element-reveal');
        

        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();

        
        
        backend_custom_session_var_list(elementReveal);
        backend_create_custom_session_var(elementReveal);


        e.preventDefault();
        return false;


    });
}


function load_multiselet_field_backend(selector, value, fromMenu = false) {
    if (value.includes(',')) {
        var valueArray = value.split(',');
        for (let i = 0; i < valueArray.length; i++) {
            $(selector).find('option[value="' + valueArray[i] + '"]').prop('selected', 'selected');
        }
    } else {
        $(selector).val(value);
    }
    if ($(selector).prop('multiple'))// This is only in llamasite. In HOC it is not multiple
    {
        if (fromMenu === false) {
            $(selector).multiselect('reload');
        }
        else {
            $(selector).multiselect();
            $(selector).multiselect('reload');
        }
    }
        
}

function load_ms_adv(selectorSelect, arrayValues) {

    $(selectorSelect).multiselect('unload');
    if ($(selectorSelect).closest('.input-group-select').find('.ms-options-wrap').length > 0) {
        $(selectorSelect).closest('.input-group-select').find('.ms-options-wrap').remove();
    }
    setTimeout(function () {


        $(selectorSelect).multiselect({
            'selectAll': true,
            'columns': 1,
            'showCheckbox': true,
            'search': false,
            'maxPlaceholderOpts': 1,
            texts: {
                placeholder: window.translation.select_options,
                search: window.translation.search,
                selectedOptions: ' ' + window.translation.selected,
                selectAll: window.translation.select_all,
            }
        });
        $(selectorSelect).val(arrayValues);
        $(selectorSelect).multiselect('reload');

    }, 1000);
}
function load_organization_detail_modal() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="organization-detail-settings-edit-backend"]', function (e) {
        e.preventDefault();
        var elementReveal = $(this).data('element-reveal');
        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();

        $.ajax({
            url: '/admin/GetOrganizationDetailSettings',
            beforeSend: function(){
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {
            var result = JSON.parse(data);
            if (result.code === 200) {
                if (result.listSettings !== null && result.listSettings !== undefined && result.listSettings !== '') {
                    var listSettings = JSON.parse(result.listSettings);
                    listSettings.forEach(function (value, index) {
                        $('#' + elementReveal).find('input[name="' + value.name + '"]').val(value.text);
                    });
                }
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: result.message,
                    confirmButtonText: "Ok"
                });
            }
            $('#' + elementReveal).find('.processing_screen').hide();
        });

        
        return false;
    });

}

function load_special_event_modal() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="special-event-settings-edit-backend"]', function (e) {
        e.preventDefault();
        var elementReveal = $(this).data('element-reveal');
        $('#' + elementReveal).foundation('open');
        $('#' + elementReveal).foundation();
        $.ajax({
            url: '/admin/GetSpecialEventSettings',
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {
            var result = JSON.parse(data);
            if (result.code === 200) {
                if (result.listSettings !== null && result.listSettings !== undefined && result.listSettings !== '') {
                    var listSettings = JSON.parse(result.listSettings);
                    listSettings.forEach(function (value, index) {
                        $('#' + elementReveal).find('input[name="' + value.name + '"]').val(value.text);
                    });
                }
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: result.message,
                    confirmButtonText: "Ok"
                });
            }
            $('#' + elementReveal).find('.processing_screen').hide();
        });

        return false;
    });

}

// ------------------------------------------------------------------------
// ------------ START: PACKAGING MANAGER METHODS --------------------------
// ------------------------------------------------------------------------
function packaging_manager_settings() {

    // This method contains the logic to open the Modals:
    // - PackagingManagerModal.cshtml
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        
    if (!is_backend_page()) { return; }

    if ($('#packaging-manager').length <= 0) { return; }

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 1: For when users clicks over "AddOns > Packaging Manager".
    // Then, the PackagingManagerModal.cshtml is opened
    $(document).on('click', 'a[data-element-reveal="packaging-manager"]', function () {
        
        var elementReveal = $(this).attr('data-element-reveal');

        process_modal_packaging_manager(elementReveal, urlSite);

    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 2: For when users clicks over:
    //             "AddOns > Packaging Manager > Create New Package"
    //             "AddOns > Packaging Manager > Package Record (Edit)"
    // Then, the EditPackageModal.cshtml is opened.
    $(document).on('click', 'a.package-record-edit-link[data-element-reveal="new-package-modal"],a#create-new-package-btn', function () {

        // Get parameters from clicked component
        var elementReveal = $(this).attr('data-element-reveal');
        var packageId = $(this).attr('data-element-id');
        var versionId = $(this).attr('data-version-id');
        packageId = parseInt(packageId);
        if (isNaN(packageId)) { packageId = 0; }

        // Open Modal and fill data in it
        packaging_manager_load_data_in_package_modal(elementReveal, packageId, versionId, urlSite);

    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 3: For when users clicks over "AddOns > Packaging Manager > Package Record (Edit) > Save".
    // Then, the NewPackageModal.cshtml is opened.
    $(document).on('click', 'input#new-package-modal_save-btn', function () {
        process_modal_edit_action_package('new-package-modal', urlSite);
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 4: For when users clicks over:
    //             "AddOns > Packaging Manager > Create New Package > Add Items to Package"
    //             "AddOns > Packaging Manager > Package Record (Edit) > Add Items to Package"
    // Then, the AddPackageItemModal.cshtml is opened
    $(document).on('click', 'input#new-package-modal_add-item-btn[data-element-reveal="add-package-item-modal"]', function () {

        var elementReveal = $(this).attr('data-element-reveal');
        process_modal_add_package_items(elementReveal, urlSite);

    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 5: For when users click "Add Items to Package"
    $(document).on('click', 'input#add-package-item-modal_save-btn', function () {

        var packageIdValue = $('input#new-package-modal_Id').val();
        var isEditMode = parseInt(packageIdValue) > 0;

        var sfItemCheckedCounter = $('input[name="itemsForPackaging[]"]:checkbox:checked:enabled').length;

        if (sfItemCheckedCounter <= 0) {

            // Show Error Message
            Swal.fire({
                title: window.translation.error,
                text: "You must select at least one item",
                icon: "error",
                closeOnConfirm: true
            });
            return false;//This works as break
        }

        var sfItemCheckedIterator = 0;
        $('input[name="itemsForPackaging[]"]:checkbox:checked').each(function () {

            var itemId = $(this).attr('data-id');
            var isDisabled = $(this).attr('disabled');
            if (isDisabled) {
                return true; //This works as continue
            }

            var itemName = $(this).attr('data-name');
            var itemComponentType = $(this).attr('data-component-type');
            var itemComponentSource = $(this).attr('data-component-source');
            var itemInternalKey = $(this).attr('data-internal-key');
            var itemComponentType = $(this).attr('data-component-type');

            var itemNameToShow = itemName;
            if (itemComponentType == 'CustomField') {

                itemNameToShow = ($(this).val()).replace('customfield','');
            }

            var tableRow =
                '<tr>' +
                '<td style="width: 10rem; text-align:center;">' +
                '<a class="remove-package-item-link" ' +
                ' data-element-reveal="remove-package-item-modal"  ' +
                ' data-element-id="' + itemId + '" ' +
                ' data-internal-key="' + itemInternalKey + '" ' +
                ' data-is-manual="true" ' +
                '>' +
                'Remove' +
                '</a>' +
                '</td > ' +
                '<td style="width: 25rem; text-align:center;">' + itemNameToShow + '</td>' +
                '<td style="width: 30rem; text-align:center;">' + itemComponentSource + '</td>' +
                '<td style="width: 20rem; text-align:center;">' + itemComponentType + '</td>' +
                '<td style="width: 15rem; text-align:center;"></td>' +
                '</tr>';
            $('table#new-package-modal_items-table').append(tableRow);

            // Hide modal when there are no more items to add to parent modal
            sfItemCheckedIterator++;
            if (sfItemCheckedIterator >= sfItemCheckedCounter ) {

                var modal2Hide = 'add-package-item-modal';

                packaging_manager_enable_save_package_btn(urlSite);

                // 1.- Show the modal: PackagingManagerModal
                $('#' + modal2Hide).foundation('close');

                // Disable "Create Installation Token"
                $('#new-package-modal_upload-btn').attr('disabled', true);

                return false;//This works as break
            }
        });      

    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 6: For when users clicks over "Upload Package"
    $(document).on('click', 'input#new-package-modal_upload-btn', function () {

        // Get parameters from clicked component
        var elementReveal = 'new-package-modal';
        var packageId = $('input#new-package-modal_Id').val();
        var versionId = $('input#new-package-modal_version-Id').val();
        packaging_manager_upload_package_action(elementReveal, packageId, versionId, urlSite);
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 7: For when users clicks over "Packages"
    $(document).on('click', 'li#packaging-manager-modal__tabs-1', function () {

        $('#packaging-manager-modal__tab1').show();
        $('li#packaging-manager-modal__tabs-1').addClass('is-active');

        $('#packaging-manager-modal__tab2').hide();
        $('li#packaging-manager-modal__tabs-2').removeClass('is-active');
        $('li#packaging-manager-modal__tabs-2 a').removeAttr('aria-selected');
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 8: For when users clicks over "Installed Packages"
    $(document).on('click', 'li#packaging-manager-modal__tabs-2', function () {

        $('#packaging-manager-modal__tab1').hide();
        $('li#packaging-manager-modal__tabs-1').removeClass('is-active');
        $('li#packaging-manager-modal__tabs-1 a').removeAttr('aria-selected');

        $('#packaging-manager-modal__tab2').show();
        $('li#packaging-manager-modal__tabs-2').addClass('is-active');
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 9: For when users clicks over "Installed Packages > Unistall"
    $(document).on('click', 'a.package-installed-unistall-link', function () {


        Swal.fire({
            title: 'Are you sure that you want to unistall this Package?',
            html: "After unistall all the Public Site items related to this Package will be deleted. " +
                "This action can NOT be undone. <br/> <br/>" +
                "<b>IMPORTANT:<b>Be aware that the Salesforce items related to this package must be deleted manually.",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#ff0000',
            confirmButtonText: window.translation.true_text,
            cancelButtonText: window.translation.false_text
        }).then((result) => {

            if (result.isConfirmed) {

                var installedPackageId = $(this).attr('data-installed-package-id');
                var elementReveal = $(this).attr('data-element-reveal');
                packaging_manager_unistall_package(urlSite, elementReveal, installedPackageId);
            }
        });

    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 10: For when users clicks over "Installed Packages > Install Package"
    $(document).on('click', '#install-package-btn', function () {

        var elementReveal = $(this).attr('data-element-reveal');
        packaging_manager_install_package_step_1(urlSite, elementReveal);
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 11: For when users clicks over "Installed Packages > Install"
    $(document).on('click', '#install-package-modal_save-btn', function () {

        var elementReveal = $(this).attr('data-element-reveal');
        var isUpgrade = $('input#install-package-modal_is-upgrade').val() == 'true';

        packaging_manager_install_package_action(urlSite, elementReveal);
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 12: For when users clicks over "Installed Packages > Continue Installation"
    $(document).on('click', '#install-package-modal_continue-btn', function () {

        var elementReveal = $(this).attr('data-element-reveal');
        var currentStepInput = $('#install-package-modal_step');

        if (currentStepInput.val() == '1') { currentStepInput.val('2'); }
        else if (currentStepInput.val() == '2') { currentStepInput.val('3'); }

        packaging_manager_install_package_step_2(urlSite, elementReveal);
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 13: For when users check radio buttons of installation Settings
    $(document).on('change', 'input:radio[name="package_upgrade_replace"],' +
        'input:radio[name="package_upgrade_mode"]', function () {

        packaging_manager_install_package_validate_installation_settings();
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 14: For whe user clicks Add Items -> Refresh Items
    $(document).on('click', '#add-package-item-modal_clear-cache-btn', function () {

        var elementReveal = 'add-package-item-modal';
        var componentTypeInput = $('select#add-package-item-modal_component-type');
        var componentNamePanel = $('.add-package-item-modal_item-name-panel');
        var componentNameInput = $('select#add-package-item-modal_component-name');
        var sourceTypeValue = $('select#add-package-item-modal_source-type').val();
        var componentTypeValue = componentTypeInput.val();
        var skipCache = $(this).attr('id') == 'add-package-item-modal_clear-cache-btn';

        // Clear out items in "Add Items to package > Select Object"
        var componentNameInput = $('select#add-package-item-modal_component-name');
        if (componentNameInput !== null && componentNameInput !== undefined) {
            componentNameInput.empty();
        }

        process_modal_add_package_items_clear_out_controls(true, true);

        // 3.1.- SourceType: Salesforce and ComponentType does NOT require ComponentName value
        if (sourceTypeValue == SALESFORCE_TYPE_PKG_ITEM_SOURCE
            && (componentTypeValue == 'CustomObject' || componentTypeValue == 'Flow')) {

            // 3.1.1.- Disable componentName input select
            componentNameInput.attr('disabled', true);
            componentNameInput.val('');
            componentNamePanel.addClass('is-hidden');

            // 3.1.2.- Load data inside modal "AddPackageItemModal.cshtml"
            load_sf_items_allowed_for_packaging(urlSite, elementReveal, componentTypeValue, '', true, skipCache);

        }
        // 3.2.- SourceType: Salesforce and ComponentType does require ComponentName value
        else if (sourceTypeValue == SALESFORCE_TYPE_PKG_ITEM_SOURCE
            && (componentTypeValue === 'CustomField' || componentTypeValue === 'ListView')) {

            componentNameInput.attr('disabled', false);
            componentNamePanel.removeClass('is-hidden');
            componentNameInput.val('');

            // 3.2.2.- Force to retrieve the list of allowed CustomObjects, since a SObjetType 
            // is required to retrieve the list of: CustomFields and ListViews
            load_sf_items_allowed_for_packaging(urlSite, elementReveal, 'CustomObject', '_RetrieveAll_', false, skipCache);
        }
    });
}//End:packaging_manager_settings

function process_modal_edit_action_package(elementReveal, urlSite) {

    // Get the list of selected items and store it in hidden input to pass the values to the controller
    var selectedItems = $('a.remove-package-item-link');
    var selectedItemsIterator = 0;
    var selectedItemsCounter = selectedItems ? selectedItems.length : 0;
    var inputSelectedToStoreItems = $('input#new-package-modal_selected-items');
    var inputToStoreManualItems = $('input#new-package-modal_manual-selected-items');
    var selectedItemsAsString = '';
    var manualSelectedItemsAsString = '';
    var packageIdValue = $('input#new-package-modal_Id').val();

    selectedItems.each(function (index, item) {

        var itemId = $(item).attr('data-component-id');
        var itemInternalKey = $(item).attr('data-internal-key');
        var isManualVal = $(item).attr('data-is-manual');
        var isManual = isManualVal && isManualVal === "true" ? '1' : '0';
        itemInternalKey = itemInternalKey ? itemInternalKey : '';

        if (!itemInternalKey.toLowerCase().includes('listview')) {
            itemInternalKey = itemInternalKey.toLowerCase();
        }

        selectedItemsAsString += itemInternalKey + '+';

        if (isManual) { manualSelectedItemsAsString += itemInternalKey + '+'; }

        selectedItemsIterator++;
        if (selectedItemsIterator >= selectedItemsCounter) {

            inputSelectedToStoreItems.val(selectedItemsAsString);
            inputToStoreManualItems.val(manualSelectedItemsAsString);
            return false;//This works as break
        }
    });

    var formData = $("#new-package-modal-form").serializeObject();
    var requestVerificationToken = formData['__RequestVerificationToken'];    

    $.ajax({
        url: urlSite + "PackagingManager/EditPackageAction",
        method: "POST",
        data: {
            form: formData,
            "__RequestVerificationToken": requestVerificationToken
        },
        beforeSend: function () {

            $('#' + elementReveal).find('.processing_screen').show();

        }
    }).done(function (data) {

        var response = JSON.parse(data);

        //Hide processing screen
        $('#' + elementReveal).find('.processing_screen').hide();

        //Check if there are errors
        if (response.status != '200') {

            // Show Error Message
            Swal.fire({
                title: window.translation.error,
                text: response.message,
                icon: "error",
                closeOnConfirm: true
            });
        } else {

            Swal.fire({
                title: window.translation.success,
                text: "Package was successfully saved. If you want to make latest updates in Package available, you should click \"Create Installation Token\".",
                icon: "success",
                closeOnConfirm: true
            });

            // Clean the selections right after we store the selected items
            //$('#new-package-modal_items-table').find('tbody').empty();//Remove all the content inside the table

            //$('#' + elementReveal).foundation('close');
            //process_modal_packaging_manager("packaging-manager", urlSite);


            $('input#new-package-modal_Id').val(response.packageId);
            $('input#new-package-modal_version-Id').val(response.versionId);

            // Update Package details modal
            packaging_manager_load_data_in_package_modal(elementReveal, response.packageId, response.versionId, urlSite);

            // Update the list of packages modal
            load_packages_per_site(urlSite, elementReveal);

            // Enable Publish Package Button
            $('#new-package-modal_upload-btn').attr('disabled', false);
        }
    });
}//End:process_modal_edit_action_package

function packaging_manager_enable_save_package_btn(urlSite) {

    var nameVal = $('input#new-package-modal_packageName').val();

    if (nameVal.length < 6) {

        $('#new-package-modal_packageName_helpText').removeClass('hidden');
        $('#new-package-modal_packageName_helpText').html('Package Name must at least 6 characters');
        return;
    } else {
        $('#new-package-modal_packageName_helpText').addClass('hidden');
        $('#new-package-modal_packageName_helpText').html('');
    }


    var packageIdValue = $('input#new-package-modal_Id').val();
    var isEditMode = parseInt(packageIdValue) > 0;
    var isValidPackageName = isEditMode;

    //Check the uniqueness of the packageName, only when is a new package
    if (!isEditMode) {

        $.ajax({
            url: urlSite + "PackagingManager/IsValidePackageName",
            data: {
                packageName: nameVal
            },
            beforeSend: function () {
            }
        }).done(function (data) {

            var response = JSON.parse(data);
            isValidPackageName = response.isValid == '1';

            packaging_manager_enable_save_package_btn_step2(isValidPackageName, isEditMode);
        });
    } else {

        // When is edit mode, the package.Name is not editable.
        packaging_manager_enable_save_package_btn_step2(true, isEditMode);
    }

}//End:packaging_manager_enable_save_package_btn

function packaging_manager_enable_save_package_btn_step2(isValidPackageName, isEditMode) {

    var savePackageBtn = $('#new-package-modal_save-btn');
    var addItemBtn = $('#new-package-modal_add-item-btn');
    var nameVal = $('input#new-package-modal_packageName').val();
    var descriptionVal = $('textarea#new-package-modal_packageDescription').val();

    if (isValidPackageName && (nameVal !== null && descriptionVal !== null && nameVal.length >= 6 && descriptionVal.length > 0)) {

        var packageItemsTable = $('#new-package-modal_items-table');//The table where the list of packages items will be appended
        var packageItemsCounter = packageItemsTable[0].rows.length;
        var showSubmitButton = packageItemsCounter > 1;

        //5.1.1- When Name + Description is not blank, "Save" and "Add Items" button are enabled
        savePackageBtn.attr('disabled', !showSubmitButton);
        addItemBtn.attr('disabled', false);

        //Clearout error messages
        $('#new-package-modal_packageName_helpText').addClass('hidden');
        $('#new-package-modal_packageName_helpText').html('');
        $('#new-package-modal_packageDescription_helpText').addClass('hidden');
        $('#new-package-modal_packageDescription_helpText').html('');
    }
    else {

        //5.1.2- When Name + Description is not blank, "Save" and "Add Items" button are enabled
        savePackageBtn.attr('disabled', true);
        addItemBtn.attr('disabled', true);

        if (!isValidPackageName) {

            $('#new-package-modal_packageName_helpText').removeClass('hidden');
            $('#new-package-modal_packageName_helpText').html('This Package name is not available.');

            $('#new-package-modal_packageDescription_helpText').addClass('hidden');
            $('#new-package-modal_packageDescription_helpText').html('');

        } else {

            $('#new-package-modal_packageName_helpText').addClass('hidden');
            $('#new-package-modal_packageName_helpText').html('');

            $('#new-package-modal_packageDescription_helpText').removeClass('hidden');
            $('#new-package-modal_packageDescription_helpText').html('Description is a required field');
        }
    }

}//End:packaging_manager_enable_save_package_btn_step2

function packaging_manager_load_data_in_package_modal(elementReveal, packageId, versionId, urlSite) {

    //Clean the Package Items table
    $('#new-package-modal_items-table').find('tbody').empty();//Remove all the content inside the table

    // 1.- Set the Id of the record
    var packageIdInput = $('input#new-package-modal_Id');
    packageIdInput.val(packageId);
    var packageVersionIdInput = $('input#new-package-modal_version-Id');
    packageVersionIdInput.val(versionId);
    var packageSelectedItemsInput = $('input#new-package-modal_selected-items');
    packageSelectedItemsInput.val('');
    var packageManualSelectedItemsInput = $('input#new-package-modal_manual-selected-items');
    packageManualSelectedItemsInput.val('');
    var deletedItemsInput = $('#new-package-modal_manual-deleted-items');
    deletedItemsInput.val('');
    $('#new-package-modal_upload-btn').attr('disabled', true);

    // 2.- Define flags
    var isEditMode = packageId > 0;
    var isCreateMode = packageId == 0;

    // 3.- Show the modal: "EditPackageModal.cshtml"
    $('#' + elementReveal).parent('.reveal-overlay').css('z-index', '1001');
    $('#' + elementReveal).css('z-index', '1002');
    $('#' + elementReveal).find('.processing_screen').show();
    $('#' + elementReveal).foundation('open');
    $('#' + elementReveal).find('.processing_screen').hide();

    // 3.- Load inputs
    var modalTitle = $('legend#' + elementReveal + '_title');
    var packageNameInput = $('input#' + elementReveal + '_packageName');
    var installationLinkColumn_lbl = $('#' + elementReveal + '_installLinkColumn_lbl');
    var installationLinkColumn_input = $('#' + elementReveal + '_installLinkColumn_input');
    var savePackageBtn = $('#' + elementReveal + '_save-btn');
    var addItemBtn = $('#' + elementReveal + '_add-item-btn');

    // 4.- Add behavior to inputs
    modalTitle.html(isEditMode ? 'Package Details' : 'New Package');// Set the title of the modal
    //packageNameInput.attr('disabled', isEditMode);//On Edit Mode, packageName input must be disabled
    if (!isEditMode) { installationLinkColumn_lbl.hide(); installationLinkColumn_input.hide(); }//Hide installationLink input on Create
    savePackageBtn.attr('disabled', isCreateMode);//On Create Mode, submit button is disabled by default, until items are added to the package
    addItemBtn.attr('disabled', isCreateMode);//On Create Mode, "add Items" button is disabled by default, until required fields are populated by the user

    // 5.- Add validations to enable/disable buttons
    $('input#' + elementReveal + '_packageName,textarea#' + elementReveal + '_packageDescription').change(function () {

        // 5.1- Enable/Disable "Save" button based on PackageName and PackageDescription length
        packaging_manager_enable_save_package_btn(urlSite);
    });

    // 6.- Load data in "NewPackageModal.cshtml"
    $.ajax({
        url: urlSite + "PackagingManager/LoadPackageData",
        data: {
            packageId: packageId,
            versionId: versionId
        },
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {

        var jsonResult = JSON.parse(data);
        var timezone = jsonResult.timezone;

        // 6.1- Handle case when error ocurrs
        if (jsonResult.status != 200) {
            //Hide processing screen
            $('#' + elementReveal).find('.processing_screen').hide();
            return;
        }

        // 6.2- Read response
        var model = JSON.parse(jsonResult.model);
        var versionCreatedDate = model.latestVersion != null && model.latestVersion != undefined
            ? moment.tz(model.latestVersion.CreatedDate, timezone).format('MM/DD/YYYY hh:mm a') : '';

        var managedPackagesDependencies = "";
        if (model.version.ManagedPackagesDependencies) {

            managedPackagesDependencies = "<b>Dependencies to Managed pakages:</b> " + model.version.ManagedPackagesDependencies;
        }

        // 6.3- Load response in PackageItems table
        var editPackageModalTable = $('#' + elementReveal + '_items-table');//The table where the list of packages items will be appended
        $('#' + elementReveal + '_versionId').val(model.version.ID);
        $('#' + elementReveal + '_packageName').val(model.package.Name);
        $('#' + elementReveal + '_packageDescription').val(model.package.Description);
        $('#' + elementReveal + '_packagePostinstallLink').val(model.version.PostInstallLink);
        $('#' + elementReveal + '_managed-packages-dependencies-output').html(managedPackagesDependencies);

        var InstallationLinkValue = model.version.InstallationLink;
        if (InstallationLinkValue != null && InstallationLinkValue != undefined && InstallationLinkValue.length > 0) {

            // Show Installation Link
            $('#new-package-modal_packageInstallationLink').show();
            $('#new-package-modal_installLinkColumn_lbl').show();
            $('#' + elementReveal + '_packageInstallationLink')
                .html('<a href="#" onclick="package_manage_copy_installation_token(\'' + model.version.InstallationLink + '\');return false;">' +
                    'Click here to copy the Installation Token</a><div style="font-size: 0.7rem;color: #615F5F;">Latest Release on ' + versionCreatedDate + '</div>');
        } else {

            // Hide Installation Link
            $('#new-package-modal_packageInstallationLink').hide();
            $('#new-package-modal_installLinkColumn_lbl').hide();
        }


        // 6.4.- Append the list of PackageItems for the selected PackageVersion
        model.packageItems.forEach(function (item) {

            var lastModifiedDate = moment.tz(item.record.LastModifiedDate, timezone).format('MM/DD/YYYY hh:mm a');
            var packageItem =
                '<tr>' +
                '<td style="width: 10rem; text-align:center;">' +
                    (item.isDependency && !item.record.Manual ? 
                        '<small style="color:#afaaaa;"  ' +
                            ' data-dependency-component-id="' + item.record.ID + '"  ' +
                            ' data-dependency-internal-key="' + item.internalKey + '" ' +
                        ' >Dependency</small>' :
                        '<a class="remove-package-item-link" ' +
                            ' data-element-reveal="remove-package-item-modal" ' + 
                            ' data-component-id="' + item.record.ID + '"  ' +
                            ' data-internal-key="' + item.internalKey + '" ' +

                        ' >Remove</a>'
                    ) +
                '</td > ' +
                '<td style="width: 25rem; text-align:center;">' + item.nameToShow + '</td>' +
                '<td style="width: 30rem; text-align:center;">' + item.sourceToShow + '</td>' +
                '<td style="width: 20rem; text-align:center;">' + item.typeToShow + '</td>' +
                '<td style="width: 15rem; text-align:center;">' + lastModifiedDate + '</td>' +
                '</tr>';

            editPackageModalTable.find('tbody').append(packageItem);
        });

        //Hide processing screen
        $('#' + elementReveal).find('.processing_screen').hide();
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 6: For when users click "Remove" from NewPackageModal.cshtml
    $(document).on('click', 'a.remove-package-item-link', function () {

        $('#new-package-modal').find('.processing_screen').show();

        Swal.fire({
            title: 'Are you sure?',
            text: "This item will be removed from the Package",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#ff0000',
            confirmButtonText: window.translation.true_text,
            cancelButtonText: window.translation.false_text
        }).then((result) => {

            if (result.isConfirmed) {

                var rowToDelete = $(this).closest('tr');
                if (rowToDelete) {
                    rowToDelete.remove();
                    packaging_manager_enable_save_package_btn(urlSite);
                }
            }

            $('#new-package-modal').find('.processing_screen').hide();
        });
    });

}//End:process_modal_load_package

function process_modal_add_package_items_clear_out_controls(shouldDisableComponentName, overrideSaveBtnStatus) {

    var checkAllBtn = $('input#add-package-item-modal_select_all_checkboxes');
    var itemsCounterDiv = $('div#add-package-item-modal_items-selected-counter');
    var packagingTableWithAllowedItems = $('table#add-package-item-modal_items-selector-table');
    var addItems2PkgBtn = $('input[type="button"]#add-package-item-modal_save-btn');
    var uploadPkgBtn = $('#new-package-modal_upload-btn');    
    
    // Disable Publish Package button by default
    if (uploadPkgBtn) {
        uploadPkgBtn.attr('disabled', true);
    }

    checkAllBtn.prop('checked', false);//Uncheck CheckAll btn
    itemsCounterDiv.html('(0) items selected');//Clear out the selected Items Counter
    packagingTableWithAllowedItems.find('tbody').empty();//Remove all the content inside the table

    if (overrideSaveBtnStatus) {
        addItems2PkgBtn.attr('disabled', true);//Disable "Add Items to Package" button
    }


    if (shouldDisableComponentName) {

        var componentNamePanel = $('.add-package-item-modal_item-name-panel');
        componentNamePanel.addClass('is-hidden');
    }

}//End:process_modal_add_package_items_clear_out_controls

function packaging_manager_get_list_of_already_selected_items(sourceType) {

    var result = [];

    if (sourceType != SALESFORCE_TYPE_PKG_ITEM_SOURCE
        && sourceType != CURRENT_PUBLIC_SITE_PKG_ITEM_SOURCE
        && sourceType != CMS_GALLERY_PKG_ITEM_SOURCE) {

        //Invalid Source Type for package Item
        return result;
    }

    // Make sure that there are selected items
    var alreadySelectedItems = $('a.remove-package-item-link');
    if (!alreadySelectedItems || alreadySelectedItems.length <= 0) {
        return result;
    }

    //Process the list of the already selected Items and separated the items per source
    alreadySelectedItems.each(function (index, item) {

        var itemId = $(item).attr('data-component-id');
        var itemInternalKey = $(item).attr('data-internal-key');
        itemInternalKey = itemInternalKey ? itemInternalKey.toLocaleLowerCase() : '';

        result[itemInternalKey] = itemId;
    });

    return result;
}//End:packaging_manager_get_list_of_already_selected_items

function process_modal_add_package_items(elementReveal, urlSite) {

    // 1.- Show the modal: PackagingManagerModal
    $('#' + elementReveal).parent('.reveal-overlay').css('z-index', '1002');
    $('#' + elementReveal).css('z-index', '1003');
    $('#' + elementReveal).find('.processing_screen').show();
    $('#' + elementReveal).foundation('open');
    $('#' + elementReveal).find('.processing_screen').hide();

    process_modal_add_package_items_clear_out_controls(true, false);


    // Every time the modal is opened we initialize the inputs and the table's content
    var sourceTypeInput = $('select#add-package-item-modal_source-type');
    var componentTypeInput = $('select#add-package-item-modal_component-type');
    var componentNameInput = $('select#add-package-item-modal_component-name');
    var packagingTableWithAllowedItems = $('table#add-package-item-modal_items-selector-table');
    sourceTypeInput.val('');
    packaging_manager_clear_disable_select(componentTypeInput, true);
    packaging_manager_clear_disable_select(componentNameInput, true);    

    // 2.- Add behavior for when SourceType selection changes
    $('select#add-package-item-modal_source-type').change(function () {

        process_modal_add_package_items_clear_out_controls(true, true);
        var sourceTypeValue = $(this).val();
        
        if (sourceTypeValue == CMS_GALLERY_PKG_ITEM_SOURCE) { // 2.1.- SourceType: CMS Gallery

            // 2.1.1.- Disable the dependet input selects
            packaging_manager_clear_disable_select(componentTypeInput, true);
            packaging_manager_clear_disable_select(componentNameInput, true);

            //2.1.2.- Populate the componentTypes allowed for this SourceType
            var CMS_GALLERY_COMPONENT_TYPES =
                '<option value="">-- Select --</option>' +
                '<option value="ARS - Blocks">ARS - Blocks</option>' +
                '<option value="ARS - Forms">ARS - Forms</option>' +
                '<option value="ARS - Workflows">ARS - Workflows</option>' +
                (IS_LLAMAPI_ENABLED ? '' : '<option value="SharingPortal - Forms">SharingPortal - Forms</option>') +
                '<option value="Standalone - Blocks">Standalone - Blocks</option>' +
                '<option value="Standalone Forms">Standalone Forms</option>';

            componentTypeInput.empty();
            componentTypeInput.append(CMS_GALLERY_COMPONENT_TYPES);

            // 2.1.2.- Enable componentType input
            componentTypeInput.attr('disabled', false);
            componentTypeInput.val('');

        } else if (sourceTypeValue == CURRENT_PUBLIC_SITE_PKG_ITEM_SOURCE) { // 2.2.- SourceType: This Public Site

            // 2.2.1.- Disable the dependet input selects
            packaging_manager_clear_disable_select(componentTypeInput, true);
            packaging_manager_clear_disable_select(componentNameInput, true);

            //2.2.2.- Populate the componentTypes allowed for this SourceType
            var THIS_PUBLIC_SITE_COMPONENT_TYPES =
                '<option value="">-- Select --</option>' +
                '<option value="ARS - Blocks">ARS - Blocks</option>' +
                '<option value="ARS - Forms">ARS - Forms</option>' +
                '<option value="ARS - Workflows">ARS - Workflows</option>' +
                (IS_LLAMAPI_ENABLED ? '' : '<option value="SharingPortal - Forms">SharingPortal - Forms</option>') +
                '<option value="Standalone - Blocks">Standalone - Blocks</option>' +
                '<option value="Standalone Forms">Standalone Forms</option>' +
                '<option value="Page">Pages</option>';

            componentTypeInput.empty();
            componentTypeInput.append(THIS_PUBLIC_SITE_COMPONENT_TYPES);

            // 2.2.2.- Enable componentType input
            componentTypeInput.attr('disabled', false);
            componentTypeInput.val('');


        } else if (sourceTypeValue == SALESFORCE_TYPE_PKG_ITEM_SOURCE) { // 2.3.- SourceType: Salesforce

            //2.3.1.- Populate the componentTypes allowed for this SourceType
            var SALESFORCE_COMPONENT_TYPES =
                '<option value="">-- Select --</option>' +
                '<option value="CustomObject">Custom Object</option>' +
                '<option value="CustomField">Custom Field</option>' +
                '<option value="ListView">ListView</option>' +
                '<option value="Flow">Flow</option>';

            componentTypeInput.empty();
            componentTypeInput.append(SALESFORCE_COMPONENT_TYPES);

            // 2.3.2.- Enable componentType input
            componentTypeInput.attr('disabled', false);
            componentTypeInput.val('');

            // 2.3.3.- Disable componentName input
            componentNameInput.attr('disabled', true);
            componentNameInput.val('');

        }
        else
        {
            // Disable the dependet input selects
            packaging_manager_clear_disable_select(componentTypeInput, true);
            packaging_manager_clear_disable_select(componentNameInput, true);
        }

    });

    // 3.- Add behavior for when ComponentType selection changes
    $('select#add-package-item-modal_component-type').change(function () {

        var componentTypeInput = $('select#add-package-item-modal_component-type');
        var componentNamePanel = $('.add-package-item-modal_item-name-panel');
        var componentNameInput = $('select#add-package-item-modal_component-name');
        var sourceTypeValue = $('select#add-package-item-modal_source-type').val();
        var componentTypeValue = componentTypeInput.val();
        var clearCacheBtn = $('a#add-package-item-modal_clear-cache-btn');

        process_modal_add_package_items_clear_out_controls(true, true);
        clearCacheBtn.hide();

        // 3.1.- SourceType: Salesforce and ComponentType does NOT require ComponentName value
        if (sourceTypeValue == SALESFORCE_TYPE_PKG_ITEM_SOURCE
            && (componentTypeValue == 'CustomObject' || componentTypeValue == 'Flow')) {

            clearCacheBtn.show();

            // 3.1.1.- Disable componentName input select
            componentNameInput.attr('disabled', true);
            componentNameInput.val('');
            componentNamePanel.addClass('is-hidden');

            // 3.1.2.- Load data inside modal "AddPackageItemModal.cshtml"
            load_sf_items_allowed_for_packaging(urlSite, elementReveal, componentTypeValue, '', true, false);

        }
        // 3.2.- SourceType: Salesforce and ComponentType does require ComponentName value
        else if (sourceTypeValue == SALESFORCE_TYPE_PKG_ITEM_SOURCE
            && (componentTypeValue === 'CustomField' || componentTypeValue === 'ListView')) {

            clearCacheBtn.show();
            componentNameInput.attr('disabled', false);
            componentNamePanel.removeClass('is-hidden');
            componentNameInput.val('');

            // 3.2.2.- Force to retrieve the list of allowed CustomObjects, since a SObjetType 
            // is required to retrieve the list of: CustomFields and ListViews
            load_sf_items_allowed_for_packaging(urlSite, elementReveal, 'CustomObject', '_RetrieveAll_', false, false);
        }
        // 3.3.- SourceType: CMS Gallery
        else if (sourceTypeValue == CMS_GALLERY_PKG_ITEM_SOURCE) {

            load_items_allowed_for_source_cms_gallery(urlSite, elementReveal, sourceTypeValue, componentTypeValue, 1);
        }
        // 3.4.- SourceType: This Public Site
        else if (sourceTypeValue == CURRENT_PUBLIC_SITE_PKG_ITEM_SOURCE) {

            load_items_allowed_for_source_cms_gallery(urlSite, elementReveal, sourceTypeValue, componentTypeValue, 0);
        }
        else {

            componentNameInput.attr('disabled', true);
            componentNamePanel.addClass('is-hidden');
            componentNameInput.val('');
        }
    });

    // 4.- Add behavior for when ComponentName selection changes
    $('select#add-package-item-modal_component-name').change(function () {

        process_modal_add_package_items_clear_out_controls(false, true);
        var componentTypeInput = $('select#add-package-item-modal_component-type');
        var componentTypeValue = componentTypeInput.val();
        var componentNameValue = $(this).val();

        // 4.1.- If the selected ComponentName is empty, then we clear out the table
        if (componentNameValue === '') {

            packagingTableWithAllowedItems.find('tbody').empty();//Remove all the content inside the table

        } else {

            // 4.2.- If the selected ComponentName is NOT empty, then we populate the table
            load_sf_items_allowed_for_packaging(urlSite, elementReveal, componentTypeValue, componentNameValue, true, false);
        }
    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 5: For when users check/uncheck a SfItem to be added to the package
    $(document).on('change', 'input[name="itemsForPackaging[]"]', function () {

        //var sfItemChecked = $(this).prop('checked');
        var sfItemSpanCounter = $('div#add-package-item-modal_items-selected-counter');
        var sfItemCheckedCounter = $('input[name="itemsForPackaging[]"]:checkbox:checked').length;
        var addItems2PkgBtn = $('input[type="button"]#add-package-item-modal_save-btn');
        var addItems2PkgBtnDisabled = sfItemCheckedCounter <= 0;

        sfItemSpanCounter.html('(' + sfItemCheckedCounter + ') items selected');
        addItems2PkgBtn.attr('disabled', addItems2PkgBtnDisabled);

    });

    //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    // CASE 6: Check all listed items to be added for packaging
    $(document).on('change', 'input#add-package-item-modal_select_all_checkboxes', function () {

        var checkAllValue = $(this).prop('checked');
        var sfItemCheckedInputs = $('input[name="itemsForPackaging[]"]');
        var sfItemCheckedCounter = checkAllValue ? $('input[name="itemsForPackaging[]"]:checkbox').length : 0;
        var addItems2PkgBtn = $('input[type="button"]#add-package-item-modal_save-btn');

        sfItemCheckedInputs.prop('checked', checkAllValue);
        var sfItemSpanCounter = $('div#add-package-item-modal_items-selected-counter');
        sfItemSpanCounter.html('(' + sfItemCheckedCounter + ') items selected');
        addItems2PkgBtn.attr('disabled', !checkAllValue);
    });
}//End:process_modal_add_package_items

function packaging_manager_clear_disable_select(inputCmp, isDisabled) {

    inputCmp.empty();
    inputCmp.attr('disabled', isDisabled);
    inputCmp.val('');

}//End:packaging_manager_clear_disable_select

function load_sf_items_allowed_for_packaging(urlSite, elementReveal, componentType, componentName, loadIntable, skipCache) {

    $('label#add-package-item-modal_column-3-ps').addClass('is-hidden');
    $('label#add-package-item-modal_column-3-sf').removeClass('is-hidden');

    $.ajax({
        url: urlSite + "PackagingManager/GetAvailableSalesforceItems",
        data: {
            componentType: componentType,
            componentName: componentName,
            skipCache: skipCache
        },
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {

        var response = JSON.parse(data);

        // Validate response code and show error when the request fails
        if (response.code != '200' || response.components === null || response.components === undefined
            || response.components[0] === null || response.components[0] === undefined
            || JSON.parse(response.components).length == 0) {

            $('#' + elementReveal).find('.processing_screen').hide();

            //Show error message only if the request failed
            if (response.code != '200') {
                // Show Error Message
                Swal.fire({
                    title: window.translation.error,
                    text: response.message,
                    icon: "error",
                    closeOnConfirm: true
                });
            }

            return;
        }

        // Set the components variable to make the code more redable
        var sfComponents = JSON.parse(response.components);

        // To Load the components in the ComponentName input select
        if (!loadIntable) {

            load_sf_items_allowed_for_packaging_in_input(elementReveal, 'select#add-package-item-modal_component-name', sfComponents);
            return;
        }

        //Get the list of already selected items
        var selectedPkgItemsMap = packaging_manager_get_list_of_already_selected_items(SALESFORCE_TYPE_PKG_ITEM_SOURCE);


        // Append the list of available Sf Components to the table
        // Only for: CustomObject and Flows
        var table = $('table#add-package-item-modal_items-selector-table');
        table.find('tbody').empty();//Remove all the content inside the table
        var tableRows = '';
        var counter = 0;
        var sfComponentsLength = sfComponents.length;
        sfComponents.forEach(function (item) {

            var itemId = item.Id === null || item.Id === undefined ? '' : ':' + item.Id;
            var itemInternalKey = SALESFORCE_TYPE_PKG_ITEM_SOURCE + ':' + componentType + ':' + item.ApiName + itemId;
            itemInternalKey = itemInternalKey ? itemInternalKey : '';
            var itemFound = (selectedPkgItemsMap && (itemInternalKey in selectedPkgItemsMap));

            if (!itemInternalKey.toLowerCase().includes('listview')) {
                itemInternalKey = itemInternalKey.toLowerCase();
            }

            tableRows =
                '<tr>' +
                    '<td style="width: 10rem; text-align:center;">' +
                    '<input type="checkbox" name="itemsForPackaging[]"  ' +
                        'value="' + item.ApiName + '" ' +
                        'data-name="' + item.Label + '" ' +
                        'data-component-type="' + componentType + '"'+
                        'data-component-source="Salesforce"' +
                        'data-internal-key="' + itemInternalKey + '" ' +
                        (itemFound ? ' disabled="true" checked ': '') +
                    '/> ' +
                    '</td>' +
                    '<td style="width: 70rem; text-align:center;">' + item.Label + '</td>' +
                    '<td style="width: 20rem; text-align:center;">' + item.ApiName + '</td>' +
                '</tr>';

            table.append(tableRows);

            // Hide the loadin screen when the table is fully loaded
            counter++;
            if (sfComponentsLength == counter) {

                $('#' + elementReveal).find('.processing_screen').hide();

            }
        });
    });    
}//End:load_sf_items_allowed_for_packaging

function load_sf_items_allowed_for_packaging_in_input(elementReveal, inputSelector, sfComponents) {

    var inputSelect = $(inputSelector);

    if (inputSelect === null || inputSelect === undefined) { return; }

    var counter = 0;
    var componentsLength = sfComponents.length;

    // If there are no result we hide the process screen
    if (componentsLength <= 0) {
        $('#' + elementReveal).find('.processing_screen').hide();
    }

    inputSelect.append('<option value="">-- Select --</option>');
    sfComponents.forEach(function (item) {

        inputSelect.append('<option value="' + item.ApiName + '">' + item.Label + '</option>');

        counter++;
        // Hide the process screen when the options are fully loaded in the input
        if (counter === componentsLength) {

            $('#' + elementReveal).find('.processing_screen').hide();
        }
    });

}//End:load_sf_items_allowed_for_packaging_in_input

function process_modal_packaging_manager(elementReveal, urlSite) {

    // 1.- Show the modal: PackagingManagerModal
    $('#' + elementReveal).parent('.reveal-overlay').css('z-index', '1000');
    $('#' + elementReveal).css('z-index', '1001');
    $('#' + elementReveal).find('.processing_screen').show();
    $('#' + elementReveal).foundation('open');

    // 2.- Load data in table inside modal "PackagingManagerModal" > Table1
    load_packages_per_site(urlSite, elementReveal);

    // 3.- Load data in table inside modal "PackagingManagerModal" > Table2
    load_installed_packages_per_site(urlSite, elementReveal);

}//End:process_modal_packaging_manager

function load_packages_per_site(urlSite, elementReveal) {

    var packageManagerModalTable = $('#package-manager-modal__table1-tab1');//The table where the list of packages will be appended
    packageManagerModalTable.find('tbody').empty();//Remove all the content inside the table

    // Invoke the logic in PackagingManagerController.GetPackagesPerSite
    // to get the list of the Packages for the current Site and insert 
    // the content in PackagingManagerModal.cshtml > Table#package-manager-modal__table1-tab1
    $.ajax({
        method: "POST",
        url: urlSite + "PackagingManager/GetPackagesPerSite",
        data: "",
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {

        var response = JSON.parse(data);
        var timezone = response.timezone;
        var packages = JSON.parse(response.packages);

        if (packages === null || packages === undefined) {
            $('#' + elementReveal).find('.processing_screen').hide();

            // Show Error Message
            Swal.fire({
                title: window.translation.error,
                text: response.message,
                icon: "error",
                closeOnConfirm: true
            });

            return;
        }

        if (packages.length <= 0) {

            $('#' + elementReveal).find('.processing_screen').hide();
        }

        // Append the list of Packages for the current Site 
        // inside PackagingManagerModal.cshtml > Table#package - manager - modal - table
        var packagesCounter = 0;
        var packagesLength = packages.length;
        packages.forEach(function (item) {

            var lastModifiedDate = moment.tz(item.version.LastModifiedDate, timezone).format('MM/DD/YYYY hh:mm a');
            var packageTableRowRecord =
                '<tr>' +
                '<td style="width: 5rem; text-align:center;">' +
                    '<a class="package-record-edit-link" ' + 
                    ' data-element-reveal="new-package-modal" ' +
                    ' data-version-id="' + item.version.ID + '" ' + 
                    ' data-element-id="' + item.package.ID + '">' + 
                        'Edit' + 
                    '</a>' +
                '</td > ' +
                '<td style="width: 35rem; text-align:center;">' + item.package.Name + '</td>' +
                '<td style="width: 40rem; text-align:center;">' + item.package.Description + '</td>' +
                '<td style="width: 20rem; text-align:center;">' + lastModifiedDate + '</td>' +
                '</tr>';

            packageManagerModalTable.find('tbody').append(packageTableRowRecord);

            // Hide the processing_screen only after the list of packages has been fully loaded
            packagesCounter++;
            if (packagesCounter == packagesLength) {
                $('#' + elementReveal).find('.processing_screen').hide();
            }
        });

    });
}//End:load_packages_per_site

function load_items_allowed_for_source_cms_gallery(urlSite, elementReveal, sourceTypeValue, componentType, typeOfGallery) {

    $('label#add-package-item-modal_column-3-sf').addClass('is-hidden');
    $('label#add-package-item-modal_column-3-ps').removeClass('is-hidden');

    var packagingTableWithAllowedItems = $('table#add-package-item-modal_items-selector-table');
    packagingTableWithAllowedItems.find('tbody').empty();
    $.ajax({
        method: "GET",
        url: urlSite + "PackagingManager/RetrieveItemsFromPS",
        data: { typeOfGallery: typeOfGallery, itemType: componentType },
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {

        var response = JSON.parse(data);

        // Determine the returned list to be used for iteract
        var itemList = JSON.parse(response.items);

        // When there are no items to show we hide the processing screen
        if (itemList === null
            || itemList === undefined
            || itemList.length <= 0) {

            $('#' + elementReveal).find('.processing_screen').hide();
            return;
        }

        // Determine the lenght of the table
        var packagingItemsInCMSGalleryCounter = itemList.length;
        var itemsCounter = 0;

        //Get the list of already selected items
        var selectedPkgItemsMap = packaging_manager_get_list_of_already_selected_items(sourceTypeValue);

        // Iteract over the list of available items and populate the table
        itemList.forEach(function (item, index) {
            var blockName = item.ItemName;
            var date = moment.tz(item.LastModifiedDate, response.timezone).format('MM/DD/YYYY hh:mm a');
            var user = item.LastModifiedByUser;
            var link = '';
            var elementType = '';
            var titleLink = '';
            var helpText = item.HelpText;
            var idItem = item.ID;


            if (item.Type == '19') {
                elementType = 'form-builder-block';
                titleLink = 'Form';
            } else {
                titleLink = item.SpecialTypeGallery !== null ? item.SpecialTypeGallery : '----';
            }

            //Verify if the current item was already selected
            var itemInternalKey = sourceTypeValue + ':' + componentType + ':' + item.ID;
            itemInternalKey = itemInternalKey ? itemInternalKey.toLocaleLowerCase() : '';
            var itemFound = (selectedPkgItemsMap && (itemInternalKey in selectedPkgItemsMap));

            // Define the table rows to be shown
            var source = typeOfGallery == 1 ? 'CMS Gallery' : 'This Public Site';

            var packagingItemTableRow =
                '<tr>' +
                '<td style="width: 10rem; text-align:center;">' +
                '<input type="checkbox" name="itemsForPackaging[]" value="' + item.ID + '" ' +
                    'data-id="' + item.ID + '" data-name="' + blockName + '" ' +
                    'data-component-type="' + componentType + '"' +
                    'data-component-source="' + source + '"' +
                    'data-internal-key="' + itemInternalKey + '" ' +
                    (itemFound ? ' disabled="true" checked ' : '') +
                '/> ' +
                '</td>' +
                '<td style="width: 70rem; text-align:center;">' + blockName + (componentType == "Page" && item.HelpText !== "" ? "<br /><b>Friendly URL: </b><a href='" + item.HelpText + "' target='_blank'>" + item.HelpText + "</a>": "") + '</td>' +
                '<td style="width: 20rem; text-align:center;">' + item.Type + '</td>' +
                '</tr>';

            packagingTableWithAllowedItems.append(packagingItemTableRow);

            // Hide the loadin screen when the table is fully loaded
            itemsCounter++;
            if (itemsCounter == packagingItemsInCMSGalleryCounter) {

                $('#' + elementReveal).find('.processing_screen').hide();

            }

        });
    });
}//End:load_items_allowed_for_source_cms_gallery

function packaging_manager_upload_package_action(elementReveal, packageId, versionId, urlSite) {

    $.ajax({
        url: urlSite + "PackagingManager/UploadPackageAction",
        data: {
            packageId: packageId,
            versionId: versionId
        },
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {

        var jsonResult = JSON.parse(data);

        if (jsonResult.status == '200') {

            $('#' + elementReveal).find('.processing_screen').hide();

            var latestPublishedVersion = JSON.parse(jsonResult.latestPublishedVersion);

            var timezone = jsonResult.timezone;
            var CreatedDate = moment.tz(latestPublishedVersion.CreatedDate, timezone).format('MM/DD/YYYY hh:mm a');

            Swal.fire({
                title: window.translation.success,
                text: " Token was successfully created.",
                icon: "success",
                closeOnConfirm: true
            });

            $('#new-package-modal_upload-btn').attr('disabled', true);
            // Disable Publish Package Button and show installation token
            if (packageId > 0) {

                if (jsonResult.installationLink != null && jsonResult.installationLink.length > 0) {

                    $('#new-package-modal_installLinkColumn_lbl').show();
                    $('#new-package-modal_installLinkColumn_input').show();
                    $('#new-package-modal_packageInstallationLink').show();
                    $('#' + elementReveal + '_packageInstallationLink')
                        .html('<a href="#" onclick="package_manage_copy_installation_token(\'' + jsonResult.installationLink + '\');return false;">' +
                        'Click here to copy the Installation Token</a><div style="font-size: 0.7rem;color: #615F5F;">Latest Release on ' + CreatedDate + '</div>');

                }
            }

        } else {

            var errorMessageHTML = "";

            if (jsonResult.details !== null && jsonResult.details !== undefined && jsonResult.details.length > 0) {

                if (jsonResult.details.includes("Entity of type") && jsonResult.details.includes("ListView")) {

                    errorMessageHTML +=
                        '<div>' +
                        'Make sure that all the ListViews included in this package are defined as "Visible to all users".' +
                        '</div>';
                }

                errorMessageHTML += "<br /><br /><b>Error Details: </b>" +
                    "<div style=\"height:5rem;overflow-y:auto;border:#ccc solid 1px;text-align:left;padding:0.5rem;resize: block;\">";

                errorMessageHTML += jsonResult.details;

                errorMessageHTML += "</div>";

            } else {

                errorMessageHTML += jsonResult.message;
            }

            $('#new-package-modal_upload-btn').attr('disabled', true);
            $('#' + elementReveal).find('.processing_screen').hide();
            // Show Error Message
            Swal.fire({
                title: window.translation.error,
                html: errorMessageHTML,
                icon: "error",
                closeOnConfirm: true
            });

            return;
        }
    });
}//End:packaging_manager_upload_package_action

function package_manage_copy_installation_token(installationToken) {

    navigator.clipboard.writeText(installationToken);
    Swal.fire({
        title: window.translation.success,
        text: "Installation token has been successfully copied to clipboard.",
        icon: "success",
        closeOnConfirm: true
    });

}//End:package_manage_copy_installation_token


function load_installed_packages_per_site(urlSite, elementReveal) {

    var packageManagerModalTable = $('#package-manager-modal__table1-tab2');//The table where the list of packages will be appended
    packageManagerModalTable.find('tbody').empty();//Remove all the content inside the table

    // Invoke the logic in PackagingManagerController.GetInstalledPackagesPerSite
    // to get the list of the Installed Packages for the current Site and insert 
    // the content in PackagingManagerModal.cshtml > Table#package-manager-modal__table1-tab2
    $.ajax({
        method: "POST",
        url: urlSite + "PackagingManager/GetInstalledPackagesPerSite",
        data: "",
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {

        var response = JSON.parse(data);
        var timezone = response.timezone;
        var installedPackages = JSON.parse(response.installedPackages);

        if (installedPackages === null || installedPackages === undefined) {
            $('#' + elementReveal).find('.processing_screen').hide();

            // Show Error Message
            Swal.fire({
                title: window.translation.error,
                text: response.message,
                icon: "error",
                closeOnConfirm: true
            });

            return;
        }

        if (installedPackages.length <= 0) {

            $('#' + elementReveal).find('.processing_screen').hide();
        }

        // Append the list of installedPackages for the current Site
        // inside PackagingManagerModal.cshtml > Table2
        var packagesCounter = 0;
        var packagesLength = installedPackages.length;
        installedPackages.forEach(function (item) {

            var package = JSON.parse(JSON.stringify(item.package));
            var version = JSON.parse(JSON.stringify(item.version));

            var installationDate = moment.tz(item.record.CreatedDate, timezone).format('MM/DD/YYYY hh:mm a');
            var releasedDate = moment.tz(item.version.CreatedDate, timezone).format('MM/DD/YYYY hh:mm a');
            var upgradeDate = moment.tz(item.record.LastModifiedByUser, timezone).format('MM/DD/YYYY hh:mm a');
            var configureLink = version.PostInstallLink != null && version.PostInstallLink.length > 0 ? version.PostInstallLink : '';
            var upgradeDateToShow = installationDate === upgradeDate ? '--' : upgradeDate;
            var SPINNER_IMG_TMP = '<img alt="Image for spinner" title="Installing... class="spinner" src="/img/default/spinner-green.svg" height="30" width="30" />';

            var packageTableRowRecord =
                '<tr>' +
                    '<td style="width: 20rem; text-align:center;">' +
                      (item.isInProgress 
                            ? SPINNER_IMG_TMP + '&nbsp;Installing...' 
                            :
                            '<a class="package-installed-unistall-link" ' +
                                ' data-element-reveal="unistall-package-prompt-modal" ' +
                                ' data-installed-package-id="' + item.package.ID + '">' +
                                    'Uninstall' +
                            '</a>' +
                            (configureLink.length > 0 ?
                            ' | ' +
                            '<a class="package-installed-configure-link" ' +
                                ' href="' + version.PostInstallLink + '" target="_blank">' +
                                    'Configure' +
                            '</a>' : '')
                        ) +
                    '</td> ' +
                    '<td style="width: 30rem; text-align:center;">' + package.Name + '</td>' +
                    '<td style="width: 15rem; text-align:center;">' + releasedDate + '</td>' +
                    '<td style="width: 20rem; text-align:center;">' + item.PublisherName + '</td>' +
                    '<td style="width: 15rem; text-align:center;">' + (item.isInProgress ? '' : installationDate ) + '</td>' +
                '</tr>';

            packageManagerModalTable.find('tbody').append(packageTableRowRecord);

            // Hide the processing_screen only after the list of packages has been fully loaded
            packagesCounter++;
            if (packagesCounter == packagesLength) {
                $('#' + elementReveal).find('.processing_screen').hide();
            }
        });

    });
}//End:load_installed_packages_per_site


function packaging_manager_unistall_package(urlSite, elementReveal, installedPackageId) {

    if (installedPackageId <= 0) { return; }

    $.ajax({
        method: "POST",
        url: urlSite + "PackagingManager/UnistallPackage",
        data: {
            installedPackageId: installedPackageId
        },
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {

        var jsonResult = JSON.parse(data);
        if (jsonResult.status == '200') {

            Swal.fire({
                title: window.translation.success,
                text: "Package was successfully unistalled.",
                icon: "success",
                closeOnConfirm: true
            });
            location.reload();//TODO: Review if it is ok to reload the entire site

        } else {

            // Show Error Message
            Swal.fire({
                title: window.translation.error,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });

            return;
        }

    });

}//End:packaging_manager_unistall_package

function packaging_manager_install_package_clear_show_error(hasErrors, isInitialize, errorMessage)
{
    var spanErrorValidation = $('span#install-package-modal_installationToken_helpText');
    var packageInstallInfoPanel = $('span#install-package-modal_panel-package-info');
    var installBtn = $('#install-package-modal_save-btn');
    var step1Panel = $('div#install-package-modal_step1');
    var step2Panel = $('div#install-package-modal_step2');
    var continueBtn = $('#install-package-modal_continue-btn');
    var isUpgradeInput = $('#install-package-modal_is-upgrade');
    var isUpgrade = isUpgradeInput.val() == 'true';
    var currentStepInput = $('#install-package-modal_step');
    var currentStep = currentStepInput.val();

    // STEP 2: Radio Inputs
    var modeRadioInput1 = $('#install-package-modal_package-upgrade-mode_1');
    var modeRadioInput2 = $('#install-package-modal_package-upgrade-mode_2');
    var replaceRadioInput1 = $('#install-package-modal_package-upgrade-replace_1');
    var replaceRadioInput2 = $('#install-package-modal_package-upgrade-replace_2');

    if (hasErrors) {

        let errorToShow = errorMessage != null && errorMessage !== ''
            ? errorMessage : 'Enter a valid Package Token';
        spanErrorValidation.html(errorToShow);
        spanErrorValidation.show();
        installBtn.attr('disabled', true);
        packageInstallInfoPanel.html('');
    }
    else
    {
        spanErrorValidation.html('');
        spanErrorValidation.hide();
        installBtn.attr('disabled', false);
        packageInstallInfoPanel.show();
    }

    if (isInitialize) {

        packageInstallInfoPanel.html('');
        packageInstallInfoPanel.hide();
        installBtn.attr('disabled', true);
        continueBtn.attr('disabled', true);
        currentStepInput.val('1');
        isUpgradeInput.val('false');
        step1Panel.hide();
        step2Panel.hide();
        modeRadioInput1.removeAttr('checked');
        modeRadioInput2.removeAttr('checked');
        replaceRadioInput1.removeAttr('checked');
        replaceRadioInput2.removeAttr('checked');

    }

    // Toggle components by Step

    if (currentStep == '1' && isUpgrade) {

        step1Panel.show();
        step2Panel.hide();
        installBtn.hide();
        continueBtn.show();
        continueBtn.attr('disabled', false);

    } else if (currentStep == '1') {

        step1Panel.show();
        step2Panel.hide();
        installBtn.show();
        continueBtn.hide();
        continueBtn.attr('disabled', true);

    } else if (currentStep == '2' && isUpgrade) {

        packageInstallInfoPanel.hide();
        modeRadioInput1.removeAttr('checked');
        modeRadioInput2.removeAttr('checked');
        replaceRadioInput1.removeAttr('checked');
        replaceRadioInput2.removeAttr('checked');
        step1Panel.hide();
        step2Panel.show();
        installBtn.show();
        continueBtn.hide();
        installBtn.attr('disabled', true);

    } else if (currentStep == '2') {

        modeRadioInput1.removeAttr('checked');
        modeRadioInput2.removeAttr('checked');
        replaceRadioInput1.removeAttr('checked');
        replaceRadioInput2.removeAttr('checked');
        step1Panel.show();
        step2Panel.hide();
        installBtn.show();
        continueBtn.hide();
    }

}//End:packaging_manager_install_package_clear_show_error

function packaging_manager_install_package_step_1(urlSite, elementReveal) {

    $('#' + elementReveal).foundation('open');
    var idInput = $('input#install-package-modal_Id');
    var versionInput = $('input#install-package-modal_version-Id');
    var tokenInput = $('input#install-package-modal_installationToken');
    var isUpgradeInput = $('#install-package-modal_is-upgrade');
    var currentStep = '1';

    // Clear out inputs when the modal is opened
    idInput.val('');
    versionInput.val('');
    tokenInput.val('');
    isUpgradeInput.val('false');
    packaging_manager_install_package_clear_show_error(false, true, '');

    // Capture when the token input changes its value and validate if the token
    // is a valid token to show Package details. Otherwise, show error.
    $('input#install-package-modal_installationToken').change(function () {

        var installationToken = $(this).val();
        $('input#install-package-modal_Id').val('');
        $('input#install-package-modal_version-Id').val('');
        $('span#install-package-modal_panel-package-info').html('');
        isUpgradeInput.val('false');

        if (installationToken && installationToken.length > 10 && installationToken.includes('v=') && installationToken.includes('&k=')) {

            $.ajax({
                method: "POST",
                url: urlSite + "PackagingManager/GetPackageByInstallationToken",
                data: {
                    installationToken: installationToken
                },
                beforeSend: function () {
                    //$('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {

                var jsonResult = JSON.parse(data);

                if (jsonResult.status == '200' && jsonResult.packageToInstall) {

                    var packageToInstall = JSON.parse(jsonResult.packageToInstall);
                    var timeZone = jsonResult.timeZone;

                    // Validate that publisher can not be install one of his owns Packages
                    if (packageToInstall.currentSiteIsPublisher) {

                        // Show Error Message
                        Swal.fire({
                            title: "This Package can't be installed",
                            text: "The Package you're trying to install has the same publisher as the current Public Site.",
                            icon: "error",
                            closeOnConfirm: true
                        });
                        return;
                    }

                    // If package is already in progress for being installed
                    if (packageToInstall.isInProgress) {

                        // Show Error Message
                        Swal.fire({
                            title: "This Package can't be installed",
                            text: "There's already an installation in progress for this package.",
                            icon: "error",
                            closeOnConfirm: true
                        });
                        return;
                    }

                    isUpgradeInput.val(packageToInstall.isUpgrade ? 'true' : 'false');
                    packaging_manager_install_package_clear_show_error(false, false, '');

                    $('input#install-package-modal_Id').val(packageToInstall.package.ID);
                    $('input#install-package-modal_version-Id').val(packageToInstall.version.ID);

                    var packageLastUpdate = moment.tz(packageToInstall.version.CreatedDate, timeZone).format('MM/DD/YYYY hh:mm a');
                    var packageInfoHtml =
                        '<fieldset class="new-package-details-section" style="border: 1px solid #ececec; padding: 0.5rem; margin-top: 1rem;">' +
                        '<legend id="install-package-modal_package-details-panel">Package Details</legend>' +
                        '<div class="small-12 columns">' +
                            '<div class="small-12 medium-2 columns">' +
                                '<label class="text-right middle">' +
                                    'Package Name:' +
                                '</label>' +
                            '</div>' +
                            '<div class="small-12 medium-4 columns">' +
                                '<label class="text-left middle">' + packageToInstall.package.Name + '</label>' +
                            '</div>' +
                            '<div class="small-12 medium-2 columns">' +
                                '<label class="text-right middle">' +
                                    'Latest Release:' +
                                '</label>' +
                            '</div>' +
                            '<div class="small-12 medium-4 columns">' +
                                '<label class="text-left middle">' + packageLastUpdate + '</label>' +
                            '</div>' +
                        '</div>' +
                        '<div class="small-12 columns">' +
                            '<div class="small-12 medium-2 columns">' +
                                '<label class="text-right middle">' +
                                    'Package Description:' +
                                '</label>' +
                            '</div>' +
                            '<div class="small-12 medium-4 columns">' +
                                '<label class="text-left middle" style="max-height:10rem;overflow-y:auto;">' + 
                                    packageToInstall.package.Description + 
                                '</label>' +
                            '</div>' +
                            '<div class="small-12 medium-2 columns">' +
                                '<label class="text-right middle">' +
                                    'Package Publisher:' +
                                '</label>' +
                            '</div>' +
                            '<div class="small-12 medium-4 columns">' +
                             '<label class="text-left middle">' + packageToInstall.PublisherName + '</label>' +
                            '</div>' +
                        '</div>' +
                        '[PACKAGE_ITEMS_TO_ISNTALL]' +
                        '</fieldset>';

                    let packageItemsToInstallHTML = '';
                    if (jsonResult.itemsToInstall !== null && jsonResult.itemsToInstall !== undefined && jsonResult.countItemsToInstall > 0) {
                        var itemsToInstall = JSON.parse(jsonResult.itemsToInstall);
                        packageItemsToInstallHTML += '<p><b>The following blocks have related regions and you can try to assign to a region with similar name</b></p>';

                        //table with the items to add
                        packageItemsToInstallHTML += '<table id="package-manager-items-to-install" class="datatable-custom-backend scroll-y bin five" style="margin: 1rem; max-width: 97%">' +
                            '<thead>' +
                            '<tr>' +
                            '<td>Item Name</td><td>Item Type</td><td>Region Source</td><td><input type="checkbox" class="install-select-all-region" />Try to add to Region?</td>' +
                            '</tr>' +
                            '</thead>' +
                            '<tbody>';

                        itemsToInstall.forEach(function (it) {
                            var rowItem = '<tr>' +
                                '<td>' + it.Name + '</td><td>' + it.Type + '</td><td>' + it.RegionInformation + '</td><td>';
                            if (it.IsThereARegion === true) {
                                rowItem += '<input class="select-block-region-add" data-block-id="' + it.BlockId + '" type="checkbox" name="add-region-' + it.ID + '"/>';
                            }
                                
                            rowItem += '</td></tr>';

                            packageItemsToInstallHTML += rowItem;

                        });
                        packageItemsToInstallHTML += '</tbody>' +
                            '</table>';




                        let skipSalesforceComponentsHtml = `
                            <!-- .::::: SKIP SALESFORCE Components from Installation :::. -->
                            <div class="small-12 columns" id="div-install-package-modal_installationSkipSf" style="font-weight: bold;margin-top: 1rem;">
                                <input type="checkbox" id="install-package-modal_installationSkipSf"/>
                                Skip Salesforce Components
                            </div>
                            `;

                        packageItemsToInstallHTML += skipSalesforceComponentsHtml;


                    }

                    packageInfoHtml = packageInfoHtml.replace('[PACKAGE_ITEMS_TO_ISNTALL]', packageItemsToInstallHTML);
                    $('span#install-package-modal_panel-package-info').html(packageInfoHtml);
                    $('#install-package-modal_save-btn').attr('disabled', false);

                    packaging_manager_install_select_all_regions();
                }
                else
                {
                    packaging_manager_install_package_clear_show_error(true, true, jsonResult.message);
                }
            });

        } else {

            packaging_manager_install_package_clear_show_error(true, true, '');
        }
    });

}//End:packaging_manager_install_package_step_1


function packaging_manager_install_select_all_regions() {
    if ($('#install-package-modal').find('input[type="checkbox"].install-select-all-region').length > 0) {
        $('#install-package-modal').find('input[type="checkbox"].install-select-all-region').on('click', function () {
            let isActive = $(this).is(':checked');
            
            if (isActive === true) {
                $('#install-package-modal').find('input[type="checkbox"].select-block-region-add').prop('checked', true);
            }
            else {
                $('#install-package-modal').find('input[type="checkbox"].select-block-region-add').prop('checked', false);
            }
        });

    }
}

function packaging_manager_install_package_step_2(urlSite, elementReveal) {

    var versionId = $('input#install-package-modal_version-Id').val();
    var tokenId = $('input#install-package-modal_installationToken').val();
    var packageId = $('input#install-package-modal_Id').val();

    var isValidStep2 = versionId && versionId.length > 0
        && tokenId && tokenId.length > 0
        && packageId && packageId.length > 0;

    if (isValidStep2) {

        packaging_manager_install_package_clear_show_error(false, false, '');
    }

}//End:packaging_manager_install_package_step_2

function packaging_manager_install_package_action(urlSite, elementReveal) {

    var isUpgrade = $('#install-package-modal_is-upgrade').val() == 'true';
    var installBtn = $('#install-package-modal_save-btn');
    var cancelBtn = $('#install-package-modal_cancel-btn');
    var currentStep = $('#install-package-modal_step').val();

    packaging_manager_install_package_clear_show_error(false, false, '');


    // STEP 2: Radio Inputs
    var modeRadioInput1 = $('#install-package-modal_package-upgrade-mode_1');
    var modeRadioInput2 = $('#install-package-modal_package-upgrade-mode_2');
    var replaceRadioInput1 = $('#install-package-modal_package-upgrade-replace_1');
    var replaceRadioInput2 = $('#install-package-modal_package-upgrade-replace_2');

    var confirmationTxt = 'Do you want to continue with the Package installation?';
    if (isUpgrade) {

        var upgradeModeSetting = '';
        $('input:radio[name="package_upgrade_mode"]:checked').each(function () {
            upgradeModeSetting = $(this).parent().find('label').text();
        });

        var replaceSetting = '';
        $('input:radio[name="package_upgrade_replace"]:checked').each(function () {
           replaceSetting = $(this).parent().find('label').text();
        });

        confirmationTxt = 'We are just making sure that you are confortable with the Upgrade Settings selected: ' +
            '<ul style="text-align: left;">' +
            (upgradeModeSetting != '' ? '<li>' + upgradeModeSetting + '</li>' : '') +
            (replaceSetting != '' ? '<li>' + replaceSetting + '</li>' : '') +
            '</ul>';
    }

    Swal.fire({
        title: 'Are you sure?',
        html: confirmationTxt,
        icon: 'warning',
        showCancelButton: true,
        confirmButtonColor: '#ff0000',
        confirmButtonText: window.translation.true_text,
        cancelButtonText: window.translation.false_text
    }).then((result) => {

        if (result.isConfirmed) {

            installBtn.attr('disabled', true);
            cancelBtn.attr('disabled', true);
            packaging_manager_install_package_action_call(urlSite, 'install-package-modal');
        }

    });

}//End:packaging_manager_install_package_action


function packaging_manager_install_package_action_call(urlSite, elementReveal) {

    $('#' + elementReveal).find('.processing_screen').show();

    var packageId = $('input#install-package-modal_Id').val();
    var versionId = $('input#install-package-modal_version-Id').val();
    var package_upgrade_mode = $('input:radio[name="package_upgrade_mode"]:checked').val();
    var package_upgrade_replace = $('input:radio[name="package_upgrade_replace"]:checked').val();
    var skipSalesforceComponents = $('input#install-package-modal_installationSkipSf').prop('checked');
    var itemToAddRegion = [];

    if ($('#' + elementReveal).find('input.select-block-region-add').length > 0) {
        $('#' + elementReveal).find('input.select-block-region-add').each(function () {
            var blockId = $(this).attr('data-block-id');
            var selected = $(this).is(':checked');

            var itemFind = { blockId: blockId, selected: selected };
            itemToAddRegion.push(itemFind);
        });
    }

    var itemToAddRegionCoverted = JSON.stringify(itemToAddRegion);

    $.ajax({
        method: "POST",
        url: urlSite + "PackagingManager/InstallationPackageAction",
        data: {
            packageId: packageId,
            versionId: versionId,
            removeMode: package_upgrade_mode,
            updateMode: package_upgrade_replace,
            itemToAddRegion: itemToAddRegionCoverted,
            skipSalesforceComponents: skipSalesforceComponents
        },
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();
        }
    }).done(function (data) {

        var jsonResult = JSON.parse(data);

        $('#' + elementReveal).find('.processing_screen').hide();
        if (jsonResult.status != '200') {

            var deploymentError = packaging_manager_get_deployment_monitor_message(jsonResult.message);
            // Show Error Message
            Swal.fire({
                title: "Package installation failed",
                html: "Unexpected error occurred. please try again later or contact your system administrator." +
                    "<br /><br /><b>Error Details: </b><div style=\"height:5rem;overflow-y:auto;border:#ccc solid 1px;text-align:left;padding:0.5rem;resize: block;\">" + jsonResult.message + "</div>",
                icon: "error",
                closeOnConfirm: true
            });
            $('#' + elementReveal).foundation('close');
            return;
        }

        Swal.fire({
            title: window.translation.success,
            text: "Package was successfully installed.",
            icon: "success",
            closeOnConfirm: true
        });
        location.reload();//TODO: Review if it is ok to reload the entire site
        $('#' + elementReveal).foundation('close');
    });


}//End:packaging_manager_install_package_action_call

function packaging_manager_get_deployment_monitor_message(message) {

    var result = message;
    try {

        var finalMessage = message.split(":").pop();
        finalMessage = finalMessage.replaceAll('{').replaceAll('}');
        result = finalMessage;

    } catch (e) {
        console.log(e);
    }

    return result;
}//End:packaging_manager_get_deployment_monitor_message

function packaging_manager_install_package_validate_installation_settings() {

    var radio1 = $('input:radio[name="package_upgrade_replace"]');
    var radio2 = $('input:radio[name="package_upgrade_mode"]');
    var installBtn = $('#install-package-modal_save-btn');

    if (radio1.is(':checked') && radio2.is(':checked')) {
        installBtn.attr('disabled', false);
    } else {
        installBtn.attr('disabled', true);
    }

 }
    //End:packaging_manager_install_package_validate_installation_settings

// ------------------------------------------------------------------------
// ------------ END: PACKAGING MANAGER METHODS --------------------------
// ------------------------------------------------------------------------
;
/*
	Custom events and methods to implement in ARS workflows
*/

function open_ars_login(linkSource, urlSite) {
    reset_others();
    localStorage.removeItem("json-conditions-ars-login");
    display_ars_login(linkSource, urlSite);
    $('#ars-vol-reg-workflow').foundation('open');
    $('#ars-vol-reg-workflow').foundation();
}


function display_ars_login(linkSource, urlSite) {
    var IS_LLAMAPI = window.is_llamapi;
    var from = linkSource.data('from');
    $('p.log-in-note').show();
    $('.arrow_down').hide();
    var prefixId = "#step-log-in";
    $("h3.basic-login-title").show();
    $("a.log-in-workflow").show();
    $("#step-log-in").show();

    var sourceInvoked = linkSource.attr('source-invoked');
    var hideGallery = false;
    var typeSource = 'cms';
    $(".only-for-ars-login").removeClass('is-hidden');

    $("#vol-workflow-form").find('input[name="workflow-type"]').val(4);
    var type = 4;

    $("#vol-workflow-form").find("#workflow-is-default").show();
    $("#vol-workflow-form").find('#workflow-is-default').removeClass('hide');
    $("#vol-workflow-form").find('#workflow-is-default').removeClass('hidden');
    $("#vol-workflow-form").find('#workflow-is-default').removeClass('is-hidden');

    if (sourceInvoked !== null && sourceInvoked !== undefined && sourceInvoked == "gallery") {
        hideGallery = true;
        typeSource = 'gallery';
        $("#vol-workflow-form").find("#workflow-is-default").hide();
    }
    $("#vol-workflow-form").find('input[name="source-invoked"]').val(typeSource);

    $("#vol-workflow-form").attr('data-from', from);
    var workflowId = linkSource.data('workflow-id');
    $('#vol-workflow-form').find('select[name="ars-login-type"]').val(0);
    if (workflowId == 0 || workflowId == null || workflowId == '') {
        $(prefixId + " .step-rules").find('.rule').not('.default').remove();

        var pageName = "Volunteer Account Overview or Opp detail Page";
        var classDF = "rule-name-section";
        if (IS_LLAMAPI) {
            pageName = "Account Overview";
            classDF = "";
        }

        var rowDefault = '<div class="row rule default" data-page-id="0" data-rule-id="0" data-is-default="true">'
            + '<div class="large-5 medium-5 small-12 columns">'
            + '<div class="row"><i>' + translation.default_rule + '</i></div>'
            + '</div>'
            + '<div class="large-5 medium-5 small-12 columns">'
            + '<div class="row ' + classDF + '"><strong>' + translation.go_to + ':</strong> <i>' + pageName + '</i></div>'
            + '</div>'
            + '<div class="large-2 medium-2 small-12 columns">'
            + '</div>'
            + '</div>';
        $(prefixId + " .step-rules").empty();
        $(prefixId + " .step-rules").append(rowDefault);
    }
    else {
        $(prefixId + " .step-rules").empty();
    }



    $.ajax({
        method: "POST",
        url: urlSite + "ARS/ExistWorkflow",
        data: { type: type, id: workflowId, typeSource: typeSource },
        beforeSend: function () {
            $('#ars-vol-reg-workflow').find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        //Clean container of success pages
        $('#vol-workflow-form .container-pages.custom-pages ul').empty();
        $('#vol-workflow-form .container-pages.custom-pages .legend-text span').show();
        if (jsonResult.status === 200) {

            
            $('#ars-vol-reg-workflow').find("input[name=workflow-id]").val(jsonResult.workflowId);

            $('#vol-workflow-form').find('#current-active-workflow').val(jsonResult.currentActive);

            $('#vol-workflow-form').find('#ignore-for-mobile-app').prop('checked', jsonResult.ignoreInMobileApp);

            if (workflowId !== 0)
                $('#ars-vol-reg-workflow').find('select[name="ars-login-type"]').val(jsonResult.loginType);
            else
                $('#ars-vol-reg-workflow').find('select[name="ars-login-type"]').val(0);


            $('#vol-workflow-form').find('#current-active-workflow-id').val(jsonResult.currentActiveID);

            $('#vol-workflow-form').find('#select-as-default-workflow').on('mousedown', function () {
                var message = "";
                var self = $(this);
                if (self.is(':checked')) {
                    if (jsonResult.currentActive == '*') {
                        message = "If this Workflow is set as Inactive, the regular system registration process would be used, Confirm?";
                    }

                    if (message !== "") {
                        Swal.fire({
                            title: window.translation.are_you_sure,
                            text: message,
                            icon: "warning",
                            showCancelButton: true,
                            confirmButtonColor: "#ff0000",
                            confirmButtonText: window.translation.ok,
                            cancelButtonText: window.translation.cancel,
                            closeOnConfirm: true


                        }).then(function (result) {
                            if (result.isConfirmed) {
                                self.prop('checked', false);
                                self.trigger("change");
                            } else {
                                self.prop('checked', 'checked');
                                self.trigger("change");
                            }
                        });

                    }


                } else {

                    if (jsonResult.currentActive == 'none') {
                        message = "Activating this Workflow, would modify the regular system registration process, Confirm?";
                    } else if (jsonResult.currentActive != '*' && jsonResult.currentActive != 'none') {
                        message = "Activating this Workflow, would deactive the workflow " + jsonResult.currentActive + ", Confirm?";
                    }
                    if (message !== "") {

                        Swal.fire({
                            title: window.translation.are_you_sure,
                            text: message,
                            icon: "warning",
                            showCancelButton: true,
                            confirmButtonColor: "#ff0000",
                            confirmButtonText: window.translation.ok,
                            cancelButtonText: window.translation.cancel,
                            closeOnConfirm: true
                        }).then(function (result) {
                            if (result.isConfirmed) {
                                self.prop('checked', 'checked');
                                self.trigger("change");
                            } else {
                                self.prop('checked', false);
                                self.trigger("change");

                            }
                        });

                    }

                }

            });


            if (jsonResult.workflowId == 0 || jsonResult.workflowId == null || jsonResult.workflowId == '') {
                $(prefixId + " .step-rules").find('.rule').not('.default').remove();
            }
            else {
                $(prefixId + " .step-rules").empty();
            }

            if (jsonResult.message == 'Yes') {
                $("#blocks-ars-wysiwyg-conf").foundation();
                $('#ars-vol-reg-workflow').find("input[name=workflow-label]").val(jsonResult.workflowName);

                if (jsonResult.isDefault == '1') {
                    $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', 'checked');
                    $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("1");
                } else {
                    $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', false);
                    $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("0");
                }


                if (jsonResult.pages != "" || jsonResult.pages != null) {
                    var DataJson = [];

                    jsonResult.pages.forEach(function (item) {
                        if (item.isSuccessPage) {
                            $('#vol-workflow-form .container-pages.custom-pages .legend-text span').hide();
                            ars_display_workflow_success_pages(item.pageId, item.pageName, jsonResult.workflowType, item.subSubsiteName, item.multipleSubsite, item.friendlyUrl);
                        }
                        else {
                            ars_display_workflow_pages(item.pageId, item.pageName, jsonResult.workflowType, item.subSubsiteName, item.multipleSubsite, item.friendlyUrl);
                        }
                        DataJson.push(item);
                    });

                    //localStorage.setItem("vol-workflow-pages", JSON.stringify(DataJson));
                    sessionStorage.setItem("vol-workflow-pages", JSON.stringify(DataJson));

                    DataJson = [];
                    if (jsonResult.rules != "" || jsonResult.rules != null) {
                        jsonResult.rules.forEach(function (item) {
                            if (!item.deleted) {
                                ars_display_branch_rules(item.pageId, item.type, item.ruleId, item.conditions, item.redirectTo, item.condCount, item.isDefault, false,item.RedirectToUrl);

                                ars_display_hide_see_all(item.pageId, item.type);
                            }
                            /* Line Commented by MR 4/11/2017 */
                            //ars_hide_show_branch_button(item.ruleId, item.pageId, null, null, null);

                            var jsonRules = new Object();
                            jsonRules.ruleId = item.ruleId;
                            DataJson.push(jsonRules);
                        });

                        //localStorage.setItem("vol-workflow-rules", JSON.stringify(DataJson));
                        sessionStorage.setItem("vol-workflow-rules", JSON.stringify(DataJson));
                    }
                }
            }

        }
        else {
            console.log('Error in ExistsWorkflow', jsonResult);
        }

        if (from === 'vol-reg') {
            $('#ars-vol-reg-workflow').find("input[name=workflow-label]").val(jsonResult.workflowName);
            //$('#ars-vol-reg-workflow').find("input[name=workflow-label]").prop('disabled', true);
            if (jsonResult.isDefault == '1') {
                $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', 'checked');
                $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("1");
            } else {
                $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', false);
                $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("0");
            }
            $('#ars-vol-reg-workflow').find("#workflow-is-default").removeClass('is-hidden');
            $('#workflow-title').removeClass('is-hidden');

            $('#step-reg-form').removeClass('is-hidden');
            $('#step-sign-up').addClass('is-hidden');
            $('#step-partner').addClass('is-hidden');

            $('a[data-modal-from="create-page-vol"]').removeClass('is-hidden');
            $('a[data-modal-from="create-page-signup"]').addClass('is-hidden');
            $('a[data-modal-from="create-page-partner"]').addClass('is-hidden');

            // Show / hide config success button page.
            $(".volunteer_registration_config").removeClass('is-hidden');
            $(".signup_registration_config").addClass('is-hidden');

            //Hide section of edit success pages
            $('#vol-workflow-form .container-pages').addClass('hide-custom');
        }
        else if (from === 'signup') {
            $('#ars-vol-reg-workflow').find("input[name=workflow-label]").val(jsonResult.workflowName);
            //$('#ars-vol-reg-workflow').find("input[name=workflow-label]").prop('disabled', false);
            $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("0");

            $('#ars-vol-reg-workflow').find("#workflow-is-default").addClass('is-hidden');;
            $('#workflow-title').removeClass('is-hidden');

            $('#step-reg-form').addClass('is-hidden');
            $('#step-sign-up').removeClass('is-hidden');
            $('#step-partner').addClass('is-hidden');

            $('a[data-modal-from="create-page-vol"]').addClass('is-hidden');
            $('a[data-modal-from="create-page-signup"]').removeClass('is-hidden');
            $('a[data-modal-from="create-page-partner"]').addClass('is-hidden');

            // Show / hide config success button page.
            $(".volunteer_registration_config").addClass('is-hidden');
            $(".signup_registration_config").removeClass('is-hidden');

            //Show section of edit success pages
            $('#vol-workflow-form .container-pages').removeClass('hide-custom');
            $('#vol-workflow-form .container-pages .help-text').removeClass('is-hidden');
            $('#vol-workflow-form li.signup-page').removeClass('is-hidden');
            $('#vol-workflow-form li.express-interest-page').removeClass('is-hidden');
            $('#vol-workflow-form li.partner-registration').addClass('is-hidden');
            $('#vol-workflow-form li.vol-registration-page').addClass('is-hidden');

            //Consult and include links of Express Interest and Sign up Success pages
            ars_add_links_success_pages();
        } else if (from === 'partner-reg') {
            $('#ars-vol-reg-workflow').find("input[name=workflow-label]").val(jsonResult.workflowName);
            //$('#ars-vol-reg-workflow').find("input[name=workflow-label]").prop('disabled', true);
            if (jsonResult.isDefault == '1') {
                $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', 'checked');
                $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("1");
            } else {
                $('#ars-vol-reg-workflow').find('input[name="select-as-default-workflow"]').prop('checked', false);
                $('#ars-vol-reg-workflow').find('input[name="original-default-workflow"]').val("0");
            }
            $('#ars-vol-reg-workflow').find("#workflow-is-default").removeClass('is-hidden');;
            $('#workflow-title').removeClass('is-hidden');

            $('#step-reg-form').addClass('is-hidden');
            $('#step-sign-up').addClass('is-hidden');
            $('#step-partner').removeClass('is-hidden');

            $('a[data-modal-from="create-page-vol"]').addClass('is-hidden');
            $('a[data-modal-from="create-page-signup"]').addClass('is-hidden');
            $('a[data-modal-from="create-page-partner"]').removeClass('is-hidden');

            //Show section of edit success pages
            $('#vol-workflow-form .container-pages').removeClass('hide-custom');
            $('#vol-workflow-form .container-pages .help-text').addClass('is-hidden');
            $('#vol-workflow-form li.signup-page').addClass('is-hidden');
            $('#vol-workflow-form li.express-interest-page').addClass('is-hidden');
            $('#vol-workflow-form li.partner-registration').removeClass('is-hidden');
            $('#vol-workflow-form li.other-signup-page').addClass('is-hidden');
            $('#vol-workflow-form li.vol-registration-page').addClass('is-hidden');
        }

        ars_add_arrows_after_step();
        if (hideGallery == true) {
            if ($("#vol-workflow-form div.custom-steps .step-page").length > 0) {
                $("#vol-workflow-form").find(".settings-builder-form-clone").hide();
            }

        }


        $('#vol-workflow-form').find('select[name="ars-login-type"]').on('change', function () {
            var value = $(this).val();
            var title = '';
            if (value === '0') {
                title = 'Volunteer Account Overview or Opp detail Page';
            } else if (value === '1') {
                title = 'Volunteer Account Overview';
            }
            $('#vol-workflow-form').find('.rule-name-section i').text(title);
        });

        $('#ars-vol-reg-workflow').find('.processing_screen').hide();
    });




}


function reset_others() {
    $('#vol-workflow-form').find('select[name="ars-login-type"]').val(0);
    //localStorage.removeItem("vol-workflow-pages");
    //localStorage.setItem("vol-workflow-pages", "");
    sessionStorage.removeItem("vol-workflow-pages");
    sessionStorage.setItem("vol-workflow-pages", "");
    //localStorage.removeItem("vol-workflow-rules");
    sessionStorage.removeItem("vol-workflow-rules");
    //localStorage.setItem("vol-workflow-rules", "");
    sessionStorage.setItem("vol-workflow-rules", "");
    $('h3.vol-reg-title').addClass('is-hidden');
    $('h3.signup-title').addClass('is-hidden');
    $('h3.partner-title').addClass('is-hidden');
    $("#vol-workflow-form .custom-steps").empty();
    $("#vol-workflow-form").find(".settings-builder-form-clone").hide();
    $(".volunteer_registration_config").addClass('is-hidden');
    $(".signup_registration_config").addClass('is-hidden');
    $("#step-reg-form").hide();
    $("#step-sign-up").hide();
    $("#step-partner").hide();
    $("#success-pages").hide();
    $("a.vol-reg-workflow").hide();
    $("a.signup-workflow").hide();
    $("a.partner-reg-workflow").hide();
    $(".external-url").hide();
    
}

function reset_login_ars() {
    $('#vol-workflow-form').find('select[name="ars-login-type"]').val(0);
    $("h3.basic-login-title").hide();
    $("a.log-in-workflow").hide();
    $("#step-log-in").hide();
    $('p.log-in-note').hide();

    //Other
    $("#step-reg-form").show();
    $("#step-sign-up").show();
    $("#step-partner").show();
    $("#success-pages").show();
    $("a.vol-reg-workflow").show();
    $("a.signup-workflow").show();
    $("a.partner-reg-workflow").show();
    $(".allow-cond-switch").show();
    $(".external-url").hide();
    $(".only-for-ars-login").addClass('is-hidden');

}

function validate_go_to_select(type, elementReveal) {
    $('#' + elementReveal).find('.external-url input#gotourl').attr('required', 'false');
    if (type != '4' && type != '0' && type != '1')
        return;

    $('#' + elementReveal).find('.external-url input#gotourl').attr('required', 'true');

    $('#' + elementReveal + ' select[name=goto].for-login').on('change', function () {
        var value = $(this).val();
        if (value == '-1') {
            $('#' + elementReveal).find('.external-url').show();
            $('#' + elementReveal).find('.external-url input#gotourl').removeClass('valid');
        } else {
            $('#' + elementReveal).find('.external-url').hide();
        }
    });
}

;
$(document).ready(function () {

    if (window.MomentDateTimeFormat !== undefined && window.MomentDateTimeFormat !== null) {

        if ($.fn.dataTable.moment == undefined) {
            $.getScript("/js/vendors/datetime-moment/datetime-moment.min.js", function () {
                $.fn.dataTable.moment(window.MomentDateTimeFormat);
            });
        }
        else
            $.fn.dataTable.moment(window.MomentDateTimeFormat);
    } 
    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();

    validateStorageEnabled();

    var isSelectCol = false;

    verify_login_modal();

    process_login_request();

    //personal information page
    personal_information_state_logic();

    init_basic_search_filters_and_options();

    //change participants status
    set_participants();

    fix_fieldset_empty_volunteer_registration();

    fix_fieldset_empty_organization_registration();

    validate_phone_number_personal_information();

    validate_team_questions();

    edit_volunteer_opportunity_page();

    skillPageSlider();

    background_check_page();

    volunteer_account_overview_page();

    volunteer_opportunity_detail_page();

    validate_impersonate();

    wait_translation_resource_volunteer_portal();

    volunteer_personal_information_date();

    validate_format_date_pi();

    //submit button update skill
    submit_update_skill();

    clear_session_storage();

    verify_redirect_teamsignup_prerequisites_questions();

    //modal login
    post_process_login_modal();

    //Add team members
    add_team_member_door();

    validate_auth_external();
});

function wait_translation_resource_volunteer_portal() {
    var timer = setInterval(function () {
        if (window.translation != null) {
            clearInterval(timer);
            after_translation_resource_load_volunteer_portal_functions();
        }
    }, 100);
}

function after_translation_resource_load_volunteer_portal_functions() {
    self_reported_hours_page();
        var languageText = {
        "lengthMenu": window.translation.datatable_length,
        "zeroRecords": window.translation.datatable_zero_records,
        "loadingRecords": window.translation.sLoadingRecords,
        "info": window.translation.datatable_info,
        "infoEmpty": window.translation.datatable_info_empty,
        "paginate": {
            "first": window.translation.datatable_first,
            "last": window.translation.datatable_last,
            "next": window.translation.datatable_next,
            "previous": window.translation.datatable_previous
        },
        "processing": "<span>" + window.translation.please_wait + "</span><img src='/img/default/spinner.svg' alt='loading'/>"
    };
    include_datatable_custom_sort_volunteer_portal();
    set_datatable_for_history_opp(languageText);
    set_datatable_for_self_reported_hours(languageText);
    set_datatable_for_upcoming_opp(languageText);
    set_datatable_for_referal_history(languageText);
    sendDataServiceForMember();
    create_new_team_page();
    add_redirect_on_additional_fields();
    mixTeamPage();
    waitingTeam();
    //init_settings_for_corporate_partners_pages();
    handle_multi_request();
    event_selection_organization('li.partner-switcher');
    staff_select_organization();
    admin_select_organization();
    select_org_to_manage();
}


// BEGIN POCJJ
function handle_multi_request() {    

    if ($('body.page-multi-logout').length > 0) {

        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);
        var token = $('.mlo-specialpage input[name="tokenML"]').val();
        var urlToSent = urlSite + "/process-multilogout-request";
        $.ajax({
            type: "POST",
            url: urlToSent,
            data: { tokenDetail: token },
            beforeSend: function () {
                $('.processing_screen').show();
            },
            success: function (data) {
                data = JSON.parse(data);
                if (data.code === "200" || data.code === 200) {
                    window.location.href = data.token;
                } else {
                    window.location.href = urlSite;
                }
            },
            complete: function (jqXHR, textStatus) {
                $('.processing_screen').hide();
            }
        });
    }
}
// END POCJJ

function fix_fieldset_empty_volunteer_registration() {
    //Fix to hide fieldset when not exist input, select inside of fieldset
    $('#volunteer-register-form fieldset.fieldset-step').each(function () {
        var lenghtInput = $(this).find('input').length;
        var lengthSelect = $(this).find('select').length;
        var lengthTextarea = $(this).find('textarea').length;

        if (lenghtInput === 0 && lengthSelect === 0 && lengthTextarea === 0) {
            if ($(this).parents('.fieldset-group').length > 0) {
                $(this).parents('.columns.reduced-fieldset').remove();

                //Fix the other fieldset to addapt to screen
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset').wrap('<div class="small-12 columns"></div>');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset').removeClass('medium-6');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset').addClass('medium-12');

                //Fix the fieldset button close
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('space-right');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('fixed-position');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').wrap('<div class="small-2 medium-6 text-right columns"></div>');

                //Fix to the title of fieldset
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').removeClass('medium-9');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').addClass('medium-6');
            }
            else {
                $(this).remove();
            }
        }
    });

}

function fix_fieldset_empty_organization_registration() {
    //Fix to hide fieldset when not exist input, select inside of fieldset
    $('#organization-register-form fieldset.fieldset-step').each(function () {
        var lenghtInput = $(this).find('input').length;
        var lengthSelect = $(this).find('select').length;
        var lengthTextarea = $(this).find('textarea').length;

        if (lenghtInput === 0 && lengthSelect === 0 && lengthTextarea === 0) {
            if ($(this).parents('.fieldset-group').length > 0) {
                $(this).parents('.columns.reduced-fieldset').remove();

                //Fix the other fieldset to addapt to screen
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset').wrap('<div class="small-12 columns"></div>');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset').removeClass('medium-6');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset').addClass('medium-12');

                //Fix the fieldset button close
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('space-right');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').removeClass('fixed-position');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title button').wrap('<div class="small-2 medium-6 text-right columns"></div>');

                //Fix to the title of fieldset
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').removeClass('medium-9');
                $('#volunteer-register-form .fieldset-group .small-12.columns.reduced-fieldset .fieldset-title .small-10.text-left').addClass('medium-6');
            }
            else {
                $(this).remove();
            }
        }
    });

}

function custom_alert(type, title, message, confirmationType) {
    if (!confirmationType || confirmationType =='popup') {
        if (type === 'success')
            Swal.fire({ 
                title: title, 
                html: message, 
                icon: "success",
                didOpen: () => {
                    $('.swal2-popup .swal2-icon-show').attr('tabindex', '0').focus();
                    $('.swal2-popup .swal2-title').attr('tabindex', '0');
                    $('.swal2-popup .swal2-html-container').attr('tabindex', '0');
                }
            });                  
        if (type === 'error')
            Swal.fire({ title: title, html: message, icon: "error" });
        if (type === 'warning')
            Swal.fire({ title: title, html: message, icon: "warning" });
    }
    else if (confirmationType == 'autoclose'){
        if (type === 'success')
            $.growl.notice({ title: title, message: message, duration: 10000, style: "notice" });
        if (type === 'error')
            $.growl.notice({ title: title, message: message, duration: 10000, style: "error" });
        if (type === 'warning')
            $.growl.notice({ title: title, message: message, duration: 10000, style: "warning" });
    }

}
    
function custom_alert_redirect(type, title, message, url) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    var options = {
        title: title,
        icon: "warning",
        showCancelButton: false,
        confirmButtonClass: 'btn-danger',
        closeOnConfirm: true,
        showLoaderOnConfirm: false,
        html: message,

    };


    Swal.fire(options).then(function (result) {
        if (result.isConfirmed && url !== '') {
            window.location = urlSite + url;
        }
    });

}

function process_login_request() {

    if ($('.login-block a.login_button').length > 0) {
        $('#login-modal').attr('tabindex', '0');
        $(document).on('open.zf.reveal', '[data-reveal]', function () {
            var idTag = $(this).attr('id');
            if (idTag === 'login-modal') {
                $('#login-modal').attr('tabindex', '0');
                $('#login-modal').focus();
            }
        });



        var color = $('.login-block a.login_button').attr('data-color-assigned');
        if (color !== null && color !== undefined && color !== '') {
            if ($('.login-block a.login_button.login-style-button').length > 0) {
                //$('.login-block a.login_button.login-style-button').css('background-color', color);
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button.login-style-button', 'background-color: ' + color + ' !important;');
            } else if ($('.login-block a.login_button.login-style-link-icon').length > 0) {
                //$('.login-block a.login_button.login-style-link-icon').css('color', color);
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button.login-style-link-icon', 'color: ' + color + ' !important;');
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button.login-style-link-icon:before', 'color: ' + color + ' !important;');
            }
            else if ($('.login-block a.login_button').length > 0) {
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button', 'color: ' + color + ' !important;');
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button:before', 'color: ' + color + ' !important;');

            }

            
        }
        var colorhover = $('.login-block a.login_button').attr('data-hover-color-assigned');
        if (colorhover !== null && colorhover !== undefined && colorhover !== '') {
            if ($('.login-block a.login_button.login-style-button').length > 0) {
                
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button.login-style-button:hover', 'background-color: ' + colorhover + ' !important;');
            } else if ($('.login-block a.login_button.login-style-link-icon').length > 0) {
              
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button.login-style-link-icon:hover', 'color: ' + colorhover + ' !important;');
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button.login-style-link-icon:hover:before', 'color: ' + colorhover + ' !important;');
            } else if ($('.login-block a.login_button').length > 0) {
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button:hover', 'color: ' + colorhover + ' !important;');
                document.styleSheets[0].addRule('body:not(.partner-portal) .login-block .login_button:hover:before', 'color: ' + colorhover + ' !important;');

            }


        }
    }

    $('body').on("click", "form#login-form input.login-button", function (e) {
        login_event('login-form',e);
    });

    $('body').on("click", "form#login-form-aux input.login-button", function (e) {
        login_event('login-form-aux', e);
    });
}


function login_event(formId,e) {
    localStorage.setItem('ars-contact-email-contains', JSON.stringify($('#' + formId + ' input[name="Email"]').val()));
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    e.preventDefault();

    var securityKey = getClientSecurityKey();
    var recalculateToken = false;
    if (securityKey != undefined) {
        // compare the current time vs the time when the token was generated
        var initialTime = $('form#' + formId + ' input[name="user_response_login_time"]').val();
        let initialRecapcthaCompleted = $('form#' + formId + ' input[name="pageuserinternalcompleted"]').val();
        if (initialTime === undefined) {
            try {
                if (document.referrer != '') {
                    let currentHost = window.location.hostname;
                    let domainReferrer = (new URL(document.referrer));

                    if (currentHost === domainReferrer.hostname) {
                        recalculateToken = true;
                    }
                } else if (initialRecapcthaCompleted !== undefined && initialRecapcthaCompleted == '') {
                    recalculateToken = true;
                }
            } catch (e) {
                window.console && console.error(e)
            }
        } else {
            var currentTime = new Date().getTime();

            var diff = currentTime - initialTime;
            if (diff > 90000)
                recalculateToken = true;
        }


    }

    if (recalculateToken === true) {
        $('input.login-button').show();
        $('form#' + formId + ' img.spinner').hide();

        var actionName = 'Login';

        grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {
            if ($('form#' + formId + ' input[name="user_response_login"]').length > 0) {
                var currentTime = new Date().getTime();
                currentTime = currentTime + (24 * 60 * 60 * 1000);
                $('form#' + formId + ' input[name="user_response_login"]').val(token);
                $('form#' + formId + ' input[name="user_response_login_time"]').val(currentTime);
            }
            ajax_login_submit(urlSite, securityKey, formId);
        });
    } else {

        ajax_login_submit(urlSite, securityKey, formId);
    }
}

//remove # form url
function clean_final_url(finalUrl) {

    if (finalUrl !== null && finalUrl !== undefined && finalUrl !== '') {
        if (finalUrl.includes('#'))
            finalUrl = finalUrl.replaceAll('#', '');
    }

    return finalUrl;
}

function ajax_login_submit(urlSite, securityKey,formId) {

    try {
        if ($('form#' + formId + ' #NickName').is(":-webkit-autofill") === true) {
            var valuefield = $('form#' + formId + ' #NickName').val();
            if (valuefield.length > 0) {
                $('form#' + formId + '  #NickName').val('');
            }
        }

    } catch (e) {
        window.console && console.error(e);
    }
    var values = $('form#' + formId ).serializeObject();
    var urlRedirect = $('form#' +  formId ).attr('action');
    var urlPage = $('form#' + formId).find('input[name="returnurl"]').val();

    //Get current querystring
    var queryString = window.location.search;
    if (queryString !== null && queryString !== undefined && queryString !== '') {
        queryString = queryString.replace('requiredLogin=1', '');
        queryString = queryString.replace('?', '');
        queryString = queryString.trim();

        if (queryString !=='' && !queryString.startsWith('&'))
            queryString = "&" + queryString;
    } else
        queryString = '';


    if (queryString.indexOf("nocache=") === -1) {
        queryString +=  "&nocache=" + guid();
    } else {
        queryString = queryString.replace(/nocache=\d+/, "nocache=" + guid());
    }


    var urlToInvoke = urlRedirect + "?_=" + guid();
    if (queryString.trim() !== '')
        urlToInvoke = urlToInvoke + queryString;

    

    $.ajax({
        method: "POST",
        url: urlToInvoke,
        data: values,
        cache: false,
        beforeSend: function () {
            $('input.login-button').hide();
            $('form#' + formId + ' img.spinner').show();
        }
    }).done(function (data) {
        var currentUrl = window.location.href;
        
        data = JSON.parse(data);
        var currentPath = window.location.pathname;
        if (data.status === "ok") {
            urlSite = urlSite.replace('requiredLogin=1', '');
            if (data.contactId !== undefined) {
                sessionStorage.setItem('Salesforce Contact ID', data.contactId);
                sessionStorage.setItem('User Profile', data.role);
            }
            if (!!data.parentalConsentNotLogin) {
                Swal.fire({
                    title: "",
                    text: window.translation.parental_consent_login_message,
                    icon: "warning"
                });
                $('input.login-button').show();
                $('form#' + formId + ' img.spinner').hide();
                return false;
            }
            var urlToRedirect = '';
            let isOneStep = false;
            let isMultiSignup = false;
            if ($('input[name="multisignupmode"].multi-sign-up-flag').length > 0) {
                isMultiSignup = $('input[name="multisignupmode"].multi-sign-up-flag').is(':checked') && $('input[name="multisignupmode"].multi-sign-up-flag').hasClass('onestep');
            }

            if (isMultiSignup || $('.occurrenceSelectedBeforeLogin').length > 0)
                isOneStep = true;

            if (($('body').hasClass('volunteer-opportunity-detail-page') || $('body').hasClass('volunteer-opportunity-detail-page-v3') || $('body').hasClass('volunteer-opportunity-detail-page-v2')) && isOneStep === true) {
                if (currentPath !== '') {
                    var valuesPath = currentPath.split('/');
                    if (valuesPath.length > 1) {
                        var finalUrl = currentPath;

                      
                        var isSignUpWithTeam = false;
                        var queryStringToAdd = "OneStepSignUp=true";

                        if (isMultiSignup === false) {
                            isSignUpWithTeam = $('.occurrenceSelectedBeforeLogin').hasClass('signup-team2');
                            let theSelectecOccId = $('.occurrenceSelectedBeforeLogin').parents('div.item-occ').find('input.occurrence-id').val();
                            finalUrl = currentUrl.replace("/opportunity/" + valuesPath[2], "/opportunity/" + theSelectecOccId);
                        }

                        if (isSignUpWithTeam) {
                            queryStringToAdd = "OneStepSignUpWTeam=true";
                        }

                        if (isMultiSignup === true) {
                            queryStringToAdd += "&isMultiSignUp=true&itemsId=" + get_selected_occs_multi_signup();
                        }

                        if (finalUrl.indexOf('?') !== -1)
                            finalUrl += '&' + queryStringToAdd;
                        else
                            finalUrl += '?' + queryStringToAdd;

                        finalUrl = clean_final_url(finalUrl);

                        if (data.executedARS !== null && data.executedARS !== undefined && data.executedARS === true) {
                            if (data.arsUrlToRedirect !== null && data.arsUrlToRedirect !== undefined && data.arsUrlToRedirect !== '' && data.isSuccessPage === false && data.typeARSLogin === 0) {
                                //create the Localstorage
                                var objectLS = {
                                    type: "ars-login-one-step",
                                    finalUrl: finalUrl
                                };
                                localStorage.removeItem("ars-log-onestep");
                                localStorage.setItem("ars-log-onestep", JSON.stringify(objectLS));
                                finalUrl = clean_final_url(urlSite + data.arsUrlToRedirect);

                            }
                        }
                        window.location.href = finalUrl;

                    }
                }

                $('#login-modal').foundation('close');
                // The following line was removed due to HOC3-9754
                // process_one_step_signup();
            }
            else if (data.executedARS !== null && data.executedARS !== undefined && data.executedARS === true) {
                if (data.arsUrlToRedirect !== null && data.arsUrlToRedirect !== undefined && data.arsUrlToRedirect !== '') {
                    urlToRedirect = urlSite + data.arsUrlToRedirect;
                    if (data.isLlamaPi === 'true') {
                        if (data.arsUrlToRedirect === '/account-overview' || data.arsUrlToRedirect === '/') {
                            if (urlPage !== null && urlPage !== undefined && urlPage !== '') {
                                urlToRedirect = urlSite + urlPage;
                            }
                        }
                    } else {
                        if (data.arsUrlToRedirect === '/volunteer-account-overview') {
                            if (urlPage !== null && urlPage !== undefined && urlPage !== '') {
                                urlToRedirect = urlSite + urlPage;
                            }
                        }
                    }
                }
                else if (data.role === "System Administrator" || data.role === "Staff") {
                    urlToRedirect = urlSite + "/";

                }
                else if (data.isLlamaPi === 'true')
                    urlToRedirect = urlSite + "/account-overview";
                else if (data.role !== "Volunteer")
                    urlToRedirect = urlSite + "/partner-portal/dashboard";
                else
                    urlToRedirect = urlSite + "/volunteer-account-overview";

                if (urlPage !== null && urlPage !== undefined && urlPage !== '' && data.isSuccessPage === false) {
                    var objectLS = {
                        type: "ars-login-one-step",
                        finalUrl: urlPage
                    };
                    localStorage.removeItem("ars-log-onestep");
                    localStorage.setItem("ars-log-onestep", JSON.stringify(objectLS));

                } else if (urlPage !== null && urlPage !== undefined && urlPage !== '' && urlToRedirect === '' && data.isSuccessPage === true) {
                    urlToRedirect = urlSite + urlPage;
                        
                }
                window.location.href = urlToRedirect;
            }
            else if (data.role == "System Administrator" || data.role == "Staff") {
                urlToRedirect = '';
                if (urlPage !== null && urlPage !== undefined && urlPage !== '') {
                    urlToRedirect = urlSite + urlPage;
                } else {
                    if (urlSite == '') {
                        let current_url = window.location.href;
                        if(current_url.includes('requiredLogin=1')){
                            current_url = current_url.replace('requiredLogin=1','');
                            window.location.href = current_url;
                        }else{
                            window.location.reload();
                        }
                        return;
                    }
                    else
                        urlToRedirect = urlSite;
                }

                let finalUrlToRedirect = evaluate_redirect_url_after_login(urlToRedirect);
                window.location.href = finalUrlToRedirect;
            } else if (values.returnurl != "") {
                let finalUrlToRedirect = evaluate_redirect_url_after_login(values.returnurl);

                window.location.href = finalUrlToRedirect;
            }
            else if (data.isLlamaPi == 'true') {
                window.location.href = urlSite + "/account-overview";
            } else if (data.role != "Volunteer") {
                window.location.href = urlSite + "/partner-portal/dashboard";
            }
            else {
                window.location.href = urlSite + "/volunteer-account-overview";
            }
        }
        else if (data.status === "expired") {
            if (currentPath != '') {
                var valuesPath = currentPath.split('/');
                if (valuesPath.length > 1 && $('.occurrenceSelectedBeforeLogin').parents('div.item-occ').find('input.occurrence-id').length > 0 ) {
                    var theSelectecOccId = $('.occurrenceSelectedBeforeLogin').parents('div.item-occ').find('input.occurrence-id').val();
                    var finalUrl = currentUrl.replace("/opportunity/" + valuesPath[2], "/opportunity/" + theSelectecOccId);
                    var isSignUpWithTeam = $('.occurrenceSelectedBeforeLogin').hasClass('signup-team2');
                    var queryStringToAdd = "OneStepSignUp=true";

                    if (isSignUpWithTeam) {
                        queryStringToAdd = "OneStepSignUpWTeam=true";
                    }

                    if (finalUrl.indexOf('?') !== -1)
                        finalUrl += '&' + queryStringToAdd;
                    else
                        finalUrl += '?' + queryStringToAdd;

                    //create the Localstorage
                    var objectLS = {
                                type: "ars-login-one-step",
                                finalUrl: finalUrl
                    };
                    if (data.executedARS == true) {
                        localStorage.removeItem("ars-log-onestep");
                        localStorage.setItem("ars-log-onestep", JSON.stringify(objectLS));
                    }
                    else {
                        localStorage.removeItem("log-onestep");
                        localStorage.setItem("log-onestep", JSON.stringify(objectLS));
                    }
                }
            }
            window.location.href = urlSite + "/change-password";
        } //BEGIN POCJJ
        else if (data.status == 'multilogin') {
            window.location.href = data.token;
            //END POCJJ
        }
        else {

            if (securityKey !== undefined) {
                if (data.renew != undefined && data.renew === true) {
                    regenerateKeyLogin('form#' + formId, "Login");
                }
            }

            if (data.status == "changepassword") {
                $('#login-modal').foundation('close');
                Swal.fire({
                    title: '',
                    text: data.message,
                    icon: 'info'
                });
            }
            else
                /*
                Swal.fire({
                    title: '',
                    text: data.message,
                    icon: 'error'
                });
                */
                Swal.fire({
                    title: '',
                    html: '<p tabindex="0">' + data.message + '</p>',
                    icon: 'error'
                }).then((result) => {
                    if (result.value) {
                        $("#login-form #UserEmail").focus();
                    }
                });
            $('input.login-button').show();
            $('form#' + formId + ' img.spinner').hide();


        }

    }).fail(function (data) {
        window.location.href = urlSite;
    });
}

function process_one_step_signup() {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $('body').addClass('logged one-step-signup');

    if($('#prerequisite-opportunity').length > 0) {
        $.ajax({
            method: "GET",
            url: urlSite + "HocContact/GetVolunteerConnectionsInPrerequisite/" + $('#prerequisite-opportunity').data('prerequisiteId'),
            dataType: "json",
            beforeSend: function () {
                $('.processing_screen').show();
            },
            success: function(response){
                if(response.status == 200)
                {
                    $('#prerequisite-opportunity').data('prerequisiteConnections', response.connectionsEndDate);
                    $('.signup-individual, .signup-team2').off('click');
                    $('.signup-team2').removeAttr('data-open').addClass('signup-team').removeClass('signup-team2');
                    var occurenceSelectedBeforeLogin = $('.occurrenceSelectedBeforeLogin');
                    occurenceSelectedBeforeLogin.removeClass('occurrenceSelectedBeforeLogin');
                    opportunity_signup();
                    occurenceSelectedBeforeLogin.click();
                }
                else 
                {
                    Swal.fire({
                        title: '',
                        text: response.message,
                        icon: 'error'
                    });
                    $('.processing_screen').hide();
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                $('.processing_screen').hide();
                Swal.fire({
                    title: textStatus,
                    text: errorThrown,
                    icon: 'error'
                });
            }
        });
    }
    else {
        //  Validate if Opportunity has ARS then reload page to
        //  to get branch logic properly load in html after loggen in
        var url = $('form#login-form #returnurl').val();
        var hasARS = $('.opportunity-detail-content input.branch-logic-info').length > 1;

        if (url && url.indexOf('/opportunity/') != -1 && hasARS) {
            window.location.href = url + '?OneStepSignUp=true';
        } 

        $('.signup-individual, .signup-team2').off('click');
        $('.signup-team2').removeAttr('data-open').addClass('signup-team').removeClass('signup-team2');
        var occurenceSelectedBeforeLogin = $('.occurrenceSelectedBeforeLogin');
        occurenceSelectedBeforeLogin.removeClass('occurrenceSelectedBeforeLogin');
        opportunity_signup();
        occurenceSelectedBeforeLogin.click();
    }
}

function verify_login_modal() {
    var requireLogin = get_parameter_by_ame("requiredLogin");
    if (requireLogin == "1") {
        var invalidAttempt = get_parameter_by_ame("invalid");
        if (invalidAttempt == 1) {
            if ($("div#invalid-credentials").length > 0)
                $("div#invalid-credentials").show();
        }
        else {
            if ($("div#invalid-credentials").length > 0)
                $("div#invalid-credentials").hide();
        }

        if ($('#login-modal').length > 0 && !$('body').hasClass('logged')) // GGNPC custom login has not the login modal
            $('#login-modal').foundation('open');

    }
}

function get_parameter_by_ame(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

function set_participants() {
    if ($(".manage-member-team").length !== 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        
        $(".manage-member-team").click(function () {
            document.getElementById('typeparticipating').value = $(this).attr("option");
            $('#bMoreParticipants').hide();
            var option = $(this).attr("option");
            if (option == "1") {//Make Captain
                document.getElementById('textModalTitle').innerHTML = window.translation.select_team_members_captain_label;
                document.getElementById('textModal').innerHTML = window.translation.select_team_members_captain_opportunity;
            }
            if (option == "2" || option == "3") {//Participants
                document.getElementById('textModalTitle').innerHTML = window.translation.select_team_members_participants_label;
                document.getElementById('textModal').innerHTML = window.translation.select_team_members_participating_opportunity;
            }
            var volunteerStillNeeded = ($(this).data("volunteer-still-needed") != null && $(this).data("volunteer-still-needed") != undefined && $(this).data("volunteer-still-needed") != "") ? Number($(this).data("volunteer-still-needed")) : 0;
            var unnamedVisible = ($(this).data("allow-anonymous-slots") != null && $(this).data("allow-anonymous-slots").toLowerCase() == "true");

            if (volunteerStillNeeded < 0) {
                volunteerStillNeeded = 0;
            }

            if (unnamedVisible) {
                $("#manage-member-team-form").addClass("include-unnamed-column");
                document.getElementById('textModal').innerHTML = window.translation.select_team_members + " (" + volunteerStillNeeded.toString() + " " + window.translation.spots_available + ")";
            }
            else {
                $("#manage-member-team-form").removeClass("include-unnamed-column");
            }

            $("#datatable-for-manage-member-team").DataTable().destroy();
            $('#occurrence-id-member-team').val($(this).attr("accurrence"));
            $('#opportunity-id').val($(this).attr("opportunity"));
            $('#team-id').val($(this).attr("team-id"));
            $('.processing_screen').show();
            var cont = -1;
            table = $('#datatable-for-manage-member-team').DataTable({
                "ajax": urlSite + 'GetconnectionsbyTeam/' + $(this).attr("accurrence") + '/' + $(this).attr("team-id") + '/' + $(this).attr("option"),
                "bFilter": false,
                "bLengthChange": false,
                "paging": false,
                "warning": false,
                "order": [[1, "asc"]],
                "iDisplayLength": -1,
                "columnDefs": [
                    {
                        "targets": [5],
                        "visible": unnamedVisible,
                        "searchable": false
                    },
                    {
                        "targets": [4],
                        "visible": false,
                        "searchable": false
                    },
                    {
                        "targets": [0],
                        "width": "1%",
                        "orderable": false,
                        "render": function (data, type, row) {
                            cont++;
                            var registrationIsEnabled = (row[7] == "True");
                            var classInput = (row[6] == "True") ? "is-captain" : "";
                            var classRegistration = registrationIsEnabled ? "reg-enabled" : "reg-disabled";
                            var inputsCode = '';
                            var requireAdult = 0;

                            if (row.length >7 && row[8] !== undefined && row[8] == "1")
                                requireAdult = 1;

                            if (row[4] == "False") {
                                inputsCode= '<input type="checkbox" name="confirmed-' + cont + '" class="member-participate ' + classInput + '  ' + classRegistration +'" value="' + row[0] + '" data-cont="' + cont + '"  data-is-captain="' + row[6] + '" ' + (registrationIsEnabled ? '' : 'disabled="disabled"') + ' ><input type="hidden"  name="teamid-' + cont + '" value="' + row[0] + '"   />';
                            } else {
                                inputsCode= '<input type="checkbox" name="confirmed-' + cont + '" class="member-participate ' + classInput + ' reg-enabled" value="' + row[0] + '" checked  data-cont="' + cont + '"  data-is-captain="' + row[6] + '" ><input type="hidden"  name="teamid-' + cont + '" value="' + row[0] + '"  />';
                            }
                            inputsCode += '<input type="hidden" name="requireAdult-' + cont + '" value="' + requireAdult +'"/>';

                            return inputsCode;
                        },
                    }
                ], 
                initComplete: function (settings, json) {
                    document.getElementById('contparticipating').value = parseInt(document.getElementById("datatable-for-manage-member-team").rows.length) - 1;
                    $("#allow-anonymous-slots").val(json.allowAnonymousSlots);
                    if (json.registrationEnabled != null && json.registrationEnabled === false) {
                        $('#registrationDisabled').removeAttr('style');
                    } else {
                        $('#registrationDisabled').attr('style', 'display:none');
                    }
                    $('.processing_screen').hide();
                    if ($('#datatable-for-manage-member-team').length > 0) {

                        $(".member-participate").change(function () {
                            var idField = $(this).data("cont");
                            if ($('#slots-' + idField).length > 0) {
                                if (this.checked) {
                                    $('#slots-' + idField).removeAttr('disabled');
                                }
                                else {
                                    $('#slots-' + idField).val('');
                                    $('#slots-' + idField).attr('disabled', 'disabled');
                                }
                            }
                        });

                        $("#datatable-for-manage-member-team input#selectall-member-team").change(function () {
                            if(this.checked){
                                $(".anonymous-slots.reg-enabled").removeAttr('disabled');
                            }
                            else {
                                $(".anonymous-slots").val('');
                                $(".anonymous-slots").attr('disabled', 'disabled');
                            }
                        });
                    }

                    if ($("input.anonymous-slots").length > 0) {
                        $("input.anonymous-slots").change(function () {
                            if ($(this).data("registration-enabled") === "False" && $(this).val() > $(this).data("original-value")) {
                                Swal.fire({
                                    title: "",
                                    text: window.translation.new_registration_is_closed,
                                    icon: "warning",
                                    showCancelButton: false,
                                    confirmButtonText: "Ok",
                                    closeOnConfirm: true,
                                });
                                $(this).val($(this).data("original-value"));
                            }
                        });
                    }
                },
                fnDrawCallback: function (oSettings) {
                    datatable_add_cells_data_for_mobile_headers(this);
                }
            });
            if (table) {
                table.on('error.dt', function (e, settings, techNote, message) {
                    if (!message)
                        Swal.fire({
                            title: '',
                            text: window.translation.error_loading_members,
                            icon: 'error'
                        });
                    else
                        Swal.fire({
                            title: '',
                            text: window.translation.error_loading_members + ": " + message,
                            icon: 'error'
                        });
                });
            }
            var isSelectCol = false;
            $("#selectall-member-team").click(function () {
                isSelectCol = !isSelectCol;
                if (isSelectCol) {
                    $(".member-participate.reg-enabled").prop("checked", true);
                    $(".member-participate.reg-enabled").attr("checked", true);
                } else {
                    $(".member-participate.reg-enabled").prop("checked", false);
                    $(".member-participate.reg-enabled").attr("checked", false);
                }
            });

            
        });
        $("#bMoreParticipantsCaptain").click(function () {
            var typeParticipation = document.getElementById('typeparticipating').value;
            if (typeParticipation == '1') {
                $("#datatable-for-manage-member-team input[type='checkbox']").each(function () {
                    if (this.checked) {
                        $('.processing_screen').show();
                        $("#bMoreParticipantsCaptain").hide();
                        $('#update-participants-team-occ-form').submit();
                    }
                });
            }
            else {

                if ($("#datatable-for-manage-member-team input[type='checkbox']:checked").length === 0) {
                    var volOppId =  $("#update-participants-team-occ-form input#opportunity-id").val();
                    var occu =      $("#update-participants-team-occ-form input#occurrence-id-member-team").val();
                    var TeamId =    $("#update-participants-team-occ-form input#team-id").val();
                    var RedirectTo = (typeParticipation == '2') ? "my-teams" : "";

                    Swal.fire({
                        title: "",
                        text: window.translation.any_volunteer_selected + ". " + window.translation.you_sure_remove_your_team,
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#DD6B55",
                        cancelButtonText: window.translation.cancel,
                        confirmButtonText: window.translation.yes_remove_my_team,
                        closeOnConfirm: true
                    }).then(function (result) {
                        if (result.isConfirmed) {
                            $("#bMoreParticipantsCaptain").hide();
                            $('.processing_screen').show();
                            window.location.href = urlSite + "RemoveTeam/" + volOppId + "/" + occu + "/" + TeamId + '/' + RedirectTo;

                        }
                    });

                }
                else {

                    var totalAdults = 0;
                    var totalRequireAdults = 0;
                    $("#datatable-for-manage-member-team input[type='checkbox']:checked").each(function () {
                        let counter = $(this).data("cont");
                        let requireAdult = $('input[name="requireAdult-' + counter + '"]').val();

                        if (requireAdult == 0) {
                            totalAdults++;
                        } else if (requireAdult == 1) {
                            totalRequireAdults++;
                        }

                    })

                    if (totalAdults == 0 && totalRequireAdults > 0) {

                        Swal.fire({
                            title: "",
                            text: window.translation.an_adult_is_required,
                            icon: "warning",
                            showCancelButton: false,
                            confirmButtonText: 'Ok',
                            closeOnConfirm: true
                        })

                    } else {
                        $('.processing_screen').show();
                        $("#bMoreParticipantsCaptain").hide();
                        $('#update-participants-team-occ-form').submit();
                    }
                }
            }
            
        });

    }
}

function set_datatable_for_upcoming_opp(languageText) {
    if ($('#datatable-custom-upcoming-opp').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $('#datatable-custom-upcoming-opp').DataTable({
            "ajax": urlSite + 'HocContact/GetConnections/upcoming',
            "bFilter": false,
            "scrollY": height_content_data_table,
            "scrollCollapse": true,
            "bLengthChange": false,
            "paging": false,
            "language": languageText,
            "order": [[2, 'asc']],
            "columnDefs": [
               {
                   targets: "datetime-column",
                   type: "datetime",
               }
            ],
            fnDrawCallback: function (oSettings) {
                set_participants();
                datatable_add_cells_data_for_mobile_headers(this);
            }
        }).on('error.dt', function (e, settings, techNote, message) {
            if (!message)
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_upcoming_opportunities,
                    icon: 'error'
                });
            else
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_upcoming_opportunities + ": " + message,
                    icon: 'error'
                });
        });
    }
}

function RemoveTeam(volOppId, occu, TeamId) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    Swal.fire({
        title: "",
        text: window.translation.you_sure_remove_your_team,
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        cancelButtonText: window.translation.cancel,
        confirmButtonText: window.translation.yes_remove_my_team,
        closeOnConfirm: true
    }).then(function (result) {
        if (result.isConfirmed) {
            $('.processing_screen').show();
            window.location.href = urlSite + "RemoveTeam/" + volOppId + "/" + occu + "/" + TeamId;

        }
    });

}

function RemoveMe(ConnectionId, grouped_occurrences) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';


    if (typeof grouped_occurrences !== 'undefined') {
        $("#grouped-occurrences-alert").find("button").attr("data-connection-id", ConnectionId);
        Swal.fire({
            title: "",
            html: $("#grouped-occurrences-alert").html(),
            icon: "warning",
            showConfirmButton: false,
            closeOnConfirm: true,

        }).then(function (result) {
            if (result.isConfirmed) {
                $('.processing_screen').show();

            }
        });

    } else {

        Swal.fire({
            title: "",
            text: window.translation.you_sure_remove_yourself_opportunity,
            icon: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            cancelButtonText: window.translation.cancel,
            confirmButtonText: window.translation.yes_remove_it,
            closeOnConfirm: true

        }).then(function (result) {

            if (result.isConfirmed) {
                $('.processing_screen').show();
                window.location.href = urlSite + "DeclineParticipation/" + ConnectionId;
            }
        });

    }
}

function RemoveTeamRedirectTo(volOppId, occu, TeamId, RedirectTo) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    Swal.fire({
        title: "",
        text: window.translation.you_sure_remove_your_team,
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        cancelButtonText: window.translation.cancel,
        confirmButtonText: window.translation.yes_remove_it,
        closeOnConfirm: true

    }).then(function (result) {
        if (result.isConfirmed) {
            $('.processing_screen').show();
            window.location.href = urlSite + "RemoveTeam/" + volOppId + "/" + occu + "/" + TeamId + '/' + RedirectTo;

        }
    });

}

function set_datatable_for_history_opp(languageText) {
    if ($('#datatable-custom-history-opp').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        
        $('#datatable-custom-history-opp').DataTable({
            "ajax": urlSite + 'HocContact/GetConnections/history',
            "bFilter": false,
            "bLengthChange": false,
            "scrollY": height_content_data_table,
            "scrollCollapse": true,
            "paging": false,
            "order": [[2, 'desc']],
            "columnDefs": [
               {
                 targets: "datetime-column",
                 type: "datetime",
              }
            ],

            "language": languageText,
            "columnDefs": [
               {
                   targets: "datetime-column",
                   type: "datetime",
               }
            ],
            fnDrawCallback: function (oSettings) {
                $(".feedback-submit").click(function () {
                    $('#feedback').val($(this).attr("feedback"));
                    $('#rating').val($(this).attr("rating"));
                    $('#connection-id-feedback').val($(this).attr("id"));
                    if (window.IsCustomFeedback === true) {
                        custom_feedback($(this));
                    }
                });
                $(".reporthours").click(function () {
                    $('#connection-id-reporthours').val($(this).attr("id"));
                    $('#opp-name').text($(this).attr("opp-name"));
                    $('#org-name').text($(this).attr("org-name"));
                    $('#opp-leader').text($(this).attr("opp-leader"));
                    $('#start-date').text($(this).attr("start-date"));
                    $('#end-date').text($(this).attr("end-date"));
                    $('#report-hours').val($(this).attr("report-hours"));
                });
                datatable_add_cells_data_for_mobile_headers(this);
            },
            initComplete: function (settings, json) {
                $(".processing_screen").hide();
                $(".earlier-data-section").attr('style', 'display:none');
                if(json.StartDate!=null && json.StartDate!=undefined){
                    $(".older-data-section").removeAttr('style');
                    $(".history-since-date").text(json.StartDate);
                    $("#history-start-date").val(json.StartDate);
                    $("#history-start-page").val(json.StartDate);

                    $(".history-connection-get-older").click(function () {
                        $(".processing_screen").show();
                        $('#datatable-custom-history-opp').DataTable().destroy();
                        getOlderHistoryConnections(languageText);
                    });

                }
                else{
                    $(".older-data-section").attr('style','display:none');
                }
            }
        }).on('error.dt', function (e, settings, techNote, message) {
            if (!message)
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_history_volunteers_opp,
                    icon: 'error'
                });
            else
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_history_volunteers_opp + ": " + message,
                    icon: 'error'
                })
        });
    }
}

function getOlderHistoryConnections(languageText){
    if ($('#datatable-custom-history-opp').length > 0) {
        //Get if site is sharingPortalPlus
        var endDateValue =$("#history-start-date").val();
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $('#datatable-custom-history-opp').DataTable({
            "ajax": urlSite + 'HocContact/GetConnections/history?endDate='+endDateValue,
            "bFilter": false,
            "bLengthChange": false,
            "scrollY": height_content_data_table,
            "scrollCollapse": true,
            "paging": false,
            "language": languageText,
            fnDrawCallback: function (oSettings) {
                $(".feedback-submit").click(function () {
                    $('#feedback').val($(this).attr("feedback"));
                    $('#rating').val($(this).attr("rating"));
                    $('#connection-id-feedback').val($(this).attr("id"));
                    if (window.IsCustomFeedback === true) {
                        custom_feedback($(this));
                    }
                });
                $(".reporthours").click(function () {
                    $('#connection-id-reporthours').val($(this).attr("id"));
                    $('#opp-name').text($(this).attr("opp-name"));
                    $('#org-name').text($(this).attr("org-name"));
                    $('#opp-leader').text($(this).attr("opp-leader"));
                    $('#start-date').text($(this).attr("start-date"));
                    $('#end-date').text($(this).attr("end-date"));
                    $('#report-hours').val($(this).attr("report-hours"));
                });
                datatable_add_cells_data_for_mobile_headers(this);
            },
            initComplete: function (settings, json) {

                $(".processing_screen").hide();
                $(".older-data-section").attr('style','display:none');
                $(".export-volunteer-history").attr("href","export-volunteer-history?page=2");
                if(json.EndDate!=null && json.EndDate!=undefined){
                    $(".earlier-data-section").removeAttr('style');

                    $(".history-upto-date").text($("#history-start-page").val());

                    $(".history-connection-get-earlier").click(function () {
                        $(".processing_screen").show();
                        $('#datatable-custom-history-opp').DataTable().destroy();
                        $(".export-volunteer-history").attr("href","export-volunteer-history");
                        set_datatable_for_history_opp(languageText);
                    });

                }
                else{
                    $(".earlier-data-section").attr('style','display:none');
                }

                if(json.StartDate!=null && json.StartDate!=undefined){
                    $(".older-data-section").removeAttr('style');
                    $(".history-since-date").text(json.StartDate);
                    $("#history-start-date").val(json.StartDate);

                    $(".history-connection-get-older").click(function () {
                        $(".processing_screen").show();
                        $('#datatable-custom-history-opp').DataTable().destroy();
                        getOlderHistoryConnections(languageText);
                    });

                }
                else{
                    $(".older-data-section").attr('style','display:none');
                }
            }
        }).on('error.dt', function (e, settings, techNote, message) {
            if (!message)
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_history_volunteers_opp,
                    icon: 'error'
                });
            else
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_history_volunteers_opp + ": " + message,
                    icon: 'error'
                });
        });
    }
}

function set_datatable_for_self_reported_hours(languageText) {
    if ($('#datatable-for-self-reported-hours').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $('#datatable-for-self-reported-hours').DataTable({
            "ajax": urlSite + 'HocContact/GetConnections/self-report',
            "bFilter": false,
            "bLengthChange": false,
            "scrollY": "400px",
            "scrollCollapse": true,
            "paging": false,
            "language": languageText,
            "order": [[2, 'desc']],
            "columnDefs": [
               {
                   targets: "datetime-column",
                   type: "datetime",
               }
            ],
            fnDrawCallback: function (oSettings) {
                datatable_add_cells_data_for_mobile_headers(this);
            },
            initComplete: function (settings, json) {
                $(".processing_screen").hide();
                $(".self-earlier-data-section").attr('style', 'display:none');
                if (json.StartDate != null && json.StartDate != undefined) {
                    $(".self-older-data-section").removeAttr('style');
                    $(".self-history-since-date").text(json.StartDate);
                    $("#self-history-start-date").val(json.StartDate);
                    $("#self-history-start-page").val(json.StartDate);

                    $(".self-history-connection-get-older").click(function () {
                        $(".processing_screen").show();
                        $('#datatable-for-self-reported-hours').DataTable().destroy();
                        getOlderSelfConnections(languageText);
                    });

                }
                else {
                    $(".self-older-data-section").attr('style', 'display:none');
                }
            }
        }).on('error.dt', function (e, settings, techNote, message) {
            if (!message)
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_self_report_opp,
                    icon: 'error'
                });
            else
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_self_report_opp + ": " + message,
                    icon: 'error'
                });
        });
    }
}

function getOlderSelfConnections(languageText) {
    if ($('#datatable-for-self-reported-hours').length > 0) {
        //Get if site is sharingPortalPlus
        var endDateValue = $("#self-history-start-date").val();
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $('#datatable-for-self-reported-hours').DataTable({
            "ajax": urlSite + 'HocContact/GetConnections/self-report?endDate=' + endDateValue,
            "bFilter": false,
            "bLengthChange": false,
            "scrollY": "400px",
            "scrollCollapse": true,
            "paging": false,
            "language": languageText,
            "columnDefs": [
                {
                    targets: "datetime-column",
                    type: "datetime",
                }
            ],
            fnDrawCallback: function (oSettings) {
                datatable_add_cells_data_for_mobile_headers(this);
            },
            initComplete: function (settings, json) {
                $(".processing_screen").hide();
                $(".self-older-data-section").attr('style', 'display:none');
                if (json.EndDate != null && json.EndDate != undefined) {
                    $(".self-earlier-data-section").removeAttr('style');

                    $(".self-history-upto-date").text($("#self-history-start-page").val());

                    $(".self-history-connection-get-earlier").click(function () {
                        $(".processing_screen").show();
                        $('#datatable-for-self-reported-hours').DataTable().destroy();
                        set_datatable_for_self_reported_hours(languageText);
                    });

                }
                else {
                    $(".self-earlier-data-section").attr('style', 'display:none');
                }

                if (json.StartDate != null && json.StartDate != undefined) {
                    $(".self-older-data-section").removeAttr('style');
                    $(".self-history-since-date").text(json.StartDate);
                    $("#self-history-start-date").val(json.StartDate);

                    $(".self-history-connection-get-older").click(function () {
                        $(".processing_screen").show();
                        $('#datatable-for-self-reported-hours').DataTable().destroy();
                        getOlderSelfConnections(languageText);
                    });

                }
                else {
                    $(".self-older-data-section").attr('style', 'display:none');
                }
            }
        }).on('error.dt', function (e, settings, techNote, message) {
            if (!message)
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_history_volunteers_opp,
                    icon: 'error'
                });
            else
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_history_volunteers_opp + ": " + message,
                    icon: 'error'
                });
        });
    }
}

function addMoreRow(type) {

    var isVisibleEmail = true;
    var isVisiblePhone = true;
    var isVisibleAge = true;
    var isVisibleTeamCaptain = true;
    var isOverAgeActive = false
    var isFullHideActive = false;

    if ($("input[name='isVisibleEmail']").length > 0 && ($("input[name='isVisibleEmail']").val() === "False") || $("input[name='isVisibleEmail']").val() === false) {
        isVisibleEmail = false;
    }

    if ($("input[name='isVisiblePhone']").length > 0 && ($("input[name='isVisiblePhone']").val() === "False") || $("input[name='isVisiblePhone']").val() === false) {
        isVisiblePhone = false;
    }

    if ($("input[name='isVisibleAge']").length > 0 && ($("input[name='isVisibleAge']").val() === "False") || $("input[name='isVisibleAge']").val() === false) {
        isVisibleAge = false;
    }

    if ($("input[name='isVisibleTeamCaptain']").length > 0 && ($("input[name='isVisibleTeamCaptain']").val() === "False") || $("input[name='isVisibleTeamCaptain']").val() === false) {
        isVisibleTeamCaptain = false;
    }

    if ($("input[name='isOverAgeActive']").length > 0 && ($("input[name='isOverAgeActive']").val() === "True")) {
        isOverAgeActive = true;
    }

    if ($("input[name='isFullHideActive']").length > 0 && ($("input[name='isFullHideActive']").val() === "True") ) {
        isFullHideActive = true;
    }

    var tableRef = document.getElementById('teamMember');
    var prefix = "M";
    if (type == 1) {
        var nu = tableRef.rows.length - 1;
        prefix = "";
        var membersNumbers = tableRef.rows.length;

        

    }
    if (type == 2) {
        var nu = tableRef.rows.length;
        var membersNumbers = parseInt($("#contMembers").val())+parseInt(nu);
    }
    for (var c = 0; c < 20 && membersNumbers < 100; c++) {
        membersNumbers++;
        var newRow = tableRef.insertRow(tableRef.rows.length);
        var x1 = newRow.insertCell(0);
        x1.innerHTML = nu + '.';

        var fieldNumber = 3;

        var x2 = newRow.insertCell(1);
        x2.innerHTML = "<input  id='" + prefix + "name-" + nu + "' name='" + prefix + "name-" + nu + "' type='text' >";
        var x3 = newRow.insertCell(2);
        x3.innerHTML = "<input  id='" + prefix + "last-" + nu + "' name='" + prefix + "last-" + nu + "' type='text' >";

        if (isVisibleEmail === true) {
            var x4 = newRow.insertCell(fieldNumber);
            x4.innerHTML = "<input  id='" + prefix + "email-" + nu + "' name='" + prefix + "email-" + nu + "' type='text'>";
            fieldNumber++;
        }

        if (isVisiblePhone === true) {
            var x5 = newRow.insertCell(fieldNumber);
            x5.innerHTML = "<input  id='" + prefix + "phone-" + nu + "' name='" + prefix + "phone-" + nu + "' type='text'>";
            fieldNumber++;
        }

        if (isVisibleAge && !isFullHideActive) {
            
            var x6 = newRow.insertCell(fieldNumber);
            if (isOverAgeActive) {
                if (type == 2) {
                    x6.className = "check-age-column";
                    x6.innerHTML = "<input id='checkMage-" + nu + "' name='checkMage-" + nu + "' type='checkbox' />";
                }
                else {
                    x6.innerHTML = "<input id='" + prefix + "age-" + nu + "' name='" + prefix + "age-" + nu + "' type='hidden' value=''>" +
                                   "<input id='" + prefix + "ageCheck-" + nu + "' name='" + prefix + "ageCheck-" + nu + "' type='checkbox' />";
                }

            }
            else{
                x6.innerHTML = "<input  id='" + prefix + "age-" + nu + "' name='" + prefix + "age-" + nu + "' type='text'>";
            }
            fieldNumber++;
        }

        if (isVisibleTeamCaptain === true) {
            var x7 = newRow.insertCell(fieldNumber);
            x7.innerHTML = "<input id='" + prefix + "capitan-" + nu + "' name='" + prefix + "capitan-" + nu + "' type='checkbox' onClick='checkCap(" + nu + ")' />";
            fieldNumber++;
        }

        newRow.className = "newMember";

        var nu = nu + 1;
    }
    if (membersNumbers == 100) {
        $("#more-team-members").hide();
    }
    var num = document.getElementById('cont');

    num.value = parseInt(num.value) + 20;
    datatable_add_cells_data_for_mobile_headers(tableRef);

    addAdditionalAttributesToMenmbers();

 
}

function removeSavedSearches(id) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    Swal.fire({
        title: "",
        text: window.translation.you_sure_remove_saved_searches,
        icon: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        cancelButtonText: window.translation.cancel,
        confirmButtonText: window.translation.yes_remove_it,
        closeOnConfirm: true

    }).then(function (result) {
        if (result.isConfirmed) {
            window.location.href = urlSite + 'saved-searches-delete/' + id;
        }
    });

}

function deleteSkillsDocumentation(id) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    Swal.fire({
        title: "",
        text: window.translation.you_sure_delete_skill_documentation,
        icon: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        cancelButtonText: window.translation.cancel,
        confirmButtonText: window.translation.yes_delete_it,
        closeOnConfirm: true

    }).then(function (result) {
        if (result.isConfirmed) {
            window.location.href = urlSite + 'volunteer-skills-delete/' + id;
        }
    });

}

function processSelfReportForm() {
    if ($("#report-form").length > 0) {
        var advancedFilter = ($('#advanced-filter').val() === 'true');
        if ($(".Is-Not-Allow-Regularly-Scheduled-Connections").length > 0) {
            SetFieldsRequiredForSelfReportPage();
        }

        if(advancedFilter){
            $("#OrganizationId").closest('.toggle-self-report').hide();
            $("#OrganizationId").closest('.toggle-self-report').next('.toggle-self-report').show();
        }

        $("body").on("click", ".click-here", function () {
            var select2dropdown = $(".organizations-remote-data");
            var orgName = select2dropdown.data('select2').$dropdown.find("input").val();
            select2dropdown.select2("close");
            advancedFilter = !advancedFilter;
            $("#OrganizationName").val(orgName);
            $('#advanced-filter').val(advancedFilter.toString());
            SetFieldsRequiredForSelfReportPage()
            $(".toggle-self-report").toggle("slow");
            $("#OrganizationName").focus();
        });
        if ($("#date-of-service").length > 0) {
            $("#date-of-service").change(function () {
                if ($("#date-of-service").val() != null) {
                    $("#date-of-service-error").hide();
                }
            });
        }
    }
}

function validateEmail(email) {
    var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

function validate_team_members_before_add_members() {
    var isEmailRequired = false;
    var isPhoneRequired = false;
    var isAgeRequired = false;

    var isEmailVisible = false;
    var isPhoneVisible = false;
    var isAgeVisible = false;

    var counterInvalidRows = 0;


    if ($("#form-add-more-members input[name='isRequiredEmail']").val() === "True" || $("#form-add-more-members input[name='isRequiredEmail']").val() === true)
        isEmailRequired = true;

    if ($("#form-add-more-members input[name='isRequiredPhone']").val() === "True" || $("#form-add-more-members input[name='isRequiredPhone']").val() === true)
        isPhoneRequired = true;

    if (($("#form-add-more-members input[name='isRequiredAge']").val() === "True" || $("#form-add-more-members input[name='isRequiredAge']").val() === true) && 
        ($("#form-add-more-members input[name='isOverAgeActive']").val() === "False" || $("#form-add-more-members input[name='isOverAgeActive']").val() === false) &&
        ($("#form-add-more-members input[name='isFullHideActive']").val() === "False" || $("#form-add-more-members input[name='isFullHideActive']").val() === false))
        isAgeRequired = true;



    if ($("#form-add-more-members input[name='isVisibleEmail']").val() === "True" || $("#form-add-more-members input[name='isVisibleEmail']").val() === true)
        isEmailVisible = true;

    if ($("#form-add-more-members input[name='isVisiblePhone']").val() === "True" || $("#form-add-more-members input[name='isVisiblePhone']").val() === true)
        isPhoneVisible = true;

    if (($("#form-add-more-members input[name='isVisibleAge']").val() === "True" || $("#form-add-more-members input[name='isVisibleAge']").val() === true) && 
        ($("#form-add-more-members input[name='isOverAgeActive']").val() === "False" || $("#form-add-more-members input[name='isOverAgeActive']").val() === false) &&
        ($("#form-add-more-members input[name='isFullHideActive']").val() === "False" || $("#form-add-more-members input[name='isFullHideActive']").val() === false))
        isAgeVisible = true;


    var counter = 1;
    $("form#form-add-more-members tbody#tablebody tr.newMember").each(function (item) {
        var values = '';
        var email = '';
        var phone = '';
        var age = '';
        var lastName = '';
        var firstName = '';
        var missingRequiredFieldEmail = false;
        var missingRequiredFieldPhone = false;
        var missingRequiredFieldAge = false;
        var missingRequiredFieldLastName = false;
        var missingRequiredFieldFirstName = false;


        if (isEmailVisible) {
            var field = $(this).find('input[name="Memail-' + counter + '"]');
            email = field.val();
            values += email;

            if (isEmailRequired && email == '')
                missingRequiredFieldEmail = true;
            else
                field.removeClass("special-required");
        }

        if (isPhoneVisible) {
            var field = $(this).find('input[name="Mphone-' + counter + '"]');
            phone = field.val();
            values += phone;

            if (isPhoneRequired && phone == '') {
                missingRequiredFieldPhone = true;
            }
            else {
                $(this).find('input[name="Mphone-' + counter + '"]').removeClass("special-required");
            }
        }

        if (isAgeVisible) {
            var field = $(this).find('input[name="Mage-' + counter + '"]');
            age = field.val();
            values += age;

            if (isAgeRequired && age == '')
                missingRequiredFieldAge = true;
           
        }

        firstName = $(this).find('input[name="Mname-' + counter + '"]').val();
        values += firstName;

        if (firstName == '') {
            missingRequiredFieldFirstName = true;
        }
        else
            $(this).find('input[name="Mname-' + counter + '"]').removeClass("special-required");


        lastName = $(this).find('input[name="Mlast-' + counter + '"]').val();
        values += lastName;

        if (lastName == '') {
            missingRequiredFieldLastName = true;
        }
        else
            $(this).find('input[name="Mlast-' + counter + '"]').removeClass("special-required");



        if (values != '' && (missingRequiredFieldEmail || missingRequiredFieldAge || missingRequiredFieldPhone || missingRequiredFieldLastName || missingRequiredFieldFirstName)) {
            counterInvalidRows++;

            if (missingRequiredFieldEmail)
                $(this).find('input[name="Memail-' + counter + '"]').addClass("special-required");

            if (missingRequiredFieldPhone) {
                $(this).find('input[name="Mphone-' + counter + '"]').addClass("special-required");
            }

            if (missingRequiredFieldAge)
                $(this).find('input[name="Mage-' + counter + '"]').addClass("special-required");

            if (missingRequiredFieldLastName)
                $(this).find('input[name="Mlast-' + counter + '"]').addClass("special-required");

            if (missingRequiredFieldFirstName)
                $(this).find('input[name="Mname-' + counter + '"]').addClass("special-required");


        }

        counter++;

    });

    if (counterInvalidRows > 0) {
        // focus in the first element with the special-required class
        $("form#form-add-more-members input.special-required").first().focus();

        Swal.fire({
            title: "",
            text: window.translation.enter_all_required,
            icon: "warning",
            showCancelButton: false,
            confirmButtonText: "Ok",
            closeOnConfirm: true
        });
    }

    return counterInvalidRows;

}

function add_team_member_door() {
    if ($('body.team-detail-page').length > 0) {
        //add-team-member-door
        $(document).on('click', 'a#add-team-member-door', function () {
            $('#modal-create').foundation('open');
            if ($('form#form-add-more-members input[name="recaptcha"]').length > 0) {
                if (typeof regenerateKey === "function") {
                    regenerateKey('form#form-add-more-members', $('form#form-add-more-members input[name="pageactioname"]').val());
                }
            }
        });
    }

}


function addMoreMembers() {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var bol = true;
    var bolfinish = false;
    var company = document.getElementById('Company').value; // 1 yes 0 no
    var c = 1;
    var teamid = $("#idTeam").val();
    var listemail = ";";
    $("#buttonAddmoremembers").hide();
    $("#processing_screen2").show();

    if (validate_team_members_before_add_members() > 0) {
        $("#buttonAddmoremembers").show();
        $("#processing_screen2").hide();
        return;
    }

    var isVisibleEmail = true;
    var isVisiblePhone = true;
    var isVisibleAge = true;
    var isVisibleTeamCaptain = true;

    var isRequiredEmail = false;
    var isRequiredPhone = false;
    var isRequiredAge = false;

    hasCustomRulesForFields = ($('form#form-add-more-members input[name="hasCustomRulesForFields"]').length > 0) ? $('form#form-add-more-members input[name="hasCustomRulesForFields"]').val() : false;


    if ($("input[name='isVisibleEmail']").length > 0 && ($("input[name='isVisibleEmail']").val() === "False") || $("input[name='isVisibleEmail']").val() === false) {
        isVisibleEmail = false;
    }

    if ($("input[name='isVisiblePhone']").length > 0 && ($("input[name='isVisiblePhone']").val() === "False") || $("input[name='isVisiblePhone']").val() === false) {
        isVisiblePhone = false;
    }

    if (($("input[name='isVisibleAge']").length > 0 && ($("input[name='isVisibleAge']").val() === "False") || $("input[name='isVisibleAge']").val() === false)
        || ($("input[name='isOverAgeActive']").length > 0 && ($("input[name='isOverAgeActive']").val() === "True") || $("input[name='isOverAgeActive']").val() === true)
        || ($("input[name='isFullHideActive']").length > 0 && ($("input[name='isFullHideActive']").val() === "True") || $("input[name='isFullHideActive']").val() === true)) {
        isVisibleAge = false;
    }

    if ($("input[name='isVisibleTeamCaptain']").length > 0 && ($("input[name='isVisibleTeamCaptain']").val() === "False") || $("input[name='isVisibleTeamCaptain']").val() === false) {
        isVisibleTeamCaptain = false;
    }

    $("#teamMember tr.newMember").each(function () {
        var name = $("#Mname-" + c).val();
        var last = $("#Mlast-" + c).val();

        var email = "";
        var phone = "";
        var age = 0;

        var capitan = this.checked;

        if (isVisibleEmail)
            email = $("#Memail-" + c).val();

        if (isVisiblePhone)
            phone = $("#Mphone-" + c).val();

        if (isVisibleAge)
            age = $("#Mage-" + c).val();

        if (bol && !addMoreMembersvalidate(name, email, phone, age, capitan, last, c, company, hasCustomRulesForFields, isVisibleEmail, isRequiredEmail, isVisiblePhone, isRequiredPhone, isVisibleAge, isRequiredAge))
            bol = false;
        if (bol && email != "")
            listemail += email + ";";        
        if (bol && last != "")
            bolfinish = true;
        if (!bol)
            bolfinish = false;
        c++;
    });
    if (listemail != ";" && bol) {
        bol = true;
        var formData = $('#form-add-more-members').serializeArray();
        $.ajax({
            type: "POST",
            data: formData,
            dataType: "json",
            url: urlSite + "unique-email-team/" + teamid,
            cache: false,
            timeout: 300000,
        }).done(function (data) {
            if (data["data"] == "2" || data["data"] == null) {
                bol = false;
                Swal.fire({
                    title: '',
                    text: window.translation.fatal_error_loading_information,
                    icon: 'error'
                });
            }
            if (data["data"] != null && data["data"] != "0") {
                bol = false;
                Swal.fire({
                    title: '',
                    text: window.translation.no_two_volunteers_same_email,
                    icon: 'error'
                });
            }
            if (bol && data["data"] == "0") {
                $("#processing_screen2").show();

                process_add_more_team_members_submit();

            } else {
                $("#buttonAddmoremembers").show();
                $("#processing_screen2").hide();
            }
        });
    } else {
        if (bolfinish) {
            $("#processing_screen2").show();
            process_add_more_team_members_submit();
        } else {
            $("#buttonAddmoremembers").show();
            $("#processing_screen2").hide();
        }
    }
}

function process_add_more_team_members_submit() {
    var securityKey = getClientSecurityKey();
    var recalculateToken = false;
    var formSelectorTeammembers = "form#form-add-more-members";

    if (securityKey != undefined) {
        // compare the current time vs the time when the token eas generated
        var initialTime = $(formSelectorTeammembers + ' input[name="user_response_time"]').val();
        var currentTime = new Date().getTime();

        var diff = currentTime - initialTime;

        if (diff > 90000)
            recalculateToken = true;
    }

    if (recalculateToken === true) {
        $(formSelectorTeammembers).find(".submit-button").attr("disabled", true);
        var actionName = $(formSelectorTeammembers + ' input[name="pageactioname"]').val();

        grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {
            if ($(formSelectorTeammembers + ' input[name="user_response"]').length > 0) {
                var currentTime = new Date().getTime();
                currentTime = currentTime + (24 * 60 * 60 * 1000);
                $(formSelectorTeammembers + ' input[name="user_response"]').val(token);
                $(formSelectorTeammembers + ' input[name="user_response_time"]').val(currentTime);
            }
            $("#bMoreMembers").click();
        });
    } else {
        $("#bMoreMembers").click();
    }
}
function addMoreMembersvalidate(name, email, phone, age, capitan, last, c, company, hasCustomRulesForFields, isEmailVisible, isEmailRequired, isPhoneVisible, isPhoneRequired, isAgeVisible, isAgerequired) {

    if ((name != "" || email != "" || phone != "" || age != "" || capitan) && last == "") {
        Swal.fire({
            title: '',
            text: window.translation.last_name_is_required_row + " " + c + ".",
            icon: 'error'
        });
        return false;
    }
    if ((name != "" || email != "" || phone != "" || age != "" || capitan) && name == "") {
        Swal.fire({
            title: '',
            text: window.translation.first_name_is_required_in_the_row + " " + c + ".",
            icon: 'error'
        });
        return false;
    }
    if (email != "" && !validateEmail(email)) {
        Swal.fire({
            title: '',
            text: window.translation.please_valid_email_row + " " + c + ".",
            icon: 'error'
        });
        return false;
    }
    if (last != "" && capitan && email == "") {
        Swal.fire({
            title: '',
            text: window.translation.designate_team_captain_without_email_row + " " + c + ".",
            icon: 'error'
        });
        return false;
    }
    if ((hasCustomRulesForFields === false || hasCustomRulesForFields === "False") && last != "" && email == "" && phone == "" && company == "") {
        Swal.fire({
            title: '',
            text: window.translation.please_email_phone_all_members,
            icon: 'error'
        });
        return false;
    }
    if (email != "" && last != "" && name !="") {
        var p = 1;
        var b1 = true;
        $("#teamMember tr.newMember").each(function () {
            if (email == $("#Memail-" + p).val() && c != p) {
                Swal.fire({
                    title: '',
                    text: window.translation.no_two_volunteers_same_email,
                    icon: 'error'
                });
                b1 = false;
                return false;
            }
            p++;
        });
        if (!b1)
            return false;
    }
    return true;
}




function deleteTeam(idteam) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    Swal.fire({
        title: "",
        text: window.translation.you_sure_delete_team,
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        cancelButtonText: window.translation.cancel,
        confirmButtonText: window.translation.yes_delete_it,
        closeOnConfirm: true,

    }).then(function (result) {
        if (result.isConfirmed) {
            $('.processing_screen').show();
            window.location.href = urlSite + 'delete-team/' + idteam;
        }
    });

}


function init_settings_for_corporate_partners_pages() {
    if ($('body.corporate-partners-page').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var invitationCode = $('#section-opportunities-for-corporate-partner').attr('data-invitation-code');
        if ($('#form-basic-search-filters-options').length > 0) {
            $("#form-basic-search-filters-options").submit(function (e) {
                e.preventDefault();
                $("#wait-message").addClass('positioned-top');
                $('html, body').animate({
                    scrollTop: $("#multiple-views").offset().top - 50
                }, 1000);
                $("#multiple-views").multipleViews("reloadData");
            });
            if ($("#form-basic-search-filters-options input[name='searchvo_invitation_code']").length == 0) {
                var input = '<input name="searchvo_invitation_code" type="hidden" value="' + $('#section-opportunities-for-corporate-partner').data('invitationCode') + '" >';
                $("#form-basic-search-filters-options").append(input);
            }
            var parameters = $('#form-basic-search-filters-options').data('parameters');
            if (parameters !== undefined && parameters.indexOf('searchvo_invitation_code') < 0) {
                parameters += 'searchvo_invitation_code';
                $('#form-basic-search-filters-options').data('parameters', parameters);
            }
        }
        $('.filtered-results-text .see_all').on('click', function (e) {
            var InvitationCode = $('input[name="searchvo_invitation_code"]').val();
            $('#form-basic-search-filters-options > .section.first .clear').click();
            $('input[name="searchvo_invitation_code"]').val(InvitationCode);
            $('#form-basic-search-filters-options').submit();
            return false;
        });
        if ($('#multiple-views').length > 0) {
            var url = window.location.href;
            var options = {
                dataUrl: urlSite + 'Partners/getOpportunitiesForCorporatePartner?partner-url=' + url,
                requestType: 'POST',
                requestData: function () {
                    var parameters = $('#form-basic-search-filters-options').data('parameters');
                    var data = $("#form-basic-search-filters-options").serializeFormCustom(parameters);
                    var rowsPerPage = window.rowPerPage;
                    if ($('.load_more_link').length > 0) {
                        rowsPerPage = parseInt($('.load_more_link').attr('data-length'));
                    }
                    data["length"] = rowsPerPage;
                    data["start"] = 0;
                    return data;
                },
                dataToViews: function () {
                    var viewsData = $("#multiple-views").multipleViews().viewsData;
                    var rowsPerPage = window.rowPerPage;
                    if ($('.load_more_link').length > 0) {
                        rowsPerPage = parseInt($('.load_more_link').attr('data-length'));
                    }
                    var dataToView = {
                        "data": viewsData.data,
                        "rowsPerPage": rowsPerPage,
                        "invitationCode": invitationCode
                    };
                    return dataToView;
                },
                views: [
                    {
                        id: "view-table-mode",
                        viewUrl: "/Partners/ViewTableMode",
                        default: false
                    },
                    {
                        id: "view-grid-mode",
                        viewUrl: "/Partners/ViewGridMode",
                        default: true
                    },
                    {
                        id: "view-calendar-mode",
                        viewUrl: "/Partners/ViewCalendarMode?partner-url=" + url,
                        default: false
                    }
                ],
                buttonsContainer: $("#multiple-views-buttons"),
                afterViewChange: function () {
                    init_datatable_for_corporate_partner();
                    var selfCalendar = $('#section-opportunities-for-corporate-partner .content-section-calendar');
                    if (selfCalendar !== null && selfCalendar !== undefined && selfCalendar.length > 0) {
                        var processingContainer = $('#section-opportunities-for-corporate-partner').find('.processing_screen.block_processing');
                        process_calendar_default_for_old(selfCalendar, false, processingContainer);
                    }

                    //initiate_full_calendar_widget(false);
                    //responsive_calendar();

                    hide_or_show_calendar_mobile_desktop();
                    init_load_more_button();
                    $("#wait-message").removeClass('positioned-top');
                },
                afterInit: function () {
                    init_datatable_for_corporate_partner();
                    init_load_more_button();
                },
                afterDataLoad: function () {
                    var viewsData = $("#multiple-views").multipleViews().viewsData;
                    $("#query-string-form").val(unescape(viewsData.queryString));
                    if (viewsData.widgetResponse != null) {
                        if (viewsData.InvitationCode != null) {
                            $('#form-basic-search-filters-options input[name="searchvo_invitation_code"]').val(viewsData.InvitationCode);
                        }
                        var data = viewsData.widgetResponse;
                        populate_multiselect('#form-basic-search-filters-options select[name="searchvo_serve_this_organization"]', "searchvo_serve_this_organization", data.organizationsServed.join('---'), false);
                        populate_multiselect('#form-basic-search-filters-options select[name="searchvo_population_served"]', "searchvo_population_served", data.populationsServed.join('---'), true);
                        populate_multiselect('#form-basic-search-filters-options select[name="searchvo_issue_area"]', "searchvo_issue_area", data.impactAreas.join('---'), true);
                        $('#form-basic-search-filters-options select[name="searchvo_serve_this_organization"]').multiselect('reload');
                        $('#form-basic-search-filters-options select[name="searchvo_population_served"]').multiselect('reload');
                        $('#form-basic-search-filters-options select[name="searchvo_issue_area"]').multiselect('reload');
                    } else {
                        populate_multiselect('#form-basic-search-filters-options select[name="searchvo_serve_this_organization"]', "searchvo_serve_this_organization", "", false);
                        populate_multiselect('#form-basic-search-filters-options select[name="searchvo_population_served"]', "searchvo_population_served", "", true);
                        populate_multiselect('#form-basic-search-filters-options select[name="searchvo_issue_area"]', "searchvo_issue_area", "", true);
                        $('#form-basic-search-filters-options select[name="searchvo_serve_this_organization"]').multiselect('reload');
                        $('#form-basic-search-filters-options select[name="searchvo_population_served"]').multiselect('reload');
                        $('#form-basic-search-filters-options select[name="searchvo_issue_area"]').multiselect('reload');
                    }
                    var hasFilters = false;
                    var parameters = $('#form-basic-search-filters-options').data('parameters');
                    var filters = $("#form-basic-search-filters-options").serializeFormCustom(parameters);
                    for (var i in filters) {
                        if (i != "searchvo_invitation_code" && i != "searchvo_zip" && filters[i] != null && filters[i] != "") {
                            hasFilters = true;
                            break;
                        }
                    }
                    if (hasFilters)
                        $('#section-opportunities-for-corporate-partner #filtered-results-text').removeClass('hide');
                    else
                        $('#section-opportunities-for-corporate-partner #filtered-results-text').addClass('hide');
                    if (viewsData.error != null) {
                        Swal.fire({
                            title: "",
                            text: viewsData.error,
                            icon: "error"
                        });
                    }
                }
            };
            $("#wait-message").show();
            $("#multiple-views").multipleViews(options);
        }
    }
    $('.invitation-code-inner-section input[name="searchvo_invitation_code"]').on('change', function () {
        var invitationCode = $(this).val();
        var searchId = $(this).data('search-id');
        if ($(this).parent().find('input[name="searchvo_invitation_code-' + searchId + '"]').length > 0) {
            $(this).parent().find('input[name="searchvo_invitation_code-' + searchId + '"]').val(invitationCode);
        }
    });
}

function init_datatable_for_corporate_partner() {
    if ($("#datatable-for-opps-w-invitation-code").length > 0 && $("#datatable-for-opps-w-invitation-code tbody tr td.dataTables_empty").length == 0) {
        datatable_add_cells_data_for_mobile_headers($("#datatable-for-opps-w-invitation-code")[0]);
        var pageLength = parseInt($('.load_more_link').attr('data-length'));
        var datatable = $('#datatable-for-opps-w-invitation-code')
        .DataTable({
            "bFilter": false,
            "bPaginate": true,
            "bLengthChange": false,
            "pageLength": pageLength,
            "order": [[3, "asc"]]
        });
    }
}

function init_load_more_button() {
    if ($('.load_more_link').length > 0) {
        $('.load_more_link').on("click", function (e) {
            var pageLength = parseInt($('.load_more_link').attr('data-length'));
            var newPageLength = pageLength + window.rowPerPage;
            $('.load_more_link').attr('data-length', newPageLength);
            $("#multiple-views").multipleViews("reloadData");
            return false;
        });
    }
}
function init_basic_search_filters_and_options() {
    if ($(".basic-search-filters-and-options").length !== 0) {
        $(document).on('click', 'fieldset.fieldset-step a.button-open', function () {
            var display = $('.additional-filters').css('display');

            if (display == 'block') {
                $('.additional-filters').hide('fast');
            }
            else {
                $('.additional-filters').show('fast', function () {
                    fix_label_middle_in_forms();
                });
            }
            return false;
        });
    }
}

var QueryString = function () {
    // This function is anonymous, is executed immediately and 
    // the return value is assigned to QueryString!
    var query_string = {};
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        // If first entry with this name
        if (typeof query_string[pair[0]] === "undefined") {
            query_string[pair[0]] = decodeURIComponent(pair[1]);
            // If second entry with this name
        } else if (typeof query_string[pair[0]] === "string") {
            var arr = [query_string[pair[0]], decodeURIComponent(pair[1])];
            query_string[pair[0]] = arr;
            // If third or later entry with this name
        } else {
            query_string[pair[0]].push(decodeURIComponent(pair[1]));
        }
    }
    return query_string;
}();
$.fn.serializeFormCustom = function (fields) {
    var o = {};
    var a = $(this).find("input,select").not("input[type='submit']").map(function () {
        if ((fields != null && fields.indexOf(this.name) == -1) || this.name == null || this.name == "") {
            return null;
        }
        var name = this.name;
        var value = null;
        var type = $(this).prop("type");
        if (type == "text" || type == "hidden") {
            value = this.value;
        }
        if (type == "checkbox") {
            if ($(this).is(":checked")) {
                value = this.value;
            }
        }
        if (type == "select-one") {
            value = this.value;
        }
        if (type == "select-multiple") {
            if ($(this).find("option:selected").length > 0) {
                var optionsArray = new Array();
                $(this).find("option:selected").each(function () {
                    optionsArray.push(this.value);
                });
                value = optionsArray.toString();
            } else {
                value = "";
            }
        }
        return { name: name, value: value };
    });
    $.each(a, function () {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};
$.fn.multipleViews = function (methodOrOptions) {
    var viewsData = null;
    var container = $(this);
    var translation = window.translation;

    var settings = {
        // These are the defaults.
        dataUrl: null,
        requestType: "GET",
        requestData: null,
        dataToViews: null,
        views: [],
        buttonsContainer: null,
        afterViewChange: null,
        afterInit: null,
        afterDataLoad: null,
        afterViewLoad: null
    };

    var loadData = function () {
        var requestData;
        if ($.isFunction(settings.requestData)) {
            requestData = settings.requestData();
        } else {
            requestData = settings.requestData;
        }
        return $.ajax({
            url: settings.dataUrl,
            type: settings.requestType,
            data: requestData,
            dataType: "json",
            beforeSend: function () {
                if (!$("#wait-message").is(':visible')) {
                    $("#wait-message").show();
                }
            },
            success: function (resultData) {
                viewsData = resultData;
                container.data("multipleViews", { settings: settings, viewsData: viewsData });
                if ($.isFunction(settings.afterDataLoad)) {
                    settings.afterDataLoad();
                }
            },
            error: function (jqXHR, textStatus, errorThrown) {
                $.error(errorThrown);
                container.html("<p>" + window.translation.error_loading_view + "</p>");
            }
        });
    };
    var renderView = function (viewId) {
        var view;
        if (viewId == null) {
            view = settings.views.filter(function (obj) {
                return obj.default == true;
            })[0];
            settings.buttonsContainer.find("#" + view.id + "").addClass("active");
        } else {
            view = settings.views.filter(function (obj) {
                return obj.id == viewId;
            })[0];
        }
        if (view == null) {
            $.error("multipleViews: View " + viewId + " is not defined in views list.");
            return null;
        }
        var dataToView;
        if ($.isFunction(settings.dataToViews)) {
            dataToView = settings.dataToViews();
        } else {
            dataToView = settings.dataToViews;
        }
        return $.ajax({
            url: view.viewUrl,
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(dataToView),
            beforeSend: function () {
                if (!$("#wait-message").is(':visible')) {
                    $("#wait-message").show();
                }
            },
            success: function (result) {
                container.html(result);
                if (viewId != null) {
                    if ($.isFunction(settings.afterViewChange)) {
                        settings.afterViewChange();
                    }
                }
                if ($.isFunction(settings.afterViewLoad)) {
                    settings.afterViewLoad();
                }

                $("#wait-message").hide();
            },
            error: function (jqXHR, textStatus, errorThrown) {
                $.error(errorThrown);
                container.html("<p>" + window.translation.error_loading_view + "</p>");
            }
        });
    };
    var init = function () {
        settings = $.extend(settings, methodOrOptions);
        $.when(loadData()).done(function (a1) {
            $.when(renderView(null)).done(function (b1) {
                if ($.isFunction(settings.afterInit)) {
                    settings.afterInit();
                }
            });
        });
        settings.buttonsContainer.find("a").on("click", function (e) {
            e.preventDefault();
            if ($(this).hasClass("active")) {
                return false;
            }
            $("#wait-message").addClass('positioned-top');
            var viewId = $(this).prop("id");
            settings = container.data("multipleViews").settings;
            viewsData = container.data("multipleViews").viewsData;
            renderView(viewId);
            settings.buttonsContainer.find(".active").removeClass("active");
            settings.buttonsContainer.find("#" + viewId + "").addClass("active");
        });
    };

    var methods = {
        reloadData: function () {
            $.when(loadData()).done(function (a1) {
                var currentView = settings.buttonsContainer.find("a.active").prop("id");
                $.when(renderView(currentView)).done(function (b1) {
                });
            });
        }
    };

    if (methods[methodOrOptions]) {
        var data = $(this).data("multipleViews");
        if (data != null) {
            settings = $(this).data("multipleViews").settings;
            methods[methodOrOptions]();
        }
    } else if (typeof methodOrOptions === 'object') {
        init();
    } else if (!methodOrOptions) {
        var data = $(this).data("multipleViews");
        if (data != null) {
            return data;
        }
    } else {
        $.error('Method ' + methodOrOptions + ' does not exist on jQuery.multipleViews');
    }
};

$(document).ready(function () {
    var isSelectTeam = false;
    $("#checkall").click(function () {
        isSelectTeam = !isSelectTeam;
        if (isSelectTeam) {
            $(".member-participate").prop("checked", true);
            $(".member-participate").attr("checked", true);
        } else {
            $(".member-participate").prop("checked", false);
            $(".member-participate").attr("checked", true);
        }
    });
    $(".member-participate").click(function () {
        isSelectTeam = true;
        $('.member-participate').each(function () {
            if (!this.checked)
                isSelectTeam = false;
        });
        if (isSelectTeam) {
            $("#checkall").prop("checked", true);
            $("#checkall").attr("checked", true);
        } else {
            $("#checkall").prop("checked", false);
            $("#checkall").attr("checked", true);
        }
    });
});

function updateteamMembers(opcion) {
    var bol = false;
    var cont = 0;
    $("#team input[type='checkbox'].member-participate").each(function () {
        if (this.checked && cont != -1)
            bol = true;
        cont++;
    });
    if (!bol) {
        if (opcion == 1)
            Swal.fire({
                title: '',
                text: window.translation.use_button_remove_member,
                icon: 'warning'
            });
        if (opcion == 2)
            Swal.fire({
                title: '',
                text: window.translation.use_button_captain_member,
                icon: 'warning'
            });
    } else {
        if (opcion == 1) { //Remove Team
            cont = 0;
            var mecap = 0;
            var ca = 0;
            $("#team input[type='checkbox'].member-participate").each(function () {
                if (cont != -1) {
                    if ($("#iscaptain-" + cont).val() == true)
                        ca++;
                    if (this.checked && $("#iscaptain-" + cont).val() == "1")
                        mecap++;
                }
                cont++;
            });
            if (ca - mecap == 0) {
                Swal.fire({
                    title: '',
                    text: window.translation.least_one_team_captain_remain_team,
                    icon: 'error'
                });
                bol = false;
            }
            if (bol) {
                bol = false;
                Swal.fire({
                    title: "",
                    text: window.translation.you_sure_remove_member_team,
                    type: "warning",
                    showCancelButton: true,
                    confirmButtonColor: "#DD6B55",
                    cancelButtonText: window.translation.cancel,
                    confirmButtonText: window.translation.yes,
                    closeOnConfirm: true

                }).then(function (result) {

                    if (result.isConfirmed) {
                        $('.processing_screen').show();
                        $("#accion").val(1);
                        $("#update-team-members").submit();

                    }
                });
            }
           
        }
        if (opcion == 2) { //Make Captain
            bol = false;
            cont = -1;
            $("#team input[type='checkbox'].member-participate").each(function () {
                if (cont != -1 && this.checked && $("#email-" + cont).val() == "")
                    bol = true;
                cont++;
            });
            if (bol) {
                Swal.fire({
                    title: '',
                    text: window.translation.email_required_member_promoted_captain,
                    icon: 'error'
                });
            } else {
                $("#accion").val(2);
                $('.processing_screen').show();
                $("#update-team-members").submit();
                
            }
        }
    }
}

function validate_team_questions() {
    if ($('#opp-signup-team-members').length > 0) {
        var preRequisitesData = localStorage.getItem('signup-team-prerequisites');
        if (preRequisitesData != undefined && preRequisitesData != '' && preRequisitesData != null) {
            $('#opp-signup-team-members input[name="visitedOpportunitiesWithPrerequisite"]').val(preRequisitesData);
            localStorage.removeItem('signup-team-prerequisites');
        }


        if ($('#opp-signup-team-members button#button-opp-signup-team').length > 0) {
            $('#opp-signup-team-members button#button-opp-signup-team').click(function (e) {
                var formObject = $('#opp-signup-team-members');
                var valid = partial_validate_personal_information(formObject, true);
                if (valid === false) {
                    e.preventDefault();

                    //Remove error validation when an option is selected in additional question
                    if ($('.row.question .radio-button-error').length > 0) {
                        $('.input-group-radiobutton input[type="radio"]').on('click', function (e) {
                            $(this).parent().parent().parent().find('.radio-button-error').remove();
                        });
                    }

                    if ($('.row.question .checkbox-error').length > 0) {
                        $('.input-group-checkbox input[type="checkbox"]').on('click', function (e) {
                            if ($(this).is(':checked')) {
                                $(this).parent().parent().find('.checkbox-error').remove();
                            }
                        });
                    }
                    
                }
            });

        }
    }
}

function validator_detailed_age(main_input, min_age, current_age, error_message){
    
    var label_error = main_input + "-error";
    var result = true;

    if(current_age < min_age){
        result =false;
        $("#"+main_input).addClass('error');        
        var html = "<label class='error' id='"+label_error+"' name='"+label_error+"'>"+error_message+"</label>";
        if($("#"+label_error).length > 0){
            $("#"+label_error).remove();
            $("#"+main_input).parent().append(html);
        }
        else{
            $("#"+main_input).parent().append(html);
        }

        if ($("#"+label_error+" span").attr('data-tooltip') != ''){
            if ($('.tooltip').length > 0) {
                $('.tooltip').remove();
            }
        }

        $('#'+label_error).find('span.has-tip').foundation();

    }
    else{
        $("#"+main_input).removeClass('error');
        if($("#"+label_error).length > 0){
            $("#"+label_error).remove();
        }
    }
    return result;
}

function validation_min_age_personal_information(){
    
    var result = true;
    if ($('#personal-information-form').length !== 0) {
            var age_mode = $('#age_mode').val();
                var valueDate = $('#date_of_birth').val();
                if(valueDate!=''){
                    var current_age = moment().diff(moment(valueDate, "YYYY-M-D", true), "years");
                    var inputName = "";
                    if(age_mode ==""){
                        inputName = "select-month";
                    }
                    else if (age_mode=="year_only"){
                        inputName = "select-year";
                    }
                     if(inputName!='') {  
                         var no_validate_min_age = $('#'+inputName).data('no-validate-min-age');
                        var validate_age = no_validate_min_age == "False";
                        if(validate_age){
                            var minimumAge = $('#'+inputName).data("min-age-allowed");
                            var min_age = 13;
                            if (minimumAge !== undefined && minimumAge !== null && $.trim(minimumAge) !== '') {
                                min_age = parseInt(minimumAge);
                            } 
                            var error_message = $('#'+inputName).attr('data-min-age');
                            result = validator_detailed_age(inputName, min_age, current_age, error_message);                            
                        }
                    }
                }
            
    }
    return result;
}

function validate_phone_number_personal_information() {
    if ($('#personal-information-form').length !== 0) {
        
        if ($("fieldset[data-title-fieldset='sms_information']").length > 0) {
            $("fieldset[data-title-fieldset='sms_information']").find("input[type='checkbox']").click(function () {
                if ($(this).is(':checked')) {
                    $(this).parents('.row').find('label[for="mobile_phone"]').addClass("required").attr("data-required","*");
                    $("input[name='MobilePhone']").rules("add", {
                        required: true,
                        messages: {
                            required: window.translation.error_required_field.replace("{0}", window.translation.mobile_phone),
                        }
                    });
                } else {
                    $(this).parents('.row').find('label[for="mobile_phone"]').removeClass("required").attr("data-required", "");
                    $("input[name='MobilePhone']").rules("remove", "required");
                }
            });
        }

        $('#personal-information-form button[name=btn-save], #personal-information-form button[name=btn-save-skills]').click(function (e) {
            var formObject = $('#personal-information-form');
            var valid = partial_validate_personal_information(formObject, false);
            if (valid === false) {
                e.preventDefault();
            }

            var emailElement = formObject.find('input.email-field');
            if (valid === true && emailElement !== undefined) {
                if (emailElement.data('original-value') !== $.trim(emailElement.val())) {
                    e.preventDefault();
                    sessionStorage.setItem('btn-trigger-action', $(this).attr('name'));

                    var triggerElementName = $(this).attr('name');

                    var exist = $('#personal-information-form .action-trigger-click').length;
                    if (exist > 0) {
                        $('#personal-information-form .action-trigger-click').val(triggerElementName);
                    } else {
                        $('#personal-information-form').append("<input type='hidden' name='trigger-action' id='trigger-action' value='" + triggerElementName + "' class='action-trigger-click' />");
                    }


                    is_needed_verification_code_hoc('#personal-information-form', false);
                }
            }
        });

        $('#personal-information-form').submit(function (e) {

            return true;
        });
    }
}

function partial_validate_personal_information(formObject, team_page) {
    var valid = true;
    var currentScrollTopUser = $(document).scrollTop();
    var topLabelError = 0;

    //Get checkboxes required and validate if are checked
    formObject.find("input[type='checkbox'][data-required='true']").each(function (item) {
        var name_checkbox = $(this).attr("name");
        var is_checked = false;
        $("form input[name='" + name_checkbox + "']").each(function () {
            if ($(this).prop('checked') === true) {
                is_checked = true;
            }
        });
        if (is_checked === false) {
            var spanRequired = "<div class='small-12 checkbox-error columns'><label class='error-custom'>" + translation.field_required + "</label></div>";

            if ($(this).parent().parent().find('label.error-custom').length === 0) {
                $(this).parent().parent().append(spanRequired);
            }
            valid = false;
        }
    });

    //Get radios required and validate if are checked
    formObject.find("input[type='radio'][data-required='true']").each(function (item) {
        var name_radio = $(this).attr("name");
        var is_checked = false;
        $("form input[name='" + name_radio + "']").each(function () {
            if ($(this).prop("checked") === true) {
                is_checked = true;
            }
        });
        if (is_checked === false) {
            var spanRequired = "<div class='small-12 radio-button-error columns'><label class='error-custom'>" + translation.field_required + "</label></div>";
            if ($(this).parents(".row").first().find('label.error-custom').length === 0) {
                $(this).parents(".row").first().append(spanRequired);
            }
            valid = false;
        }
    });
    //Get radios required and validate if are checked
    formObject.find(".day-widget[data-required='true']").each(function (item) {
        var is_checked = false;
        var widget = $(this);
        $(this).find("input[type='checkbox']").each(function () {
            if ($(this).prop('checked') === true) {
                is_checked = true;
            }

            $(this).change(function () {
                if ($(this).prop('checked') === true) {
                    is_checked = true;
                    widget.first().find(".error-custom").remove();
                }
            });
        });
        if (is_checked === false) {
            var spanRequired = "<div style='margin-top: 10px;' class='small-12 columns'><label class='error-custom'>" + translation.field_required + "</label></div>";
            if ($(this).find('label.error-custom').length === 0) {
                widget.first().append(spanRequired);
            }
            valid = false;
        } else {
            widget.first().find(".error-custom").remove();
        }
    });


    //Get multiselects required and validate if exist almost one selected
    if (team_page === false) {
        formObject.find("select[multiple='multiple']").each(function (item) {
            if ($(this).attr("data-required") == "true") {
                let currentVal = $(this).val();

                if (!currentVal || (currentVal =='')) {
                    valid = false;
                } 
            }
        });

        formObject.find("select").each(function (item) {
            if ($(this).attr("data-required") == "true" && !$(this).is(":hidden")) {
                if (!$(this).val()) {
                    valid = false;
                }
            }
        });
    }

    //Validate input-number-phone
    if (formObject.find('input[data-type="phone"]').length !== 0) {
        formObject.find('input[data-type="phone"]').each(function (item) {
            var telInput = $(this).get(0);
            var name = $(this).attr("name");

            var iti = window.intlTelInputGlobals.getInstance(telInput);

            if ($.trim(iti.getNumber())) {
                if (!iti.isValidNumber()) {
                    var spanRequired = "<label class='error-custom'>" + translation.please_complete_valid_phone + "</label>";

                    if ($(this).parents(".row").first().find('label.error-custom').length === 0) {
                        $(this).parents(".intl-tel-input").first().append(spanRequired);
                    }
                    if ($("form input[name='international_" + name + "']").length > 0) {
                        $("form input[name='international_" + name + "']").val("");
                    }
                    valid = false;
                } else {
                    if ($("form input[name='international_" + name + "']").length > 0) {
                        $("form input[name='international_" + name + "']").val(iti.getNumber());
                    }
                }
            }
            //Assign extension of country to hidden field
            if ($("input#" + name + "-ext").length !== 0) {
                var valueExtension = $(this).parent().find(".iti__selected-flag").attr("title").split(":")[1].trim();

                $("input#" + name + "-ext").val(valueExtension);
            }

        });
    }
    
    //Validate if exist labels with error
    if(!formObject.valid() || valid == false) {
        //Display fieldset with label error
        if(formObject.find('label.error').length > 0 || formObject.find('label.error-custom').length > 0) {
            formObject.find('label.error').each(function() {
                var fieldset = $(this).parents('fieldset').first();

                //Open if fieldset is hidden
                if(fieldset.find('.fieldset-content').is(':visible') == false) {
                    fieldset.find('.fieldset-title').find('button').trigger('click');
                }
            });
            formObject.find('label.error-custom').each(function() {
                var fieldset = $(this).parents('fieldset').first();

                //Open if fieldset is hidden
                if(fieldset.find('.fieldset-content').is(':visible') == false) {
                    fieldset.find('.fieldset-title').find('button').trigger('click');
                }
            });
        }

        if (formObject.find('label.error:visible').length > 0) {
            topLabelError = formObject.find('label.error:visible').first().offset().top;
        }
        else if (formObject.find('label.error-custom:visible').length > 0) {
            topLabelError = formObject.find('label.error-custom:visible').first().offset().top;
        }

        if(currentScrollTopUser != topLabelError) {
            $('body,html').animate({
                scrollTop: topLabelError - 200,
            }, 500);
        }
    }

    
    if(!validation_min_age_personal_information()){
        valid=false;
    }

    return valid;
}

function sendEmailTeamMembers() {
    var cont = 0;
    var name = "";
    var id = $('#idteam').val();
    $("#team input[type='checkbox'].member-participate").each(function () {
        if (this.checked && cont != -1) {
            if ($("#email-" + cont).val() != null && $("#email-" + cont).val() != "") {
                if (name == "")
                    name = $("#name-" + cont).val();
                else
                    name += ", " + $("#name-" + cont).val();
                id += "/" + $("#check-" + cont).val();
            }
        }
        cont++;
    });
    document.getElementById('emailTo').innerHTML = "<label><strong>" + window.translation.label_to + " </strong>" + name + "</label>";
    $('#emailList').val(id);

    if (name == "")
        Swal.fire({
            title: '',
            text: window.translation.to_send_email_select_on_team_member,
            icon: 'warning'
        });
    else {        
        $('#email-reveal').click();
    }
}

function removemefromteam(id) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    Swal.fire({
        title: "",
        text: window.translation.you_sure_remore_yourself,
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        cancelButtonText: window.translation.cancel,
        confirmButtonText: window.translation.yes_remove_it,
        closeOnConfirm: true

    }).then(function (result) {
        if (result.isConfirmed) {
            $('.processing_screen').show();
            window.location.href = urlSite + 'removeme-team/' + id;

        }
    });

}

function removemefromConnection(id) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    Swal.fire({
        title: "",
        text: window.translation.you_sure_remore_yourself,
        type: "warning",
        showCancelButton: true,
        confirmButtonColor: "#DD6B55",
        cancelButtonText: window.translation.cancel,
        confirmButtonText: window.translation.yes_remove_it,
        closeOnConfirm: true
    }).then(function (result) {
        if (result.isConfirmed) {
            $('.processing_screen').show();
            window.location.href = urlSite + 'removeme-connection/' + id;

        }
    });
}

function edit_volunteer_opportunity_page() {
    if ($("body.edit-volunteer-opportunity").length > 0) {
        $("#LocationId option[value='-1']").remove();
    }
}

function skillPageSlider() {
    if ($("#skillsform").length > 0) {
        $('.slider, slider-handle').hover(function () {
            var btnId = "#" + $(this).attr('id').replace('skSlider', 'bu');           
            if ($(this).find('input').val() > 0)
                $(btnId).show();
            else
                $(btnId).hide();
        }, function () {
            var btnId = "#" + $(this).attr('id').replace('skSlider', 'bu');
            if ($(this).find('input').val() > 0)
                $(btnId).show();
            else
                $(btnId).hide();
        });

        $('.slider, slider-handle').on('mouseup.zf.slider', function (e) {

            var btnId = "#" + $(this).attr('id').replace('skSlider', 'bu');           
            if ($(this).find('input').val() > 0)
                $(btnId).show();
            else
                $(btnId).hide();
        });

        $('.slider, slider-handle').on('changed.zf.slider', function (e) {
            var item = $(e.currentTarget).find('.slider-handle');
            var valuenow = item.attr('aria-valuenow');
            if (valuenow === '0' || valuenow === 0) {
                item.attr('aria-label', 'None Value selected');
            }
            else if (valuenow === '25' || valuenow === 25) {
                item.attr('aria-label', 'Low value Selected');
            }
            else if (valuenow === '50' || valuenow === 50) {
                item.attr('aria-label', 'Medium value Selected');
            }
            else if (valuenow === '75' || valuenow === 75) {
                item.attr('aria-label', 'High value Selected');
            } else {
                item.attr('aria-label', 'Expert value Selected');
            }
        });
    }
}

function mixTeamPage() {
    $('#button_select_team').on('click', function () {
        if ($('#choose_team_id').val() != "") {
            //Get if site is sharingPortalPlus
            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

            $("#teamMember").DataTable().destroy();
            $("#choose_team_name").html($('#choose_team_id option:selected').text());
            $('<div class="loading">Loading</div>').appendTo('body');
            $('#choose_team_members').show();
            $('#idteam').val($('#choose_team_id').val());
            var isAnonymousReserveSlotsActivated = $('#isAnonymousReserveSlotsActivated').val()
            var cont = -1;
            $('.processing_screen').show();

            table = $('#teamMember').DataTable({
                "ajax": urlSite + 'opportunity-signup-team-members-list/' + $('#choose_team_id').val() + '?anonymousActivated=' + isAnonymousReserveSlotsActivated,
                "bFilter": false,
                "bLengthChange": false,
                "paging": false,
                "warning": false,
                "iDisplayLength": -1,
                "columnDefs": [
                    {
                        "targets": [0],
                        "width": "1%",
                        "orderable": false,
                        "render": function (data, type, row) {
                            cont++;
                            var is_myconnection = false;
                            var meetFlagPosition = row.length -1;

                            if (cont == 0) {
                                $('#myteamid').val(data);
                            }
                           
                            var disabled = "";
                            var checked = "";
                            var classCurrentVol = "";

                            if (meetFlagPosition >= 0 && row[meetFlagPosition] === "False" || row[meetFlagPosition] === false)
                                disabled = " disabled";
                            else if (row[1].indexOf("(Y)") >= 0) {
                                checked = " checked";
                                classCurrentVol = " current-volunteer";
                                row[1] = row[1].replace("(Y)", "");

                            }

                            var cssClass = (row[meetFlagPosition] == "True") ? "meet-requirements" : "";
                            var htmlToReturn = '<input type="checkbox" class="member-participate' + classCurrentVol + ' ' + cssClass + '" name="confirmed-' + cont + '"  value="' + data + '" ' + disabled + checked + ' data-element-id="' + cont + '"  >';
                                htmlToReturn += '<input type="hidden" name="meet-requirements-' + cont + '" id="meet-requirements-' + cont + '" value="' + row[meetFlagPosition] + '" />';
                                return htmlToReturn;
                        },
                    }
                ],
                initComplete: function (settings, json) {
                    $('div.loading').remove();
                    $('.processing_screen').hide();
                    $(".member-participate").change(function () {
                        var elementId = $(this).data('element-id');

                        if (!this.checked) {
                            $("#selectall-member-team").prop("checked", false);
                            $("#selectall-member-team").attr("checked", true);
                            isSelectCol = false;
                            
                            if ($('#slots-' + elementId).length > 0) 
                            {
                                $('#slots-' + elementId).attr('disabled', 'disabled');
                            }

                        } else {
                            isSelectCol = true;
                            $('.member-participate').each(function () {
                                if (!this.checked)
                                    isSelectCol = false;
                            });
                            if (isSelectCol) {
                                $("#selectall-member-team").prop("checked", true);
                                $("#selectall-member-team").attr("checked", true);
                            } else {
                                $("#selectall-member-team").prop("checked", false);
                                $("#selectall-member-team").attr("checked", true);
                            }

                            if ($('#slots-' + elementId).length > 0 && $('#meet-requirements-'+ elementId).val().toLowerCase()==="true") {
                                $('#slots-' + elementId).removeAttr('disabled');
                            }
                        }

                        checkMemberOcc();
                    });

                    
                    if ($('input.reserved-slots').length > 0) {

                        $('input.reserved-slots').on('change', function () {
                            if (!checkMemberOcc()) {
                                $(this).val('');
                            }
                        });
                    }

                    $('#teamcont').val($("#teamMember input[type='checkbox']").length - 1);

                    if ($('#autoselectTeam').length > 0 && $('#autoselectTeam').val() != '') {
                        $('#autoselectTeam').val('');
                        $("#selectall-member-team").attr("checked", true);
                        $('#selectall-member-team').trigger('click');
                        if ($('#additional_questions .row.question').length === 0 && $('input.reserved-slots').length === 0) {
                            $("#button-opp-signup-team").trigger('click');
                        }
                    }

                },
                fnDrawCallback: function (oSettings) {
                    datatable_add_cells_data_for_mobile_headers(this);
                }
            });

        } else {
            $('#choose_team_members').hide();
        }
    });

    var isSelectCol = false;
    $("#selectall-member-team").click(function () {
        isSelectCol = !isSelectCol;
        if (isSelectCol) {
            $(".member-participate.meet-requirements").prop("checked", true);
            $(".member-participate.meet-requirements").attr("checked", true);
            $(".reserved-slots.meet-requirements").removeAttr("disabled");
            
        } else {
            $(".member-participate.meet-requirements").prop("checked", false);
            $(".member-participate.meet-requirements").attr("checked", true);
            $(".reserved-slots.meet-requirements").attr("disabled", "disabled");
        }
        checkMemberOcc();
    });

    if ($('#autoselectTeam').length > 0 && $('#autoselectTeam').val()!='') {
        if ($('#choose_team_id option[value="' + $('#autoselectTeam').val() + '"]').length > 0) {
            $('#choose_team_id').val($('#autoselectTeam').val());
            $('#button_select_team').trigger('click');
        }
        else {
            $('#autoselectTeam').val('');
        }
    }
}

function checkMemberOcc() {
    var stillNeeded = $('#volunteersStillNeeded').val();
    var total = 0;
    var withReservedSlots = false;
    if ($('input.reserved-slots').length > 0) {
        withReservedSlots = true;;
        $('input.reserved-slots').each(function () {
            if ($(this).val() != '') {
                var captainValue = Number($(this).val());
                total = total + captainValue;
            }
        });
    }

    $('.member-participate').each(function () {
        if (this.checked)
            total++;
    });
    if (total > 99) {
        var message = window.translation.team_signup_cannot_be_larger;
        Swal.fire("", message, "error");
        return false;
    }
    
    if (total > stillNeeded) {
        var message = window.translation.team_maximum_attendance;
        if (withReservedSlots) {
            message = window.translation.alert_spots_available;
        }
        message = message.replace('"Y"',total.toString());
        message = message.replace('"X"', stillNeeded.toString());
        message = message.replace('"X"', stillNeeded.toString());
        Swal.fire("", message, "error");
        return false;
    }
    return true;
}


function waitingTeam() {
    $("#createanewteam").on('click','#bCreateTeam',function (event) {
        var InvalidRows = validate_team_members_before_create();
        if ($("#createanewteam").valid() && InvalidRows === 0) {
            $('.processing_screen').show();

            var securityKey = getClientSecurityKey();
            var recalculateToken = false;
            if (securityKey != undefined) {
                // compare the current time vs the time when the token eas generated
                var initialTime = $('form#createanewteam input[name="user_response_time"]').val();
                var currentTime = new Date().getTime();
                var diff = currentTime - initialTime;

                if (diff > 90000)
                    recalculateToken = true;
            }

            if (recalculateToken === true) {
                var actionName = $('form#createanewteam input[name="pageactioname"]').val();

                grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {

                    if ($('form#createanewteam input[name="user_response"]').length > 0) {
                        var currentTime = new Date().getTime();
                        currentTime = currentTime + (24 * 60 * 60 * 1000);
                        $('form#createanewteam input[name="user_response"]').val(token);
                        $('form#createanewteam input[name="user_response_time"]').val(currentTime);

                    }
                    $('#createanewteam').submit();
                });

            } else {
                $('#createanewteam').submit();
            }
        } else {
            if (("form#createanewteam input.error").length > 0)
                $("form#createanewteam input.error").first().focus();

        }        
    });
    $("#send-email-team-members").submit(function () {
        $("#butEmail").hide();
        $('#processing_screen3').show();
    });
    $("#button-opp-signup-team").click(function (e) {
        // validating if there is ars team data
        var arsSignupTeam = JSON.parse(localStorage.getItem('ars-signup-type'));
        if (arsSignupTeam !== null && arsSignupTeam.sid != "" && arsSignupTeam.wid != "" && (arsSignupTeam.signupType === "Team Only" || arsSignUpteam.signupType === "Both" || arsSignupTeam.signupType === undefined)) {
            var id= arsSignupTeam.sid
            var  wid = arsSignupTeam.wid
            var workflowData = localStorage.getItem('signup-branch-logic-form-data-'+id+'-wr-'+wid);
            if(workflowData !== null) {
                $('input#arsTeamWorkflow').val(workflowData);
            }
        }
        if (checkMemberOcc()) {
            if ($("#opp-signup-team-members").valid() && $("#opp-signup-team-members").find("label.error-custom").length === 0 && $('#opp-signup-team-members input[name="membersaddedinternally"]').length == 0) {

                var teamMembersSelected = $('input.member-participate:checked').length;
                var currentVolunteerSelected = $('input.current-volunteer:checked').length;
                var allCheckSelected = $('input#selectall-member-team:checked').length;
                var totalSelected = $('#teamMember td input[type=checkbox]:checked').length;
                var totalAnonymous = 0;

                $('#teamMember td input[type=number].reserved-slots').each(function () {
                    totalAnonymousCaptain = 0;
                    if ($(this).val() != '') {
                        totalAnonymousCaptain = Number($(this).val());
                    }
                    totalAnonymous += Number(totalAnonymousCaptain);
                });
                
                var isAnonymousReserveSlotsActivated = $('#isAnonymousReserveSlotsActivated').val() === "True";
                var warningMessage = "";
                if (isAnonymousReserveSlotsActivated) {
                    if (allCheckSelected == 1) {
                        warningMessage = window.translation.team_singup_all_confirmation_anonymous;
                        warningMessage = warningMessage.replaceAll('{0}', totalSelected);
                        warningMessage = warningMessage.replaceAll('{1}', totalAnonymous);
                    }
                    else if (currentVolunteerSelected && teamMembersSelected == 1) {
                        warningMessage = window.translation.team_singup_none_confirmation_anonymous;
                        warningMessage = warningMessage.replaceAll('{0}', totalAnonymous);
                    }
                    else if (teamMembersSelected > 0) {
                        warningMessage = window.translation.team_singup_confirmation_anonymous;
                        warningMessage = warningMessage.replaceAll('{0}', totalSelected);
                        warningMessage = warningMessage.replaceAll('{1}', totalAnonymous);
                    }
                }
                else {
                    if (allCheckSelected == 1) {
                        warningMessage = window.translation.team_singup_all_confirmation_message;
                        warningMessage = warningMessage.replaceAll('{0}', totalSelected);
                    }
                    else if (currentVolunteerSelected && teamMembersSelected == 1) {
                        warningMessage = window.translation.team_singup_none_confirmation_message;
                    }
                    else if (teamMembersSelected > 0) {
                        warningMessage = window.translation.team_singup_confirmation_message;
                        warningMessage = warningMessage.replaceAll('{0}', totalSelected);
                    }
                }
                if (warningMessage != '') {
                    Swal.fire({
                        title: "",
                        html: warningMessage,
                        icon: "info",
                        showCancelButton: true,
                        cancelButtonText: window.translation.cancel,
                        confirmButtonText: window.translation.continue_text,
                        closeOnConfirm: true,
                        
                    }).then(function (result) {
                        if (result.isConfirmed) {
                            $('.processing_screen').show();
                            $("#opp-signup-team-members").submit();

                        }
                    });

                }
                else {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: window.translation.please_select_a_member,
                        confirmButtonText: "Ok",
                    });
                }
            } else if ($("#opp-signup-team-members").valid() && $("#opp-signup-team-members").find("label.error-custom").length === 0 && $('#opp-signup-team-members input[name="membersaddedinternally"]').length > 0 && $('#opp-signup-team-members input[name="membersaddedinternally"]').val() == "1") {
                $("#opp-signup-team-members").submit();
            }
        }
    });
    $("#report-form").submit(function (event) {
        if ($("#report-form").valid()) {
            $("#butSelfReport").hide();
            $('.processing_screen').show();
        }
    });
    
}

function create_new_team_page() {
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
    if($('body.create-new-team-page').length > 0){
        datatable_add_cells_data_for_mobile_headers(document.getElementById("teamMember"));
        addAdditionalAttributesToMenmbers();

        if ($("#" + instancePrefix + "Type_of_Group__c").length > 0 && $("#" + instancePrefix + "Type_of_Group__c").val() == "Family & Friends" && $(".normal-company-field").length > 0) {
            $(".normal-company-field").show();
            if ($(".select-list-organization").length > 0 && $("#organizationSelect").length > 0) {
                $("#organizationSelect").hide();
            }
        } else {
            $(".normal-company-field").hide();
            if ($(".select-list-organization").length > 0 && $("#organizationSelect").length > 0) {
                $("#organizationSelect").select2({
                    "language": {
                        "noResults": function () {
                            return "Can't find your organization?  <a class='click-here'>Click here to enter a new organization</a>";
                        }
                    },
                    escapeMarkup: function (markup) {
                        return markup;
                    }
                });
            }

            $("body").on("click", ".click-here", function () {
                var select2dropdown = $("#organizationSelect");
                var orgName = select2dropdown.data('select2').$dropdown.find("input").val();
                select2dropdown.select2("val", "");
                select2dropdown.select2("close");
                select2dropdown.val('').trigger('change');
                $(".select-list-organization").toggle("fast");
                $(".normal-company-field").toggle("fast");
                $(".normal-company-field #Company").val(orgName);
                $(".normal-company-field #Company").focus();
            });
        }

        if ($("#" + instancePrefix + "Type_of_Group__c").length > 0) {
            $("#" + instancePrefix + "Type_of_Group__c").on("change", function () {
                if ($(this).val() == "Family & Friends" && $(".normal-company-field").length > 0) {
                    $(".normal-company-field").show();
                    $(".select-list-organization").hide();
                    $(".search-again").hide();
                } else {
                    if ($(".select-list-organization").is(":hidden")) {
                        $(".normal-company-field").hide();
                        $(".select-list-organization").show();
                        $(".search-again").show();
                    }
                }
            });
        }

        if ($(".sharing-portal-form").length > 0) {
            $(".submit-group a.submit-button").hide();
            $(".label-section").each(function () {
                $(this).removeClass("medium-4").addClass("medium-5");
            });
            $(".fields-section").each(function () {
                $(this).removeClass("medium-8").addClass("medium-7");
            });
        }
    }
}


function addAdditionalAttributesToMenmbers() {

   /* var isEmailRequired = false;

    verifyTeamMembersFields('isRequiredEmail', 'email-');
    verifyTeamMembersFields('isRequiredEmail', 'email-');*/

}

function verifyTeamMembersFields(booleanField, prefixName) {
    var selector = "input[name='" + booleanField + "']";
    if ($(selector).length > 0 && ($(selector).val() === "True") || $(selector).val() === true) {
        isEmailRequired = true;


        $("form#createanewteam input[name^='" + prefixName + "']").each(function (it) {

            $(this).attr("data-required", true);
            $(this).attr("data-val", true);
            $(this).attr("data-val-required", "The Name field is required.");


        });
    }
}
function background_check_page() {
    if ($('body.background-check-page').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        var packageSelectedText = $('#packageIdSelected option:selected').text();
        var splitted = packageSelectedText.split("(");
        if (splitted[1] != null) {
            $(".step-2").not(".opacity").find(".center-box strong").html(splitted[0]);
            $(".step-2").not(".opacity").find(".center-box span").html("(" + splitted[1]);
        } else {
            $(".step-2").not(".opacity").find(".center-box strong").html(packageSelectedText);
        }

        //$("a[name='start']").on("click", function () {
        //    $.ajax(urlSite + 'VerifiedVolunteers/set-session')
        //    .done(function (resp) {
        //        location.reload();
        //    });
        //});

        //$("a[name='new-level']").on("click", function (ev) {
        //    ev.preventDefault();
        //    $.ajax(urlSite + 'VerifiedVolunteers/new-level')
        //    .done(function (resp) {
        //        location.reload();
        //    });
        //});
    }
}

function after_translation_resource_load_volunteer_portal(){
    //Self Report Form
    processSelfReportForm();
    //Corporate Page
    //init_settings_for_corporate_partners_pages();
}

function volunteer_account_overview_page() {
    if ($('body.volunteer-account-overview-page').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $("body.volunteer-account-overview-page").on("click", "button.cancel", function () {
            Swal.close();
        });

        $("body.volunteer-account-overview-page").on("click", "button[name='go-remove-me-button']", function () {
            var mode = $(this).val();
            var ConnectionId = $(this).attr("data-connection-id");

            if (mode == "just-this") {
                window.location.href = urlSite + "DeclineParticipation/" + ConnectionId;
            } else if (mode == "all-occurrences") {
                window.location.href = urlSite + "DeclineParticipation/" + ConnectionId+"/all";
            }
        });
    }
}

function volunteer_opportunity_detail_populate_ars(self) {

    let selector = '';
    if ($('.sign-up-block').length > 0) {
        selector = '.sign-up-block';
    } else if ($('.express-interest-only-block').length > 0) {
        selector = '.express-interest-only-block';
    } else if ($('.express-interest-block').length > 0) {
        selector = '.express-interest-block';
    } 
    if (selector !== '') {
        let arsData = $(self).parents(selector).find('input[name="occurrence-ars-data"]').val();
        if (arsData === null || arsData == undefined || arsData === '') {
            //verify the ARS from opportunity
            arsData = $('body').find('input[name="opportunity-ars-data"]').val();
        }

        if (arsData !== null && arsData !== undefined && arsData !== '') {
            let dataARS = JSON.parse(arsData);
            $('body').find('.page_rules').find('.page_rules_list').empty();
            for (let i = 0; i < dataARS.length; i++) {
                let currentItem = dataARS[i];
                if (currentItem.Page_ID === null) {
                    let html = '<input class="branch-logic-info" type="hidden" name="branch-logic-' + (i + 1) + '" ';
                    html += 'data-redirectto="' + currentItem.Redirect_to + '" ';
                    html += 'data-isdefault="' + (currentItem.isDefault === true ? 'True' : 'False') + '" ';
                    html += 'data-issuccess="' + ((currentItem.isSuccessPage === true || currentItem.isFinalRedirect === true) ? 'True' : 'False') + '" ';
                    html += 'data-workflow="' + currentItem.WRule +'" ';
                    html += 'value="' + ((currentItem.Conditions !== null && currentItem.Conditions !== undefined) ? currentItem.Conditions : '') + '" ';
                    html += '/>';
                    $('body').find('.page_rules').find('.page_rules_list').append(html);
                }
            }
        } else {
            $('body').find('.page_rules').find('.page_rules_list').empty();
        }
    }

}

function volunteer_opportunity_detail_page() {
    if ($('body.volunteer-opportunity-detail-page').length > 0) {
        if ($('p.hide-signup-button').length > 0) {
            $('p.hide-signup-button').parents('.fieldset-content').find('.buttons-section').hide();
        }
    }
}

function validate_impersonate() {
    if ($('.login-section p.login-info .impersonate .icon-section').length > 0) {
        $('.login-section p.login-info .impersonate .icon-section').hover(
           function ()
           {
               $('.login-section p.login-info .impersonate .text-section').fadeIn('300');
        }, function ()
        {
            $('.login-section p.login-info .impersonate .text-section').fadeOut('200');
        });
    }
}

function self_reported_hours_page() {
    if ($("body.self-reported-hours-page").length > 0) {
        var organizationNameWidget = null;
        $(".organizations-remote-data").find("option").eq(0).remove();
        if ($("#AllowSelfReportingNonPartnerOrganizations").val() == "True") {
            organizationNameWidget = $(".organizations-remote-data").select2({
                "language": {
                    "noResults": function () {
                        return "Can't find your organization?  <a class='click-here'>Click here to enter a new organization</a>";
                    }
                },
                escapeMarkup: function (markup) {
                    return markup;
                }
            });
        } else {
            organizationNameWidget = $(".organizations-remote-data").select2({});
        }
       
        if ($('#report-form  input[name="isBack"]').val() == "0") {
            $("#select2-OrganizationId-container").html(window.translation.search_and_select_org);
            $("#select2-OrganizationId-container").attr("title", window.translation.search_and_select_org);
            $("#OrganizationId").val('');
        }
        

        if ($("div.regular-schedule-selector").length > 0) {
            if ($('input[name="IsRegularSchedule"]:checked').val() == 'Yes') {
                $('.no-regular-schedule-fields').hide();
                $('.regular-schedule-fields').show();
                $("#butSelfReport").hide();
                $("#butSelfReportReview").show();
            } else {
                $('.no-regular-schedule-fields').show();
                $('.regular-schedule-fields').hide();
                $("#butSelfReport").show();
                $("#butSelfReportReview").hide();
            }
            $('input:radio[name="IsRegularSchedule"]').change(function () {
                if ($(this).val() == 'Yes') {
                    $('.no-regular-schedule-fields').hide();
                    $('.regular-schedule-fields').show();
                    $("#butSelfReport").hide();
                    $("#butSelfReportReview").show();
                } else {
                    $('.regular-schedule-fields').hide();
                    $('.no-regular-schedule-fields').show();
                    $("#butSelfReport").show();
                    $("#butSelfReportReview").hide();
                }
            });

            var section = '';
            if ($('select[name="RegularScheduleSpecification.RecurrenceType"]').val() == 'Daily') {
                section = 'daily-recurrence-type';
            } else if ($('select[name="RegularScheduleSpecification.RecurrenceType"]').val() == 'Weekly') {
                section = 'weekly-recurrence-type';
            } else {
                section = 'monthly-recurrence-type';
            }
            $('.recurrence-type:not(".' + section + '")').hide();
            $('.' + section + '').show();
            $('select[name="RegularScheduleSpecification.RecurrenceType"]').change(function () {
                var section = '';
                if ($(this).val() == 'Daily') {
                    section = 'daily-recurrence-type';
                } else if ($(this).val() == 'Weekly') {
                    section = 'weekly-recurrence-type';
                } else {
                    section = 'monthly-recurrence-type';
                }
                $('.recurrence-type:not(".' + section + '")').hide();
                $('.' + section + '').show();
            });

            //HOC3-3015
            //For hide all non implemented features as part of MVP
            $(".mvp-hidden").hide();

            if ($('select[name="RegularScheduleSpecification.RecurrenceTypeMonthly"]').val() == 'Specific Day of Month') {
                $('.recurrence-type-monthly-month-day').hide();
                $('.recurrence-type-monthly-specific-day').show();
            } else {
                $('.recurrence-type-monthly-specific-day').hide();
                $('.recurrence-type-monthly-month-day').show();
            }
            $('select[name="RegularScheduleSpecification.RecurrenceTypeMonthly"]').change(function () {
                if ($(this).val() == 'Specific Day of Month') {
                    $('.recurrence-type-monthly-month-day').hide();
                    $('.recurrence-type-monthly-specific-day').show();
                } else {
                    $('.recurrence-type-monthly-specific-day').hide();
                    $('.recurrence-type-monthly-month-day').show();
                }
            });

            add_event_to_jqmsLoaded_picklist('#RegularScheduleSpecification_RecurrenceTypeWeeklyDays');

            var today = new Date();
            var dd = today.getDate();
            var mm = today.getMonth() + 1; //January is 0!
            var yyyy = today.getFullYear();

            if (dd < 10) {
                dd = '0' + dd;
            }

            if (mm < 10) {
                mm = '0' + mm;
            }
            switch (window.IsoPhone) {
                case 'us':
                    today = mm + '/' + dd + '/' + yyyy;
                    break;
                case 'nl':
                    today = dd + '-' + mm + '-' + yyyy;
                    break;
            }
            var startDateData = $('#RegularScheduleSpecification_StartDate').data();
            var startDatePickerFormat = startDateData.shortDatePattern;
            $('#RegularScheduleSpecification_StartDate').fdatepicker({
                format: startDatePickerFormat,
                endDate: today,
                startView: 'decade'
            }).on('changeDate', function (ev) {
                if ($('#RegularScheduleSpecification_EndDate').val() != '') {
                    var startDateData = $('#RegularScheduleSpecification_StartDate').data();
                    var endDateData = $('#RegularScheduleSpecification_EndDate').data();
                    var endDateDatePicker = endDateData.datepicker;
                    var startDate = moment($('#RegularScheduleSpecification_StartDate').val(), startDateData.shortDatePattern.toUpperCase());
                    var endDate = moment($('#RegularScheduleSpecification_EndDate').val(), endDateData.shortDatePattern.toUpperCase());
                    if (startDate.diff(endDate, 'days') > 0) {
                        var newDate = startDate.add(1, 'days').toDate();
                        endDateDatePicker.update(newDate);
                    }
                }
                $(this).valid();
            });

            var endDateData = $('#RegularScheduleSpecification_EndDate').data();
            var endDatePickerFormat = endDateData.shortDatePattern;
            $('#RegularScheduleSpecification_EndDate').fdatepicker({
                format: endDatePickerFormat,
                endDate: today,
                startView: 'decade',
                weekStart: get_start_day_of_week_from_locale(),
            }).on('changeDate', function (ev) {
                if ($('#RegularScheduleSpecification_StartDate').val() != '') {
                    var startDateData = $('#RegularScheduleSpecification_StartDate').data();
                    var endDateData = $('#RegularScheduleSpecification_EndDate').data();
                    var startDateDatePicker = startDateData.datepicker;
                    var startDate = moment($('#RegularScheduleSpecification_StartDate').val(), startDateData.shortDatePattern.toUpperCase());
                    var endDate = moment($('#RegularScheduleSpecification_EndDate').val(), endDateData.shortDatePattern.toUpperCase());
                    if (startDate.diff(endDate, 'days') > 0) {
                        var newDate = endDate.subtract(1, 'days').toDate();
                        startDateDatePicker.update(newDate);
                    }
                }
                $(this).valid();
            });

            if ($("input[name='OpportunityName']")[0] != undefined) {
                if ($("input[name='OpportunityName']")[1].value == "") {
                    $("input[name='OpportunityName']")[1].value = $("input[name='OpportunityName']")[0].value;
                }
            }

            $("#butSelfReportReview").on("click", function () {
                if ($("#report-form").valid() == true) {
                    $("input[name='OpportunityName']").each(function () {
                        if ($(this).val() == "")
                            $(this).remove();
                    });
                    $("#report-form")[0].submit();
                }
            });


            //Add validations
            var timer = setInterval(function () {
                if (window.translation != null) {
                    clearInterval(timer);
                    var timeFormatMessage = $("input[name='RegularScheduleSpecification.StartTime']").attr('data-val-regex');
                    $.validator.addMethod("timeFormat", function (value, element) {
                        var timeFormatRegExp = $("input[name='RegularScheduleSpecification.StartTime']").attr('data-val-regex-pattern');
                        return value.match(timeFormatRegExp);
                    }, timeFormatMessage);

                    timeFormatMessage = $("input[name='RegularScheduleSpecification.EndTime']").attr('data-val-regex');
                    $.validator.addMethod("timeFormatEnd", function (value, element) {
                        var timeFormatRegExp = $("input[name='RegularScheduleSpecification.EndTime']").attr('data-val-regex-pattern');
                        return value.match(timeFormatRegExp);
                    }, timeFormatMessage);

                    if ($('#report-form').data('validator') != null) {
                        $("input[name='RegularScheduleSpecification.StartTime']").rules("add", "timeFormat");
                        $("input[name='RegularScheduleSpecification.EndTime']").rules("add", "timeFormatEnd");
                        $("input[name='start-time']").rules("add", "timeFormat");
                        $("input[name='end-time']").rules("add", "timeFormatEnd");
                    }
                }
            }, 100);
        }

        if ($('fieldset.Is-Not-Allow-Regularly-Scheduled-Connections').length > 0 || $('div.no-regular-schedule-fields').length > 0) {
            var today = new Date();
            var dd = today.getDate();
            var mm = today.getMonth() + 1; //January is 0!
            var yyyy = today.getFullYear();

            if (dd < 10) {
                dd = '0' + dd;
            }

            if (mm < 10) {
                mm = '0' + mm;
            }
            switch (window.IsoPhone) {
                case 'us':
                    today = mm + '/' + dd + '/' + yyyy;
                    break;
                case 'nl':
                    today = dd + '-' + mm + '-' + yyyy;
                    break;
            }

            var parameterFormatDate = $('#date-of-service').attr('data-short-date-pattern');

            $('#date-of-service').fdatepicker({
                format: parameterFormatDate,
                endDate: today,
                startView: 'decade',
                weekStart: get_start_day_of_week_from_locale(),
            });
        }
       //
    }//self-reported-hours-page

    if ($("body.review-self-reported-hours-page").length > 0) {
        $("#butSelfReportReview").on("click", function () {
            $("#confirm-report-form")[0].submit();
        });
        $("#butSelfReportReviewBack").on("click", function () {
          
            $("#confirm-report-form").attr("action", "/self-reported-hours");
            $('#confirm-report-form input[name="isBack"]').val("1");
            $("#confirm-report-form").submit();
        });
    }
}

function add_event_to_jqmsLoaded_picklist(id) {
    $(id).parent('.input-group-select').on("click", '.ms-options-wrap button', function (e) {
        var h = $(id).parent('.input-group-select').height();
        $(id).parent('.input-group-select').toggleClass('multiselect-opened');
    });
    $(document).on('click', function (e) {
        var container = $(id).next('.ms-options-wrap');

        if (!container.is(e.target) // if the target of the click isn't the container...
            && container.has(e.target).length === 0) // ... nor a descendant of the container
        {
            $(id).parent('.input-group-select').removeClass('multiselect-opened');
        }
    });
}

function SetFieldsRequiredForSelfReportPage(){
    var advancedFilter = ($('#advanced-filter').val() === 'true');
    var timer = setInterval(function () {
        var formData = $('#report-form').data();
        if (formData.validator != null) {
            clearInterval(timer);
            var rules = new Object();
            rules['required'] = function (element) {
                if (!advancedFilter) {
                    return true;
                }
                return false;
            };
            rules['messages'] = {
                required: window.translation.organization_name == null ? window.translation.field_required : window.translation.organization_name + ' ' + window.translation.is_required
            };
            $('#OrganizationId').rules('add', rules);

            rules = new Object();
            rules['required'] = function (element) {
                if (advancedFilter) {
                    return true;
                }
                return false;
            };
            rules['messages'] = {
                required: window.translation.organization_name == null ? window.translation.field_required : window.translation.organization_name + ' ' + window.translation.is_required
            };
            $('#OrganizationName').rules('add', rules);

            rules = new Object();
            rules['required'] = function (element) {
                if (advancedFilter) {
                    return true;
                }
                return false;
            };
            rules['messages'] = {
                required: window.translation.contact_name == null ? window.translation.field_required : window.translation.contact_name + ' ' + window.translation.is_required
            };
            $('#OrgContactName').rules('add', rules);

            rules = new Object();
            rules['required'] = function (element) {
                if (advancedFilter) {
                    return true;
                }
                return false;
            };
            rules['messages'] = {
                required: window.translation.email_address == null ? window.translation.field_required : window.translation.email_address + ' ' + window.translation.is_required
            };
            $('#OrgContactEmail').rules('add', rules);

            var dateOfServiceData = $('#date-of-service').data();
            rules = new Object();
            rules['regex'] = new RegExp(dateOfServiceData.valRegexPattern);
            rules['messages'] = {
                required: window.translation.date_of_service == null ? window.translation.field_required : window.translation.date_of_service + ' ' + window.translation.is_required,
                regex: dateOfServiceData.valRegex
            };
            $('#date-of-service').rules('add', rules);

            var startTimeData = $('#start-time').data();
            rules = new Object();
            rules['regex'] = new RegExp(startTimeData.valRegexPattern);
            rules['messages'] = {
                required: window.translation.start_time == null ? window.translation.field_required : window.translation.start_time + ' ' + window.translation.is_required,
                regex: startTimeData.valRegex
            };
            $('#start-time').rules('add', rules);

            var endTimeData = $('#end-time').data();
            rules = new Object();
            rules['regex'] = new RegExp(endTimeData.valRegexPattern);
            rules['messages'] = {
                required: window.translation.end_time == null ? window.translation.field_required : window.translation.end_time + ' ' + window.translation.is_required,
                regex: endTimeData.valRegex
            };
            $('#end-time').rules('add', rules);
        }
    }, 100);
}

function volunteer_personal_information_date() 
{
    if ($("body.volunteer-personal-information-page").length > 0) {
        var age_mode = $('input[name="age_mode"]').val();

        var cadena = $("#date_of_birth").val();
        var date = cadena.split("-");
        var year = date[0];
        var month = date[1];
        var day = date[2];
        
        if (age_mode === 'default' || age_mode === '' || age_mode === 'day_month') {
            if (age_mode === 'default' || age_mode === '')
                $("#select-year").val(year);
            $("#select-month").val(month);
            $("#select-day").val(day);

            $('#select-month').on("change", function () {
                var month = $('#select-month').val();
                var year = $('#select-year').val();

                calculate_days(month, year);
                validation_min_age_personal_information();
            });
            if (age_mode === 'default' || age_mode === '') {
                $('#select-year').on("change", function () {
                    var year = $('#select-year').val();
                    var month = $('#select-month').val();
                    calculate_days(month, year);
                    validation_min_age_personal_information();
                });

            }
            $('#select-day').on("change", function () {
                var year = $('#select-year').val();
                var month = $('#select-month').val();
                var days = $('#select-day').val();
                $("#date_of_birth").val(year + "-" + month + "-" + days);
                validation_min_age_personal_information();
            });

        } else if (age_mode === 'year_only') {
            $("#select-year").val(year);
            $('#select-year').on("change", function () {
                var year = $('#select-year').val();
                var month = $('#select-month').val();
                var days = $('#select-day').val();
                $("#date_of_birth").val(year + "-" + month + "-" + days);
                validation_min_age_personal_information();
            });

        }
        
        if ($("#over_default_age_check").length > 0) {
            $("#over_default_age_check").on("click", function () {
                if ($(this).is(':checked')) {
                    $("#date_of_birth").val($("#checked_age").val());
                }
                else {
                    $("#date_of_birth").val($("#not_checked_age").val());
                }
            });
        }
    }
}

function validate_format_date_pi() {
    var dateformat = window.DatePickerDateFormat;
    if ($("body.volunteer-personal-information-page").length > 0) {
        if (dateformat.indexOf("-") >= 0) {
            var chain = dateformat.split("-");
        } else if (dateformat.indexOf("/") >= 0) {
            var chain = dateformat.split("/");
        }

        if (chain !== null && chain !== undefined && Array.isArray(chain) === true && chain.length == 3) {
            var token1 = chain[0].toLowerCase();
            var token2 = chain[1].toLowerCase();
            var token3 = chain[2].toLowerCase();
            if ((token1 == 'd' || token1 == 'dd') && (token2 == 'm' || token2 == 'mm') && token3 == 'yyyy') {
                $('#month-container').prepend($('#select-day'));
                $('#month-container').removeClass('medium-5');
                $('#month-container').addClass('medium-3');
                $('#day-container').prepend($('#select-month'));
                $('#day-container').removeClass('medium-3');
                $('#day-container').addClass('medium-5');
            } else if ((token1 == 'm' || token1 == 'mm') && (token2 == 'd' || token2 == 'dd') && token3 == 'yyyy') {
                //current format
            } else if (token1 == 'yyyy' && (token2 == 'm' || token2 == 'mm') && (token3 == 'd' || token3 == 'dd')) {
                $('#month-container').prepend($('#select-year'));
                $('#month-container').removeClass('medium-4');
                $('#month-container').addClass('medium-5');
                $('#day-container').prepend($('#select-month'));
                $('#day-container').removeClass('medium-3');
                $('#day-container').addClass('medium-4');
                $('#year-container').prepend($('#select-day'));
                $('#year-container').removeClass('medium-4');
                $('#year-container').addClass('medium-3');
            } else if (token1 == 'yyyy' && (token2 == 'd' || token2 == 'dd') && (token3 == 'm' || token3 == 'mm')) {
                $('#month-container').prepend($('#select-year'));
                $('#month-container').removeClass('medium-4');
                $('#month-container').addClass('medium-5');
                $('#day-container').prepend($('#select-day'));
                $('#day-container').removeClass('medium-4');
                $('#day-container').addClass('medium-3');
                $('#year-container').prepend($('#select-month'));
                $('#year-container').removeClass('medium-3');
                $('#year-container').addClass('medium-4');
            } else {
                console.log("INVALID CASE ");
            }
        } else {
            console.log("INVALID FORMAT ");
        }
    }
}

function storageEnabled() {
    try {
        localStorage.setItem("__test", "data");
    } catch (e) {
       // if (/QUOTA_?EXCEEDED/i.test(e.name)) {
            return false;
      // }
    }
    return true;
}

function validateStorageEnabled() {
    if (!storageEnabled()) {
        custom_alert('warning', 'Important', 'Some functions are not supported in Private Mode. Please turn private browsing off.')
    }
}

function submit_update_skill() {
    if ($("body.volunteer-skills-page").length > 0) {
        $("input[type=submit].custom-button").click(function () {
            $(".processing_screen").show();
        });
    }
}

function clear_session_storage() {
    $("header a.logout").on("click", function () {
        remove_session_storage_item();
    });

    $("body.partner-portal a.logout").on("click", function () {
        remove_session_storage_item();
        remove_local_storage_report_item();
    });

    $("body.partner-portal button#login-as-this-contact-button").on("click", function () {
        remove_session_storage_item();
    });

    $("span.impersonate a.logout").on("click", function () {
        remove_session_storage_item();
    });

    try {
        var cleanDataLocal = get_parameter_by_ame("clean");
        if (cleanDataLocal == "1") {
            remove_session_storage_item();


            //
            var uri = window.location.href.toString();
            if (uri.indexOf("?") > 0) {
                var clean_uri = uri.substring(0, uri.indexOf("?"));
                window.history.replaceState({}, document.title, clean_uri);
            }
        }
    } catch (e) {
        window.console && console.error(e)
    }
}

function remove_local_storage_report_item() {
    
    if($('a.get_report_folders').length > 0) {
        var siteId = $('a.get_report_folders').attr('data-instance').toString();
        localStorage.removeItem('reporting-section-listing-folders'+siteId);
    }
}

function remove_session_storage_item() {
    sessionStorage.removeItem('Salesforce Contact ID');
    sessionStorage.removeItem('Salesforce Organization ID');
    sessionStorage.removeItem('Salesforce Contact Account ID');
    sessionStorage.removeItem('Salesforce Contact Account Name');
    sessionStorage.removeItem('User Profile');
        // Remove all saved data from sessionStorage
        //sessionStorage.clear();

    var items = Object.keys(sessionStorage);
    if (items && items.length > 0) {
        items.forEach(function (myValue) {
            if (myValue.indexOf('LISTING_RELOADED') != -1) {
                sessionStorage.removeItem(myValue);
            }
        });
    }
}

function guid() {
    function s4() {
        return Math.floor((1 + Math.random()) * 0x10000)
          .toString(16)
          .substring(1);
    }
    return s4() + s4() + s4() + s4() + s4() + s4() + s4() + s4();
}


function sendDataServiceForMember() {
    if ($("body.team-detail-page").length===0) {
        return;
    }

    $(document).on('click', 'body.team-detail-page a.btn-update-member', function (e) {
        e.preventDefault();
        if ($(this).hasClass("disabled")) {
            return;
        }
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);
        var form = $("form#update-team-members");
        var postData = form.serializeObject();
        var urlToSent = urlSite + "/update-team-member-list";
        $.ajax({
            type: "POST",
            url: urlToSent,
            data: postData,
            beforeSend: function () {
                $('.processing_screen').show();
            },
            success: function (data) {
                data = JSON.parse(data);
                if (data.code === "200" || data.code === 200) {
                    Swal.fire({
                        title: window.translation.success,
                        text: "Saved Successfully",
                        icon: "success",
                        showCancelButton: false,
                        confirmButtonText: "Ok",
                        closeOnConfirm: true,
                    }).then(function (result) {
                        if (result.isConfirmed) {
                            location.reload();
                        }
                    });


                } else {

                    Swal.fire({
                        title: window.translation.error,
                        icon: "error",
                        text: data.message,
                        confirmButtonText: "Ok",
                    }).then(function (result) {
                        if (result.isConfirmed) {
                            location.reload();
                        }

                    });

                }


            },
            complete: function (jqXHR, textStatus) {
                $('.processing_screen').hide();
            }
        });



    });
}

function set_datatable_for_referal_history(languageText) {
    if ($('#datatable-custom-referal-history').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var cont = -1;
        $('#datatable-custom-referal-history').DataTable({
            "ajax": urlSite + 'referal-history',
            "retrieve": true,
            "bFilter": false,
            "bLengthChange": false,
            "scrollY": "400px",
            "scrollCollapse": true,
            "paging": false,
            "language": languageText,
            "order": [],
            "columnDefs": [
                {
                    "targets": [2],
                    "width": "19%",
                    "orderable": false,
                }
            ],
            fnDrawCallback: function (oSettings) {
                datatable_add_cells_data_for_mobile_headers(this);
                remove_referal_history_item();
            }
        }).on('error.dt', function (e, settings, techNote, message) {
            if (!message)
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_self_report_opp,
                    icon: 'error'
                });
            else
                Swal.fire({
                    title: '',
                    text: window.translation.error_loading_self_report_opp + ": " + message,
                    icon: 'error'
                });
        });
    }
}

function remove_referal_history_item() {
    if ($('#datatable-custom-referal-history').length > 0) {
        $('#datatable-custom-referal-history  a.remove-referral').each(function () {

            $(this).on("click", function () {
                var element = $(this).attr("data-attr-id");

                Swal.fire({
                    title: "",
                    html: window.translation.confirm_delete_item,
                    icon: "warning",
                    showCancelButton: true,
                    confirmButtonText: "Ok",
                    closeOnConfirm: true,
                    

                }).then(function (result) {
                    if (result.isConfirmed) {
                        invoke_server_to_remove_referal_item(element);
                    }
                });

            });
        });
    }
}

function invoke_server_to_remove_referal_item(element) {


    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $.ajax({
        type: "GET",
        url: urlSite + 'remove-referal/' + element,
        beforeSend: function () {
            $('.processing_screen').show();
        },
        success: function (data) {
            data = JSON.parse(data);

            if (data.code === "200") {

                Swal.fire({
                    title: window.translation.success,
                    text: "Saved Successfully",
                    icon: "success",
                    showCancelButton: false,
                    confirmButtonText: "Ok",
                    closeOnConfirm: true,

                }).then(function (result) {
                    if (result.isConfirmed) {
                        var table = $('#datatable-custom-referal-history').DataTable();
                        table.ajax.reload(null, false);
                    }
                });

            } else {

                Swal.fire({
                    title: window.translation.error,
                    icon: "error",
                    text: data.message,
                    confirmButtonText: "Ok",

                });

            }


        },
        complete: function (jqXHR, textStatus) {
            $('.processing_screen').hide();
        }
    });
}

function add_redirect_on_additional_fields() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var originalPath = window.location.pathname;
    var pathToConsult = originalPath.replace(urlSite, '/');

    if ($('body.page-team').length > 0 && pathToConsult === '/my-teams/additional-fields/team') {

        var sfid = getParameterByNameFromURL('recid');
        var redirecTo = '';
        redirecTo = '/my-teams';
        $('input[name="have_redirection"]').val(true);
        $('input[name="redirect_url"]').val(redirecTo);
        
    }
}

function verify_redirect_teamsignup_prerequisites_questions() {

    if ($('div.opportunity-signupteam-content  input[name="teamsignupmembers"]').length > 0) {
        var value = $('div.opportunity-signupteam-content  input[name="teamsignupmembers"]').val();
        if (value != undefined && value != null && value != '') {
            sessionStorage.setItem("teamsingup-special-data", value);
            sessionStorage.setItem("occ-id-pre-requisite", $('div.opportunity-signupteam-content  input[name="occwithprerequisite"]').val());
            window.location = $('div.opportunity-signupteam-content  input[name="teamsignupspecialredirecturl"]').val();
        }
    }


    if ($('div.opportunity-signupteam-content  form#opp-signup-team-members input#prerequisiteOccSelected').length > 0) {
        var data = sessionStorage.getItem("teamsingup-special-data");
        
        var currentOccId = $('div.opportunity-signupteam-content  input[name="occId"]').val();
        var occIdPreRequisite = sessionStorage.getItem("occ-id-pre-requisite");

        if (data != undefined && data != '' && currentOccId == occIdPreRequisite) {
            var teammembers = data.split(",");

            var i;
            for (i = 0; i < teammembers.length; i++) { //member-participate:checked
                $('div.opportunity-signupteam-content  form#opp-signup-team-members').append('<input type="hidden" class="member-participate" name="confirmed-' + i + '" id="confirmed-' + i + '" value="' + teammembers[i] + '" checked="" /> ');
                $('div.opportunity-signupteam-content  form#opp-signup-team-members').append('<input type="hidden" name="meet-requirements-' + i + '" id="meet-requirements-' + i + '" value="true" /> ');
            }

            $('div.opportunity-signupteam-content  form#opp-signup-team-members').append('<input type="hidden" name="membersaddedinternally" id="membersaddedinternally" value="1" /> ');
            $('div.opportunity-signupteam-content  form#opp-signup-team-members input[name="teamcont"]').val(teammembers.length);


        } 

    }
}

function include_datatable_custom_sort_volunteer_portal() {
    var daysofweek = [
		get_day_of_the_week_translation_volunteer_portal("Monday"),
		get_day_of_the_week_translation_volunteer_portal("Tuesday"),
		get_day_of_the_week_translation_volunteer_portal("Wednesday"),
		get_day_of_the_week_translation_volunteer_portal("Thursday"),
		get_day_of_the_week_translation_volunteer_portal("Friday"),
		get_day_of_the_week_translation_volunteer_portal("Saturday"),
		get_day_of_the_week_translation_volunteer_portal("Sunday")
    ];
    $.extend($.fn.dataTableExt.oSort,
		{
		    "weekday-pre": function (a) {
		        return $.inArray(a, daysofweek);
		    },
		    "weekday-asc": function (a, b) {
		        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
		    },
		    "weekday-desc": function (a, b) {
		        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
		    }
		},
		{
		    "datetime-pre": function (a) {
		        var timestamp = moment(a, window.MomentDateTimeFormat).valueOf();
		        return timestamp;
		    },
		    "datetime-asc": function (a, b) {
		        return ((a < b) ? -1 : ((a > b) ? 1 : 0));
		    },
		    "datetime-desc": function (a, b) {
		        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
		    }
		}
	);
}

function get_day_of_the_week_translation_volunteer_portal(dayofweek) {
    var dow = "";
    switch (dayofweek) {
        case "Monday":
            dow = window.translation.monday;
            break;
        case "Tuesday":
            dow = window.translation.tuesday;
            break;
        case "Wednesday":
            dow = window.translation.wednesday;
            break;
        case "Thursday":
            dow = window.translation.thursday;
            break;
        case "Friday":
            dow = window.translation.friday;
            break;
        case "Saturday":
            dow = window.translation.saturday;
            break;
        case "Sunday":
            dow = window.translation.sunday;
            break;
    }
    return dow;
}

function personal_information_state_logic() {
    if ($('body').hasClass('volunteer-personal-information-page')) {
        var countryHome = "";
        if ($('#HomeLocation_Country').length > 0)
            countryHome = $('#HomeLocation_Country').val();
        else if ($('#home_country').length > 0)
            countryHome = $('#home_country').val();

        var workCountry = $('#BusinessLocation_Country').val();
        var usedpfac = $('input#usedpfac').val();
        var countryRelated = $('input#relatedCountry').val();
        var fieldStateMapped = $('#otherStateField').val();
        var fieldWStateMapped = $('#otherWStateField').val();

        if (countryHome == "United States") {
            $("#div-state").show();
            $("#div-state-australia").hide();
            $("#div-state-text").hide();
            $('#div-state-other-field').hide();
        } else if (countryHome == "Australia" && usedpfac == "true" && fieldStateMapped == 'none') {
            $("#div-state").hide();
            $("#div-state-australia").show();
            $("#div-state-text").hide();
            $('#div-state-other-field').hide();
        } else if (countryRelated == countryHome && usedpfac == "true" && countryRelated != 'none' && fieldStateMapped != 'none') {
            $("#div-state").hide();
            $("#div-state-australia").hide();
            $("#div-state-text").hide();
            $('#div-state-other-field').show();

        } else {
            $("#div-state").hide();
            $("#div-state-australia").hide();
            $("#div-state-text").show();
            $('#div-state-other-field').hide();

        }

        if (workCountry == "United States") {
            $("#div-work-state").show();
            $("#div-work-state-australia").hide();
            $("#div-work-state-text").hide();
            $('#div-work-state-other-field').hide();
        } else if (workCountry == "Australia" && usedpfac == "true" && fieldWStateMapped == 'none') {
            $("#div-work-state").hide();
            $("#div-work-state-australia").show();
            $("#div-work-state-text").hide();
            $('#div-work-state-other-field').hide();
        } else if (countryRelated == workCountry && usedpfac == 'true' && countryRelated != 'none' && fieldWStateMapped != 'none') {
            $("#div-work-state").hide();
            $("#div-work-state-australia").hide();
            $("#div-work-state-text").hide();
            $('#div-work-state-other-field').show();
        } else {
            $("#div-work-state").hide();
            $("#div-work-state-australia").hide();
            $("#div-work-state-text").show();
            $('#div-work-state-other-field').hide();
        }


        $('#HomeLocation_Country').on('change', function () {
            var value = $(this).val();
            if (value == "United States") {
                $("#div-state").show();
                $("#div-state-australia").hide();
                $("#div-state-text").hide();
                $('#div-state-other-field').hide();
            } else if (value == "Australia" && usedpfac == "true" && fieldStateMapped == 'none') {
                $("#div-state").hide();
                $("#div-state-australia").show();
                $("#div-state-text").hide();
                $('#div-state-other-field').hide();
            } else if (value == countryRelated && usedpfac == 'true' && countryRelated != 'none' && fieldStateMapped != 'none') {
                $("#div-state").hide();
                $("#div-state-australia").hide();
                $("#div-state-text").hide();
                $('#div-state-other-field').show();
            } else {
                $("#div-state").hide();
                $("#div-state-australia").hide();
                $("#div-state-text").show();
                $('#div-state-other-field').hide();
            }

        });


        $('#BusinessLocation_Country').on('change', function () {
            var value = $(this).val();
            if (value == "United States") {
                $("#div-work-state").show();
                $("#div-work-state-australia").hide();
                $("#div-work-state-text").hide();
                $('#div-work-state-other-field').hide();
            } else if (value == "Australia" && usedpfac == "true" && fieldWStateMapped == 'none') {
                $("#div-work-state").hide();
                $("#div-work-state-australia").show();
                $("#div-work-state-text").hide();
                $('#div-work-state-other-field').hide();
            } else if (value == countryRelated && usedpfac == 'true' && countryRelated != 'none' && fieldWStateMapped != 'none') {
                $("#div-work-state").hide();
                $("#div-work-state-australia").hide();
                $("#div-work-state-text").hide();
                $('#div-work-state-other-field').show();

            } else {
                $("#div-work-state").hide();
                $("#div-work-state-australia").hide();
                $("#div-work-state-text").show();
                $('#div-work-state-other-field').hide();
            }

        });


    }
}

function validate_auth_external() {
    if ($('body .authenticate-login-external').length > 0) {
        var redirectTo = $('input[name="redirectTo"]').val();
        var returnURL = $('input[name="returnUrl"]').val();
        //create localstorage

        var objectLS = {
            type: "ars-login-one-step",
            finalUrl: returnURL
        };
        localStorage.removeItem("ars-log-onestep");
        localStorage.setItem("ars-log-onestep", JSON.stringify(objectLS));

        window.location.href = redirectTo;

    }
}
function evaluate_redirect_url_after_login(url) {

    let isAnExternalUrl = isExternalUrl(url);

    if (!externalRedirectConfig.enabled && isAnExternalUrl) {
        return "/";
    }else if (externalRedirectConfig.enabled) {
        //evaluate if the redirect is into the alowed domains
        if (externalRedirectConfig.allowedDomains == "*")
            return url;
        else {
            // evaluate the domain
            return url;
        }
    }

    return url;

}
function process_calendar_default_for_old(self, recreate, processingContainer) {
    processingContainer.removeClass('hide-custom');
    processingContainer.show();

    var searchResultBlockId = self.find('input[name="calendar-search-block-id"]').val();
    var parametersAPI = {};

    if (self.find('form#search_calendar input[name="searchvo_include_location_name"]').length > 0) {
        parametersAPI['searchvo_include_location_name'] = 'true';
    }

    parametersAPI["searchResultBlockId"] = searchResultBlockId;
    parametersAPI['isRecreateAction'] = recreate;
    var lastDate = null;
    var isCorporateBlock = true;
    if (recreate) {
        parametersAPI['IsFromShareUrl'] = "false";
    } else {
        var queryStringFormCalendar = self.find('input[name="query-string-form-calendar"]').val();
        var foundValue = true;
        if (queryStringFormCalendar !== 'undefined' && queryStringFormCalendar !== null && queryStringFormCalendar !== '') {
            var qYear = get_parameter_from_query_string("year", queryStringFormCalendar);
            var qMonth = get_parameter_from_query_string("month", queryStringFormCalendar);
            var qDay = get_parameter_from_query_string("day", queryStringFormCalendar);
            if (qYear === null && qMonth === null && qDay === null) {
                foundValue = false;
            }

            if (qYear !== undefined || qMonth !== undefined || qDay !== undefined) {
                if (qYear === undefined)
                    qYear = moment().format('YYYY');
                if (qMonth === undefined)
                    qMonth = "01";
                if (qDay === undefined)
                    qDay = "01";

                lastDate = qYear + '-' + qMonth + '-' + qDay;
            }
        } else {
            foundValue = false;
        }


        if (foundValue === false && isCorporateBlock === false) {
            var calendarSearchSessionStorage = getCalendarSearchLastDateSessionStorageSR();

            if (calendarSearchSessionStorage !== null && calendarSearchSessionStorage.last_date !== null) {
                lastDate = calendarSearchSessionStorage.last_date;
            }
            else {
                sessionStorage.setItem("calendar-search-last-date", '');
                var today = new Date();
                var mm = (today.getMonth() + 1);
                var month = mm;
                if (mm < 10) {
                    month = '0' + mm;
                }
                var dd = today.getDate();
                var day = dd;
                if (dd < 10) {
                    day = '0' + dd;
                }
                lastDate = today.getFullYear() + '-' + month + '-' + day;
            }
        }


        parametersAPI['IsFromShareUrl'] = self.find('input[name="IsFromShareUrl"]').val();
    }
    if (isCorporateBlock === true) {
        var today = new Date();
        var mm = (today.getMonth() + 1);
        var month = mm;
        if (mm < 10) {
            month = '0' + mm;
        }
        var dd = today.getDate();
        var day = dd;
        if (dd < 10) {
            day = '0' + dd;
        }
        lastDate = today.getFullYear() + '-' + month + '-' + day;

    }

    let customSort = self.find('input[name="customSort"]').val();
    var calendar = generate_calendar_widget(searchResultBlockId, lastDate, isCorporateBlock, customSort);
    retrieve_occurrences(calendar, parametersAPI, processingContainer, self, recreate, true);

    if (self.find('button.fc-dayGridMonth-button').length > 0) {
        self.find('button.fc-dayGridMonth-button').on('click', function () {
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, true);
        });
    }
    if (self.find('button.fc-dayGridWeek-button').length > 0) {
        self.find('button.fc-dayGridWeek-button').on('click', function () {
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, true);
        });
    }
    if (self.find('button.fc-dayGridDay-button').length > 0) {
        self.find('button.fc-dayGridDay-button').on('click', function () {
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, true);

        });
    }
    if (self.find('button.fc-prev-button').length > 0) {
        self.find('button.fc-prev-button').on('click', function () {
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, true);
        });
    }
    if (self.find('button.fc-next-button').length > 0) {
        self.find('button.fc-next-button').on('click', function () {
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, true);
        });
    }

    if (self.find('button.fc-today-button').length > 0) {
        self.find('button.fc-today-button').on('click', function () {
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, true);
        });
    }


    self.find('a.button.submit-calendar-button').on('click', function (e) {
        e.preventDefault();
        processingContainer.show();
        reload_calendar_widget(self, calendar, processingContainer);
        invoke_calendar_for_mobile(self);
        return false;
    });

    self.find('.my-searches-section select[name="my_saved_searches"]').on('change', function () {
        var searchId = $(this).val();
        var isAnonymous = $(this).hasClass('anonymous');

        if (searchId) {
            var self = $(this).parents('.searchresultblock').first();
            var processingContainer = self.find('.processing_screen');
            var elementViewMore = self.find('.view-more.searchresult-listing');

            searchresult_load_search_shareable_for_default_calendar(self, processingContainer, searchId, isAnonymous, calendar);
        }

    });

    invoke_calendar_for_mobile(self);
}

function post_process_login_modal() {
    $(document).on('open.zf.reveal', '[data-reveal]', function () {
        if ($(this).attr('id') === 'login-modal') {
            $('#login-modal').focus();
        }
    });
}

function staff_select_organization() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    if ($("#showOrganizationSelection").length > 0) {
        $("#related-organizations").DataTable({
            "bPaginate": true,
            "bLengthChange": false,
            "pageLength": 7,
            "info": false,
            "order": [[1, 'asc']]
        });

        $("#showOrganizationSelection").delegate("tbody tr.clickable-row", "click", function () {
            var organizationId = $(this).data("id");
            $.ajax(urlSite + 'partner-portal/SetManagedOrganization/' + organizationId)
                .done(function (resp) {
                    sessionStorage.setItem('Salesforce Organization ID', organizationId);
                    location.reload(true);
                });
        });



        $("nav#main-nav .open-organization-selection").click(function (e) {
            e.preventDefault();
            $('#showOrganizationSelection').foundation('open');
        });

        if ($("#managedOrganizationField").val() == "" && ($('body.partner-portal').length > 0 || $('li.partner-switcher').length > 0)) {
            $('#showOrganizationSelection').foundation('open');
        }
    }

}
function admin_select_organization() {
    $("#showOrganizationSelectionAdmin .processing_screen").show();
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if ($("#showOrganizationSelectionAdmin").length > 0) {

        $("#related-organizations-client-admin").DataTable({
            "ajax": {
                "url": urlSite + 'partner-portal/get-organization-list',
                type: "GET",
                data: function (d) {
                    d.term = $("#organization-search").val();
                    if ($("#related-organizations-client-admin_startRecord").val() != '' && $("#organization-search").val() == '' && $("#related-organizations-client-admin_startRecordAux").val() != '1') {
                        d.searchGreaterThan = $("#related-organizations-client-admin_startRecord").val();
                    }
                }
            },
            "bPaginate": true,
            "bLengthChange": false,
            "pageLength": 7,
            "bProcessing": false,
            "order": [[4, 'asc']],
            //"pagingType": "numbers",
            "oLanguage": {
                "oPaginate": {
                    "sPrevious": window.translation.sPrevious,
                    "sNext": window.translation.sNext
                },
                "sZeroRecords": window.translation.sZeroRecords,
                "sInfoFiltered": window.translation.sInfoFiltered,
                "sInfo": window.translation.sInfo,
                "sInfoEmpty": window.translation.sInfoEmpty,
                "sLoadingRecords": window.translation.sLoadingRecords,
            },
            initComplete: function (settings, json) {
                if (json.data.length >= 1000) $('#related-organizations-client-admin').data('datatable-more-than-1k-records', true);
                SetHiddenFieldsForLoadMore("related-organizations-client-admin",
                    json.firstOrganizationName,
                    json.lastOrganizationName,
                    json.data.length,
                    1000,
                    $("#related-organizations-client-admin_startRecord").val() == '',
                    json.data.length >= 1000 || $("#related-organizations-client-admin_startRecord").val() != '');


                var fromValue = $("#" + "related-organizations-client-admin" + "_startRecord").val();
                var toValue = $("#" + "related-organizations-client-admin" + "_endRecord").val();
                var infoText = window.translation.loaded_records + ": " + window.translation.from_text + " '" + fromValue + "' " + window.translation.to_text + " '" + toValue + "'";

                if ($("#organization-search").val() == '') {
                    $("#related-organizations-client-admin_info").text(infoText);

                }

                if (json.data.length >= 1000 || $("#related-organizations-client-admin_firstRecordSet").val() != "true") {
                    removeNextPrevious();
                }
                $("#showOrganizationSelectionAdmin .processing_screen").hide();
                $("#related-organizations-client-admin_startRecordAux").val('0');

            },
            rowCallback: function (row, data, index) {
                $(row).attr('data-id', data[0]);
                $(row).attr('data-logo', data[1]);
                $(row).attr('data-name', data[2]);
            },
            "fnInfoCallback": function (oSettings, iStart, iEnd, iMax, iTotal, sPre) {

                if ($('td.dataTables_empty').length == 0) {
                    $("#showOrganizationSelectionAdmin .processing_screen").hide();

                } else {
                    $('td.dataTables_empty').each(function () {
                        var cellText = $(this).html();
                        if (cellText == window.translation.sZeroRecords) {
                            $("#showOrganizationSelectionAdmin .processing_screen").hide();
                        }
                    });
                }

                if (($('#related-organizations-client-admin').data('datatable-more-than-1k-records') == true && iMax >= 1000
                    || $("#related-organizations-client-admin_startRecord").val() != '' && $("#related-organizations-client-admin_firstRecordSet").val() != "true")
                    && $('#organization-search').val() == '') {
                    AddLoadMoreButtonDataTable("related-organizations-client-admin", iMax < 1000 && $("#related-organizations-client-admin_startRecord").val() != '', $("#related-organizations-client-admin_startRecord").val() == '');
                    removeNextPrevious();
                }
                else {
                    RemoveLoadMoreButtonDataTable("related-organizations-client-admin");
                }

                var fromValue = $("#" + "related-organizations-client-admin" + "_startRecord").val();
                var toValue = $("#" + "related-organizations-client-admin" + "_endRecord").val();
                $("#related-organizations-client-admin_startRecordAux").val('0');
                if (($('#related-organizations-client-admin').data('datatable-more-than-1k-records') == true && iMax >= 1000 ||
                    $("#related-organizations-client-admin_startRecord").val() != '' && $("#related-organizations-client-admin_firstRecordSet").val() != "true")
                    && $("#organization-search").val() == '') {
                    return window.translation.loaded_records + ": " + window.translation.from_text + " '" + fromValue + "' " + window.translation.to_text + " '" + toValue + "'";;
                }
                else {
                    return "";
                }
            },
            columnDefs: [
                {
                    "targets": 0,
                    "visible": false,
                },
                {
                    "targets": 1,
                    "visible": false,
                },
                {
                    "targets": 2,
                    "visible": false,
                },
                {   
                    "targets": 3,
                    "render": function (data, type, row, meta) {
                        try {
                            if (data !== '' && data != undefined && data != null) {

                                if (data.includes("/file-manager/public/")) {
                                    let currentUrl = data;
                                    
                                    let domain = currentUrl.substring(currentUrl.indexOf("https"), currentUrl.indexOf("?file=") + 6);
                                    let fileManagerPosition = domain.indexOf("/file-manager/public/");
                                    let filenamePath = domain.substring(fileManagerPosition + 14, domain.indexOf("?file="));
                                    let newImageUrl = 'https://cdn0.handsonconnect.org/' + filenamePath + '/';

                                    data = data.replace(domain, newImageUrl)
                                    return data;
                                } else if (data.includes("https://hocps.blob.core.windows.net/"))
                                {
                                    data = data.replace("https://hocps.blob.core.windows.net/", "https://cdn0.handsonconnect.org/")
                                    return data;
                                }
                                else
                                    return "";
                            }
                            else
                                return data;
                        } catch (e) {
                             
                            window.console && console.error(e);
                            return "";
                        }
                    }
                }
            ]
        });


        $("#related-organizations-client-admin").delegate("tbody tr", "click", function () {
            var organizationId = $(this).data("id");
            var name = $(this).data("name");
            var logo = $(this).data("logo");
            $.ajax(urlSite + 'partner-portal/SetManagedOrganization/' + organizationId + '?orgName=' + encodeURI(name) + '&orgLogo=' + encodeURI(logo))
                .done(function (resp) {
                    sessionStorage.setItem('Salesforce Organization ID', organizationId);
                    location.reload(true);
                });
        });


        $("#related-organizations-client-admin_filter").remove();
        $("#organization-search").keyup(function () {
            var datatable = $('#related-organizations-client-admin').dataTable().api();
            var more_than_1k_records = $('#related-organizations-client-admin').data('datatable-more-than-1k-records');
            if (more_than_1k_records) {
                donetyping(function () {
                    $("#showOrganizationSelectionAdmin .processing_screen").show();
                    if ($("#organization-search").val() == '' && $("#related-organizations-client-admin_firstRecordSet").val() == 'true') {
                        $("#related-organizations-client-admin_startRecordAux").val('1');
                    }
                    else {
                        $("#related-organizations-client-admin_startRecordAux").val('0');
                    }
                    datatable.ajax.reload();
                }, 1000);
            } else {
                datatable.search($("#organization-search").val()).draw();
            }
        });
        /*$("#search-datatable-button").click(function () {
            var datatable = $('#contacts-datatable').dataTable().api();
            if (datatable.data().count() == 1000) {
                datatable.ajax.reload();
            } else {
                datatable.search($("#search-contacts-field").val()).draw();
            }
        });*/

        $("nav#main-nav .open-organization-selection").click(function (e) {
            e.preventDefault();
            $('#showOrganizationSelectionAdmin').foundation('open');
        });

        if ($("#managedOrganizationField").val() == "" && ($('body.partner-portal').length > 0 || $('li.partner-switcher').length > 0)) {
            $('#showOrganizationSelectionAdmin').foundation('open');
        }
    }
}
function select_org_to_manage() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var pathName = window.location.pathname;
    if ($('li.partner-switcher').length > 0 ||
        pathName.indexOf('/partner-portal/') > 0 && pathName.indexOf('setting-first-pag-volunteer-opportunity') < 0 ) {
        var organizationId = sessionStorage.getItem('Salesforce Organization ID');
        if (organizationId == null || organizationId == '' || organizationId == undefined || organizationId == 'null') {
            $.ajax(urlSite + 'partner-portal/GetManagedOrganizationInformation')
                .done(function (resp) {
                    resp = JSON.parse(resp);
                    if (resp.managedOrganizationID !== null) {
                        sessionStorage.setItem('Salesforce Organization ID', resp.managedOrganizationID);
                    }
                });
        }
    }
}
function organization_served_lookup_process(isFromVOCreation, idField, form) {
    if ($("#organization-served-lookup").length > 0 && $("body.page-setting-first-pag-volunteer-opportunity").length == 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $.validator.addMethod("lookupInput", function (value, element) {
            if ($(element).prev('input').val() != '') {
                return true;
            } else {
                return false;
            }
        });

        organization_served_lookup_datatable_process(isFromVOCreation, idField);

        $('#' + idField + '').lookupInput({
            modalId: "organization-served-lookup",
            createInputForDisplay: true
        });

        if (isFromVOCreation == '1') {

            $('#' + idField + '').on('change', function () {
                load_coordinator_dropdown("CoordinatorId", $(this).val(), $('input[name="ManagedBy"]:checked').val());
            });

            $('input[name="ManagedBy"]').on('change', function () {
                if ($('#' + idField + '').val() != '') {
                    load_coordinator_dropdown("CoordinatorId", $('#' + idField + '').val(), $(this).val());
                }
            });
        }
    }
}
function event_selection_organization(selectorForMenuItem, API) {
    if ($('#showOrganizationSelectionAdmin').length > 0) {
        //$("nav#mm-main-nav .open-organization-selection").click(function (e) {
        $(selectorForMenuItem).click(function (e) {
            e.preventDefault();
            if (API) {
                API.close();
            }
            $('#showOrganizationSelectionAdmin').foundation('open');
        });
    }

    if ($('#showOrganizationSelection').length > 0) {
        //$("nav#mm-main-nav .open-organization-selection").click(function (e) {
        $(selectorForMenuItem).click(function (e) {
            e.preventDefault();
            if (API) {
                API.close();
            }
            $('#showOrganizationSelection').foundation('open');
        });
    }
}
function removeNextPreviousOrganizationServed() {

    if ($('#organization-served-lookup .paginate_button.previous').length > 0) {
        $('#organization-served-lookup .paginate_button.previous').remove();
    }
    if ($('#organization-served-lookup .paginate_button.next').length > 0) {
        $('#organization-served-lookup .paginate_button.next').remove();
    }
}
function removeNextPrevious() {

    if ($('#showOrganizationSelectionAdmin .paginate_button.previous').length > 0) {
        $('#showOrganizationSelectionAdmin .paginate_button.previous').remove();
    }
    if ($('#showOrganizationSelectionAdmin .paginate_button.next').length > 0) {
        $('#showOrganizationSelectionAdmin .paginate_button.next').remove();
    }
}
function RemoveLoadMoreButtonDataTable(tableId) {

    if ($("#" + tableId + "_wrapper .dataTables_info").length > 0) {
        $("#" + tableId + "_wrapper .dataTables_info").removeClass("custom-info");
    }
    if ($("#" + tableId + "_loadAction").length > 0) {
        $("#" + tableId + "_loadAction").remove();
    }
    if ($("#" + tableId + "_firstAction").length > 0) {
        $("#" + tableId + "_firstAction").remove();
    }
}
function SetHiddenFieldsForLoadMore(tableId, startRecord, endRecord, requestRecordNumber, setRecordNumber, firstRecordSet, addLoadOptions) {


    $("#" + tableId + "_startRecord").val(startRecord);
    $("#" + tableId + "_endRecord").val(endRecord);
    $("#" + tableId + "_firstRecordSet").val(firstRecordSet);
    var lastRecorSet = requestRecordNumber < setRecordNumber;
    $("#" + tableId + "_lastRecordSet").val(lastRecorSet);
    if (addLoadOptions) {
        if (tableId == "contacts-datatable") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#contacts-datatable_startRecord").val() == '');
        }
        if (tableId == "organization-volunteer-opportunities") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#" + tableId + "_limitSearchRecord").val() == '');
        }
        if (tableId == "volunteer-opportunity-connections") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#" + tableId + "_limitSearchRecord").val() == '');
        }
        if (tableId == "organizations-datatable") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#organizations-datatable_startRecord").val() == '');
        }
        if (tableId == "volunteer-opportunities-occurrences") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#" + tableId + "_limitSearchRecord").val() == '');
        }
        if (tableId == "related-organizations-client-admin") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#" + tableId + "_startRecord").val() == '');
        }
        if (tableId == "locations-datatable") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#locations-datatable_startRecord").val() == '');
        }
        if (tableId == "report-attendance-grid") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#report-attendance-grid_startRecord").val() == '');
        }
        if (tableId == "organization-served-lookup-datatable") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#" + tableId + "_startRecord").val() == '');
        }
        if (tableId == "user-logins-metrics-table") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#" + tableId + "_startRecord").val() == '');
        }
        if (tableId == "logins-signups-by-month-table") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#" + tableId + "_startRecord").val() == '');
        }
        if (tableId == "logins-signups-by-specific-month-table") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#" + tableId + "_startRecord").val() == '');
        }
        if (tableId == "user-logins-metrics-table-specific-days") {
            AddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#" + tableId + "_startRecord").val() == '');
        }
    }

}


function AddLoadMoreButtonDataTable(tableId, onlyFirst, onlyLast) {

    //Add class to set visible tableInfo
    if ($("#" + tableId + "_wrapper .dataTables_info").length > 0) {
        $("#" + tableId + "_wrapper .dataTables_info").addClass("custom-info");
    }

    if ($("#" + tableId + "_paginate  a.paginate_button").length > 0) {
        var button_id = $("#" + tableId + "_paginate a.paginate_button").length - 1;

        //Add new button to get first records if not first set
        if ($("#" + tableId + "_firstRecordSet").length > 0 && $("#" + tableId + "_firstRecordSet").val() != "true" && $("#" + tableId + "_firstAction").length == 0) {
            $("#" + tableId + "_paginate").last("a.paginate_button").prepend('<a id="' + tableId + '_firstAction" class="paginate_button" aria-controls="' + tableId + '" data-dt-idx="' + button_id + '" tabindex="0" role="link">' + window.translation.first_result + '</a>');

            $("#" + tableId + "_firstAction").click(function () {

                //Assign value for restart the load of datatable

                if (tableId == "contacts-datatable") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId).DataTable().destroy();
                    contacts_list_page();
                }

                if (tableId == "organization-volunteer-opportunities") {

                    $("#" + tableId + "_limitSearchRecord").val('');
                    $("#" + tableId).DataTable().destroy();
                    volunteer_opportunities_page();
                }

                if (tableId == "volunteer-opportunity-connections") {

                    $("#" + tableId + "_limitSearchRecord").val('');
                    $("#" + tableId + "_limitSearchRecordDisplaySort").val('');
                    $("#" + tableId).DataTable().destroy();
                    grid_connections_editable();
                }

                if (tableId == "organizations-datatable") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId).DataTable().destroy();
                    organizations_list_page();
                }

                if (tableId == "volunteer-opportunities-occurrences") {

                    $("#" + tableId + "_limitSearchRecord").val('');
                    $("#" + tableId + "_limitSearchRecordDisplaySort").val('');
                    $("#" + tableId).DataTable().destroy();
                    opportunity_details_page(false);
                }

                if (tableId == "related-organizations-client-admin") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId).DataTable().destroy();
                    admin_select_organization();
                }

                if (tableId == "locations-datatable") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId).DataTable().destroy();
                    locations_list_page();
                }

                if (tableId == "report-attendance-grid") {

                    $("#" + tableId + "_limitSearchRecord").val('');
                    $("#" + tableId + "_minValueDisplaySort").val('');

                    $("#" + tableId).DataTable().destroy();
                    report_attendance_page();
                }

                if (tableId == "organization-served-lookup-datatable") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId).DataTable().destroy();
                    organization_served_lookup_datatable_process('0', 'selectedOrganization')
                }

                if (tableId == "user-logins-metrics-table") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId).DataTable().destroy();
                    grid_users_summary_logins();
                }

                if (tableId == "logins-signups-by-month-table") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId + "_endRecordReal").val('');
                    $("#" + tableId + "_endRecordReal").val('');
                    $("#" + tableId).DataTable().destroy();
                    get_top_login_signup_by_months();
                }

                if (tableId == "logins-signups-by-specific-month-table") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId + "_endRecordReal").val('');
                    $("#" + tableId).DataTable().destroy();
                    get_top_login_signup_by_specific_month();
                }

                if (tableId == "user-logins-metrics-table-specific-days") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId + "_endRecordReal").val('');
                    $("#" + tableId).DataTable().destroy();
                    grid_users_summary_logins_specific_day();
                }
            });

            button_id = button_id + 1;
        }

        //Add new button to get more records if not last set
        if ($("#" + tableId + "_lastRecordSet").length > 0 && $("#" + tableId + "_lastRecordSet").val() != "true" && $("#" + tableId + "_loadAction").length == 0) {
            $("#" + tableId + "_paginate").last("a.paginate_button").append('<a id="' + tableId + '_loadAction" class="paginate_button" aria-controls="' + tableId + '" data-dt-idx="' + button_id + '" tabindex="0" role="link">' + window.translation.load_more + '</a>');
            $("#" + tableId + "_loadAction").click(function () {

                //Assign value for restart the load of datatable

                if (tableId == "contacts-datatable") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    contacts_list_page();
                }

                if (tableId == "organization-volunteer-opportunities") {

                    $("#" + tableId + "_limitSearchRecord").val($("#" + tableId + "_minValue").val());
                    $("#" + tableId).DataTable().destroy();
                    volunteer_opportunities_page();
                }

                if (tableId == "volunteer-opportunity-connections") {

                    $("#" + tableId + "_limitSearchRecord").val($("#" + tableId + "_minValue").val());
                    $("#" + tableId + "_limitSearchRecordDisplaySort").val($("#" + tableId + "_minValueDisplaySort").val());
                    $("#" + tableId).DataTable().destroy();
                    grid_connections_editable();
                }

                if (tableId == "organizations-datatable") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    organizations_list_page();
                }

                if (tableId == "volunteer-opportunities-occurrences") {

                    $("#" + tableId + "_limitSearchRecord").val($("#" + tableId + "_minValue").val());
                    $("#" + tableId + "_limitSearchRecordDisplaySort").val($("#" + tableId + "_minValueDisplaySort").val());
                    $("#" + tableId).DataTable().destroy();
                    opportunity_details_page(false);
                }

                if (tableId == "related-organizations-client-admin") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    admin_select_organization();
                }

                if (tableId == "locations-datatable") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    locations_list_page();
                }

                if (tableId == "report-attendance-grid") {

                    $("#" + tableId + "_limitSearchRecord").val($("#" + tableId + "_minValue").val());
                    $("#" + tableId + "_limitSearchRecordDisplaySort").val($("#" + tableId + "_minValueDisplaySort").val());
                    $("#" + tableId).DataTable().destroy();
                    report_attendance_page();
                }

                if (tableId == "organization-served-lookup-datatable") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    organization_served_lookup_datatable_process('0', 'selectedOrganization')
                }

                if (tableId == "user-logins-metrics-table") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    grid_users_summary_logins();
                }

                if (tableId == "logins-signups-by-month-table") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    get_top_login_signup_by_months();
                }

                if (tableId == "logins-signups-by-specific-month-table") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    get_top_login_signup_by_specific_month();
                }

                if (tableId == "user-logins-metrics-table-specific-days") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    grid_users_summary_logins_specific_day();
                }
            });
        }

        if (onlyFirst && $("#" + tableId + "_loadAction").length > 0) {
            $("#" + tableId + "_loadAction").remove();
        }


        if (onlyLast && $("#" + tableId + "_firstAction").length > 0) {
            $("#" + tableId + "_firstAction").remove();
        }
    }
}
;
/** backend **/

function review_llist_amounts(formSelector) {
    var paymentComp = $(formSelector).find('.payment_component_section');
    if (paymentComp !== null && paymentComp !== undefined) {
        process_donation_amounts(paymentComp);
    }
}


function rebuild_payment_component(formSelector) {
    change_text_label_payment_api_keys(formSelector);
    if ($(formSelector).find('select[name="pc-payment-process"]').val() === "PAYPAL") {
        if ($(formSelector).find('select[name="pc-paypal-mode"]').val() === "SANDBOX") {
            $(formSelector).find('.paypal-production-configure').addClass('hidden');
            $(formSelector).find('.paypal-custom-sandbox-configure').addClass('hidden');
        } else if ($(formSelector).find('select[name="pc-paypal-mode"]').val() === "PRODUCTION") {
            $(formSelector).find('.paypal-production-configure').removeClass('hidden');
            $(formSelector).find('.paypal-custom-sandbox-configure').addClass('hidden');
        } else if ($(formSelector).find('select[name="pc-paypal-mode"]').val() === "CUSTOMSANDBOX") {
            $(formSelector).find('.paypal-production-configure').addClass('hidden');
            $(formSelector).find('.paypal-custom-sandbox-configure').removeClass('hidden');
        }
    }
    if ($(formSelector).find('select[name="pc-payment-process"]').val() === "STRIPE") {
        if ($(formSelector).find('select[name="pc-paypal-mode"]').val() === "SANDBOX") {
            $(formSelector).find('.paypal-production-configure').addClass('hidden');
            $(formSelector).find('.paypal-custom-sandbox-configure').addClass('hidden');
        } else if ($(formSelector).find('select[name="pc-paypal-mode"]').val() === "PRODUCTION") {
            $(formSelector).find('.paypal-production-configure').removeClass('hidden');
            $(formSelector).find('.paypal-custom-sandbox-configure').addClass('hidden');
        } else if ($(formSelector).find('select[name="pc-paypal-mode"]').val() === "CUSTOMSANDBOX") {
            $(formSelector).find('.paypal-production-configure').addClass('hidden');
            $(formSelector).find('.paypal-custom-sandbox-configure').removeClass('hidden');
        }
    }
    if ($(formSelector).find('select[name="pc-payment-process"]').val() === "AUTHORIZENET") {
        if ($(formSelector).find('select[name="pc-paypal-mode"]').val() === "SANDBOX") {
            $(formSelector).find('.paypal-production-configure').addClass('hidden');
            $(formSelector).find('.paypal-custom-sandbox-configure').addClass('hidden');
        } else if ($(formSelector).find('select[name="pc-paypal-mode"]').val() === "PRODUCTION") {
            $(formSelector).find('.paypal-production-configure').removeClass('hidden');
            $(formSelector).find('.paypal-custom-sandbox-configure').addClass('hidden');
        } else if ($(formSelector).find('select[name="pc-paypal-mode"]').val() === "CUSTOMSANDBOX") {
            $(formSelector).find('.paypal-production-configure').addClass('hidden');
            $(formSelector).find('.paypal-custom-sandbox-configure').removeClass('hidden');
        }
    }
    // rebuild the table
    $(formSelector).find('#table-amounts tbody').empty();
    var paymentComp = $(formSelector).find('.payment_component_section');
    if (paymentComp !== null && paymentComp !== undefined) {
        var values = $(formSelector).find('input[name="donation-amount-json"]').val();
        if (values !== null && values !== undefined && values !== '') {
            var jsonValues = JSON.parse(values);
            jsonValues.forEach(function (item) {
                var statusChecked = "";
                if (item.hidden === true)
                    statusChecked = "checked";
                buildRowTable(item.itemID, item.label, item.value, statusChecked, paymentComp);
            });
        }

        paymentComp.find('.click-and-plegde-options').hide();
        paymentComp.find('.cp-custom-questions').hide();
        paymentComp.find('.paypal-options').hide();

        if (paymentComp.find('input[name="pc-use-paypal"]').is(':checked') === true) {
            paymentComp.find('.paypal-options').show();
        } else {
            paymentComp.find('.paypal-options').hide();
        }


        load_payment_component_events_backend(formSelector);
    }

}

function load_payment_component_events_backend(formSelector) {
    var paymentComp = $(formSelector).find('.payment_component_section');
    if (paymentComp !== null && paymentComp !== undefined) {


        change_is_recurring_billing(paymentComp);
        change_include_transaction_fee(paymentComp);
        change_is_inclue_processor_transaction_fee(paymentComp);
        paymentComp.find('select[name="pc-paypal-mode"]').on('change', function () {
            if ($(this).val() === "SANDBOX") {
                paymentComp.find('.paypal-production-configure').addClass('hidden');
                paymentComp.find('.paypal-custom-sandbox-configure').addClass('hidden');
            } else if ($(this).val() === "PRODUCTION") {
                paymentComp.find('.paypal-production-configure').removeClass('hidden');
                paymentComp.find('.paypal-custom-sandbox-configure').addClass('hidden');
            } else if ($(this).val() === "CUSTOMSANDBOX") {
                paymentComp.find('.paypal-production-configure').addClass('hidden');
                paymentComp.find('.paypal-custom-sandbox-configure').removeClass('hidden');
            }
        });

        paymentComp.find('select[name="pc-payment-process"]').on('change', function () {
            change_text_label_payment_api_keys(paymentComp);
            change_is_recurring_billing(paymentComp);
        });

        paymentComp.find('input[name="cp-is-recurring-billing"]').on('change', function () {
            change_is_recurring_billing(paymentComp);
        });

        paymentComp.find('input[name="cp-display-frequencies-in-form"]').on('change', function () {
            change_is_recurring_billing(paymentComp);
        });
        paymentComp.find('input[name="cp-inclue-processor-transaction-fee"]').on('change', function () {
            change_include_transaction_fee(paymentComp);
        });

        paymentComp.find('input[name="cp-inclue-processor-transaction-fee"],select[name="pc-payment-transaction-fee-type"]').on('change', function () {
            change_is_inclue_processor_transaction_fee(paymentComp);
        });

        //add Donation Button
        paymentComp.find('.donation-values .button-donation-section button.add_button_donation_amount').on('click', function (e) {
            var label_donation = paymentComp.find('input[name="label-donation"]').val();
            var amount_donation = paymentComp.find('input[name="donation-amount"]').val();
            var statusChecked = "";
            if (paymentComp.find('input[name="hide-amount-label"]').is(':checked')) {
                statusChecked = "checked";
            }

            if (label_donation === "" || amount_donation === "") {
                Swal.fire({
                    title: window.translation.warning,
                    html: window.translation.label_amount_required,
                    icon: "warning",
                    closeOnConfirm: true

                });
                return false;
            } else {
                if ($.isNumeric(amount_donation) === false) {
                    Swal.fire({
                        title: window.translation.warning,
                        html: window.translation.amount_numeric,
                        icon: "warning",
                        closeOnConfirm: true
                        
                    });
                    return false;
                }
            }

            var numberAmount = paymentComp.find('input[name="number_amounts"]').val();
            if (numberAmount === '')
                numberAmount = 0;
            var cant = parseInt(numberAmount);
            cant = cant + 1;

            buildRowTable(cant, label_donation, amount_donation, statusChecked, paymentComp);
            let NumbersAmounts = parseInt(paymentComp.find('#table-amounts tbody tr').length);

            paymentComp.find('input[name="number_amounts"]').val(NumbersAmounts);
            paymentComp.find('input[name="label-donation"]').val('');
            paymentComp.find('input[name="donation-amount"]').val('');
            paymentComp.find('input[name="hide-amount-label"]').prop('checked', false);

            paymentComp.find('input[name="donation-amounts-list"]').val('Processed');
            process_donation_amounts(paymentComp);

            return false;

        });



    } else {
        Swal.fire({
            title: window.translation.error,
            text: 'Sorry! Can not process this component please contact with the Administrator',
            icon: 'error',
            closeOnConfirm: true
        });
    }

}


function buildRowTable(index, label, value, statusChecked, paymentComp) {
    var content = '<tr class="item-' + index + '">' +
        '<td>' +
        '<input id="label-donation-' + index + '" class="donation-label" name="label-donation-' + index + '" type="text" placeholder="Ex. Adults" data-element-id=' + index + ' value="' + label + '"/>' +
        '</td>' +
        '<td>' +
        '<input id="donation-amount-' + index + '" class="donation-amount" name="donation-amount-' + index + '" type="number" placeholder="150" min="0" class="input-group-field" value="' + value + '" />' +
        '</td>' +
        '<td>' +
        '<input id="hide-label-' + index + '" name="hide-label-' + index + '" class="switch-input" type="checkbox" ' + statusChecked + '/>' +
        '<label class="switch-paddle" for="hide-label-' + index + '">' +
        '<span class="switch-active" aria-hidden="true">Yes</span>' +
        '<span class="switch-inactive" aria-hidden="true">No</span>' +
        '</label>' +
        '</td>' +
        '<td><a href="#" class="delete_amount" data-element-id="item-' + index + '" title="delete_amount" /></td>' +
        '</tr>';

    paymentComp.find('.donation-amount-created table#table-amounts').append(content);
    paymentComp.find('a.delete_amount').on('click', function () {
        var itemID = $(this).attr('data-element-id');
        paymentComp.find('table#table-amounts tr.' + itemID).remove();
        var numberAmount = paymentComp.find('input[name="number_amounts"]').val();
        if (numberAmount === '')
            numberAmount = 0;
        var cantItems = parseInt(numberAmount);
        if (cantItems > 0)
            cantItems = cantItems - 1;
        if (cantItems === 0)
            paymentComp.find('input[name="donation-amounts-list"]').val('');
        let NumbersAmounts = parseInt(paymentComp.find('#table-amounts tbody tr').length);
        paymentComp.find('input[name="number_amounts"]').val(NumbersAmounts);
        process_donation_amounts(paymentComp);
        return false;
    });


}


function process_donation_amounts(paymentComponent) {
    let formSelector = '.form_builder_block';
    var numberAmount = paymentComponent.find('input[name="number_amounts"]').val();
    if (numberAmount === '')
        numberAmount = 0;
    var cant = parseInt(numberAmount);
    var jsonValue = '';
    if (cant === 0)
        jsonValue = '';
    else {
        jsonValue = '';
        var fieldAmount = [];
        paymentComponent.find('table#table-amounts tbody tr').each(function(index, el) {
            var item = new Object();
            item.itemID = index+1;
            item.label = $(el).find('input.donation-label').val();
            item.value = $(el).find('input.donation-amount').val();
            item.hidden = $(el).find('input.switch-input').is(':checked');
            fieldAmount.push(item);
        });
        /*for (var i = 1; i <= cant; i++) {
            var item = new Object();
            item.itemID = i;
            item.label = paymentComponent.find('table#table-amounts input[name="label-donation-' + i + '"]').val();
            item.value = paymentComponent.find('table#table-amounts input[name="donation-amount-' + i + '"]').val();
            item.hidden = paymentComponent.find('table#table-amounts input[name="hide-label-' + i + '"]').is(':checked');
            fieldAmount.push(item);
        }*/

        jsonValue = JSON.stringify(fieldAmount);
    }

    let isUpdateRecord = ($(formSelector).find('input[name="update_record"]').is(':checked'))?true:false;
    let isgetAmountSF = (paymentComponent.find('input[name="pc-payment-get-salesforce-amount"]').is(':checked'))?true:false;
    let getAmountSFlabel = paymentComponent.find('select[name="sf-get-salesforce-amount-field"] option:selected').text();
    if(isUpdateRecord == true && isgetAmountSF == true){
        paymentComponent.find('input[name="number_amounts"]').val(1);
        paymentComponent.find('input[name="donation-amount-json"]').val('[{"itemID":1,"label":"'+getAmountSFlabel+'","value":"00","hidden":false}]');
    }else{
        paymentComponent.find('input[name="donation-amount-json"]').val(jsonValue);
    }
}


function reset_elements_in_component(formSelector) {
    $(formSelector).find('.salesforce-mapping-section').addClass('hidden');
    $(formSelector).find('.paypal-production-configure').addClass('hidden');
    $(formSelector).find('.paypal-custom-sandbox-configure').addClass('hidden');
    $(formSelector).find('.payment-type').hide();
    $(formSelector).find('.paypal-account').hide();
    $(formSelector).find('input[name="number_amounts"]').val('0');
    $(formSelector).find('input[name="payment-component-id"]').val('0');
    $(formSelector).find('#table-amounts tbody').empty();
    $(formSelector).find('select[name="sf-label-pc"]').val('none');
    $(formSelector).find('select[name="sf-amount-pc"]').val('none');

    
}

function reset_payment_for_new(formSelector) {
    reset_elements_in_component(formSelector);
    load_payment_component_events_backend(formSelector);
    hide_show_payment_amounts_config(formSelector);
    change_fields_elements(formSelector);
}

function validate_fields_in_payment_component(formSelector) {
    var isError = false;
    var errorMessage = '';
    var paymentComponent = $(formSelector).find('.payment_component_section');
    if (paymentComponent !== null && paymentComponent !== undefined) {
        var donationAmount = paymentComponent.find('input[name="donation-amounts-list"]').val();
        let isUpdateRecord = ($(formSelector).find('input[name="update_record"]').is(':checked'))?true:false;
        let isgetAmountSF = ($(formSelector).find('input[name="pc-payment-get-salesforce-amount"]').is(':checked'))?true:false;
        let getAmountSFlabel = $('select[name="sf-get-salesforce-amount-field"] option:selected').text();

        var usePaypal = paymentComponent.find('select[name="pc-payment-process"]').val();
        if (usePaypal === null || usePaypal === undefined || (usePaypal !== undefined && usePaypal !== null && usePaypal === '')) {
            isError = true;
            errorMessage = 'You should select a least a payment processor\n';
        }

        if (donationAmount === '') {

            if (isUpdateRecord!=true && isgetAmountSF != true ) {
                isError = true;
                errorMessage += 'You should to configure at least a donation amount';
            }
        }

        var salesforceLabel = paymentComponent.find('select[name="sf-label-pc"]').val();
        var salesforceAmount = paymentComponent.find('select[name="sf-amount-pc"]').val();

        if ((salesforceLabel !== undefined && salesforceLabel !== null && salesforceLabel !== '' && salesforceLabel !== 'none') &&
            (salesforceAmount !== undefined && salesforceAmount !== null && salesforceAmount !== '' && salesforceAmount !== 'none')) {
            if (salesforceLabel == salesforceAmount) {
                isError = true;
                errorMessage += 'Salesforce Field for Label should be different to Salesforce Field for Amount';

            }
        }

        var salesforceObj = $(formSelector).find('select[name="salesforce_object"]').val();
        if (salesforceObj === 'Both_Organization' || salesforceObj === 'Both_User') {
            var pclabel = paymentComponent.find('select[name="sf-label-pc"]').val();
            var pcamount = paymentComponent.find('select[name="sf-amount-pc"]').val();
            var pctrans = paymentComponent.find('select[name="sf-transtaction-id"]').val();
            var pcstatus = paymentComponent.find('select[name="sf-transtaction-status"]').val();
            var pcpaymentmethod = paymentComponent.find('select[name="sf-transtaction-payment-method"]').val();
            var pcpaymentbillingname = paymentComponent.find('select[name="sf-transtaction-payment-billing-name"]').val();
            var pcpaymentsubscriptioninfo = paymentComponent.find('select[name="sf-transtaction-payment-subscription-info"]').val();
            var pcpaymenttransactionfee = paymentComponent.find('select[name="sf-total-transaction-fee"]').val();
            var pcpaymentgetamount = paymentComponent.find('select[name="sf-get-salesforce-amount-field"]').val();
            if(pcpaymentgetamount !== null && pcpaymentgetamount!== undefined && pcpaymentgetamount !== 'none'){
                objpaymentgetamount = paymentComponent.find('select[name="sf-get-salesforce-amount-field"] option:selected').attr('data-object');
            }

            if ((pclabel !== null && pclabel !== undefined && pclabel !== 'none') ||
                (pcamount !== null && pcamount !== undefined && pcamount !== 'none') ||
                (pctrans !== null && pctrans !== undefined && pctrans !== 'none') ||
                (pcstatus !== null && pcstatus !== undefined && pcstatus !== 'none') ||
                (pcpaymentmethod !== null && pcpaymentmethod !== undefined && pcpaymentmethod !== 'none')||
                (pcpaymentbillingname !== null && pcpaymentbillingname !== undefined && pcpaymentbillingname !== 'none')||
                (pcpaymentsubscriptioninfo !== null && pcpaymentsubscriptioninfo !== undefined && pcpaymentsubscriptioninfo !== 'none')
                (pcpaymenttransactionfee !== null && pcpaymenttransactionfee !== undefined && pcpaymenttransactionfee !== 'none')
                ) {
                var objlabel = null;
                var objamount = null;
                var objtranID = null;
                var objstatus = null;
                if (pclabel !== null && pclabel !== undefined && pclabel !== 'none')
                    objlabel = paymentComponent.find('select[name="sf-label-pc"] option:selected').attr('data-object');
                if (pcamount !== null && pcamount !== undefined && pcamount !== 'none')
                    objamount = paymentComponent.find('select[name="sf-amount-pc"] option:selected').attr('data-object');
                if (pctrans !== null && pctrans !== undefined && pctrans !== 'none')
                    objtranID = paymentComponent.find('select[name="sf-transtaction-id"] option:selected').attr('data-object');
                if (pcstatus !== null && pcstatus !== undefined && pcstatus !== 'none')
                    objstatus = paymentComponent.find('select[name="sf-transtaction-status"] option:selected').attr('data-object');
                if (pcpaymentmethod !== null && pcpaymentmethod !== undefined && pcpaymentmethod !== 'none')
                    objpaymentmethod = paymentComponent.find('select[name="sf-transtaction-payment-method"] option:selected').attr('data-object');
                if (pcpaymentbillingname !== null && pcpaymentbillingname !== undefined && pcpaymentbillingname !== 'none')
                    objpaymentbillingname = paymentComponent.find('select[name="sf-transtaction-payment-billing-name"] option:selected').attr('data-object');

                if (pcpaymentsubscriptioninfo !== null && pcpaymentsubscriptioninfo !== undefined && pcpaymentsubscriptioninfo !== 'none')
                    objpaymentsubscriptioninfo = paymentComponent.find('select[name="sf-transtaction-payment-subscription-info"] option:selected').attr('data-object');
                if (pcpaymenttransactionfee !== null && pcpaymenttransactionfee !== undefined && pcpaymenttransactionfee !== 'none')
                    objpaymenttransactionfee = paymentComponent.find('select[name="sf-total-transaction-fee"] option:selected').attr('data-object');
                var objectList = new Array();

                if (objlabel !== null)
                    objectList.push(objlabel);
                if (objamount !== null)
                    objectList.push(objamount);
                if (objtranID !== null)
                    objectList.push(objtranID);
                if (objstatus !== null)
                    objectList.push(objstatus);


                var currentObj = null;
                if (objectList.length > 1) {
                    var error = false;
                    objectList.forEach(function (value, index) {
                        if (currentObj !== null) {
                            if (currentObj != value) {
                                error = true;
                            }
                        }
                        currentObj = value;
                    });

                    if (error === true) {
                        currentObj = null;
                        isError = true;
                        errorMessage = 'Sorry! All fields of the Payment component should be of the same object';
                    }
                } else {
                    currentObj = objectList[0];
                }

                if (currentObj !== null)
                    paymentComponent.find('input[name="sf-object-pc"]').val(currentObj);
            }


        }


    } else {
        isError = true;
        errorMessage = 'Sorry! Can not process this component please contact with the Administrator';
    }
    if (isError === true) {
        Swal.fire({
            title: window.translation.error,
            text: errorMessage,
            icon: 'error',
            closeOnConfirm: true
        });
        return false;
    }
    return true;
}


function clear_payment_component_after_change() {
    var formSelector = '#form-builder-block';

    $(formSelector).find('form ul.tabs li a').each(function () {
        var langId = $(this).data('language-id');
        var title_field = 'field-text-' + langId;
        $(formSelector).find('form input[name="' + title_field + '"]').val('');
    });


    $(formSelector).find('input[name="payment-component-id"]').val('');
    $(formSelector).find('input[name="cp-allow-skip-donation"]').prop('checked', false);
    $(formSelector).find('input[name="cp-is-recurring-billing"]').prop('checked', false);
    $(formSelector).find('input[name="cp-inclue-processor-transaction-fee"]').prop('checked', false);
    $(formSelector).find('input[name="cp-show-quantity-in-form"]').prop('checked', false);
    $(formSelector).find('input[name="cp-show-fee-in-form"]').prop('checked', false);
    $(formSelector).find('input[name="cp-display-frequencies-in-form"]').prop('checked', false);
    $(formSelector).find('select[name="cp-frequencies-to-display"]').val('');
    $(formSelector).find('select[name="pc-payment-recurring-billing-interval"]').val('');
    $(formSelector).find('select[name="pc-payment-recurring-billing-interval-count"]').val('');
    $(formSelector).find('input[name="cp-show-bank-payment"]').prop('checked', false);
    $(formSelector).find('input[name="pc-payment-btn-label"]').prop('checked', false);
    $(formSelector).find('input[name="pc-payment-hide-pay-amounts"]').prop('checked', false);
    $(formSelector).find('input[name="pc-payment-hide-pay-with"]').prop('checked', false);
    $(formSelector).find('input[name="pc-payment-get-salesforce-amount"]').prop('checked', false);
    $(formSelector).find('input[name="pc-use-paypal"]').prop('checked', false);
    $(formSelector).find('input[name="donation-amounts-list"]').val('');
    $(formSelector).find('input[name="number_amounts"]').val('');
    $(formSelector).find('input[name="donation-amount-json"]').val('');
    $(formSelector).find('input[name="label-donation"]').val('');
    $(formSelector).find('input[name="label-donation"]').val('');
    $(formSelector).find('input[name="cp-allow-other"]').prop('checked', false);
    $(formSelector).find('input[name="cp-allow-another-additional-amount"]').prop('checked', false);
    $(formSelector).find('input[name="cp-allow-select-multiple-amount"]').prop('checked', false);
    $(formSelector).find('input[name="cp-display-amount-vertical"]').prop('checked', false);
    $(formSelector).find('input[name="cp-display-add-remove-btn"]').prop('checked', false);
    $(formSelector).find('input[name="cp-hide-title"]').prop('checked', false);
    $(formSelector).find('select[name="sf-label-pc"]').val('none');
    $(formSelector).find('select[name="sf-amount-pc"]').val('none');
    $(formSelector).find('select[name="sf-transtaction-id"]').val('none');
    $(formSelector).find('select[name="sf-transtaction-status"]').val('none');
    $(formSelector).find('select[name="sf-transtaction-payment-method"]').val('none');
    $(formSelector).find('select[name="sf-transtaction-payment-billing-name"]').val('none');
    $(formSelector).find('select[name="sf-transtaction-payment-subscription-info"]').val('none');
    $(formSelector).find('select[name="sf-total-transaction-fee"]').val('none');
    $(formSelector).find('select[name="sf-get-salesforce-amount-field"]').val('none');

    $(formSelector).find('input[name="prod-paypal-client-id"]').val('');
    $(formSelector).find('input[name="prod-paypal-secret-id"]').val('');
    $(formSelector).find('input[name="sandbox-paypal-client-id"]').val('');
    $(formSelector).find('input[name="sandbox-paypal-secret-id"]').val('');


    
    $(formSelector).find('#table-amounts tbody').empty();
}

function load_payment_component_selected_formbuilder(data) {
    var formSelector = '#form-builder-block';

    if (data !== null && data.properties !== null && data.properties !== undefined) {

        $(formSelector).find('form ul.tabs li a').each(function () {
            var langId = $(this).data('language-id');
            var label = 'label-' + langId;
            var helptext = 'helptext_field-' + langId;
            var label_textarea = 'label-textarea-' + langId;
            var option_checkbox = 'checkbox-option-' + langId;
            var text_validation = 'number_validation_text-' + langId;
            $(formSelector).find('form input[name="' + text_validation + '"]').val('');
            $(formSelector).find('form input[name="' + label + '"]').val('');
            $(formSelector).find('form input[name="' + helptext + '"]').val('');
            $(formSelector).find('.dropdown-options[data-language-id="' + langId + '"] .added').remove();
            $(formSelector).find('.dropdown-options-reloaded[data-language-id="' + langId + '"] textarea').val('');
            if (CKEDITOR.instances[label_textarea] !== null && CKEDITOR.instances[label_textarea] !== undefined)
                CKEDITOR.instances[label_textarea].setData('');
            $(formSelector).find('form input[name="' + option_checkbox + '"]').val('');
        });



        data.properties.forEach(function (key) {
            switch (key.name) {
                case 'field_id': $(formSelector).find('input[name="field_id"]').val(key.value); break;
                case 'block_id': $(formSelector).find('input[name="block_id"]').val(key.value); break;
                case 'payment-component-id': $(formSelector).find('input[name="payment-component-id"]').val(key.value); break;
                case 'pc-use-paypal':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="pc-use-paypal"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="pc-use-paypal"]').prop('checked', false);
                    }
                    break;
                
                case 'cp-is-recurring-billing':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-is-recurring-billing"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-is-recurring-billing"]').prop('checked', false);
                    }
                    break;
                case 'cp-inclue-processor-transaction-fee':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-inclue-processor-transaction-fee"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-inclue-processor-transaction-fee"]').prop('checked', false);
                    }
                    break;
                case 'cp-show-quantity-in-form':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-show-quantity-in-form"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-show-quantity-in-form"]').prop('checked', false);
                    }
                    break;
                case 'cp-show-fee-in-form':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-show-fee-in-form"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-show-fee-in-form"]').prop('checked', false);
                    }
                    break;
                case 'cp-display-frequencies-in-form':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-display-frequencies-in-form"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-display-frequencies-in-form"]').prop('checked', false);
                    }
                    break;
                case 'cp-frequencies-to-display':
                    let isdefault = false;
                    if(key.value != null && key.value != '' ){
                        var selectedValues = JSON.parse(key.value);
                        if (selectedValues.length > 0 ) {
                            $(formSelector).find('select[name="cp-frequencies-to-display"]').val(selectedValues);
                            $(formSelector).find('select[name="cp-frequencies-to-display"]').multiselect('reload');
                        }else{
                           isdefault = true; 
                        } 
                    }else{
                        isdefault = true;
                    }
                    if (isdefault === true) {
                        selectedValues = ["month","year"];
                        $(formSelector).find('select[name="cp-frequencies-to-display"]').val(selectedValues);
                        $(formSelector).find('select[name="cp-frequencies-to-display"]').multiselect('reload');
                    }
                    break;
                case 'pc-payment-recurring-billing-interval':
                    $(formSelector).find('select[name="pc-payment-recurring-billing-interval"]').val(key.value);
                    break;
                case 'pc-payment-recurring-billing-interval-count':
                    $(formSelector).find('select[name="pc-payment-recurring-billing-interval-count"]').val(key.value);
                    break;
                case 'cp-show-bank-payment':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-show-bank-payment"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-show-bank-payment"]').prop('checked', false);
                    }
                    break;
                case 'cp-allow-skip-donation':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-allow-skip-donation"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-allow-skip-donation"]').prop('checked', false);
                    }
                    break;
                case 'pc-payment-btn-label':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="pc-payment-btn-label"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="pc-payment-btn-label"]').prop('checked', false);
                    }
                    break;

                case 'pc-payment-hide-pay-amounts':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="pc-payment-hide-pay-amounts"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="pc-payment-hide-pay-amounts"]').prop('checked', false);
                    }
                    break;

                case 'pc-payment-hide-pay-with':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="pc-payment-hide-pay-with"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="pc-payment-hide-pay-with"]').prop('checked', false);
                    }
                    break;
                case 'pc-payment-get-salesforce-amount':
                    (key.value === 'on')? $(formSelector).find('input[name="pc-payment-get-salesforce-amount"]').prop('checked', true) :$(formSelector).find('input[name="pc-payment-get-salesforce-amount"]').prop('checked', false);
                    break;
                
                case 'donation-amounts-list':
                    $(formSelector).find('input[name="donation-amounts-list"]').val(key.value);
                    break;
                case 'number_amounts':
                    $(formSelector).find('input[name="number_amounts"]').val(key.value);
                    break;
                case 'donation-amount-json':
                    $(formSelector).find('input[name="donation-amount-json"]').val(key.value);
                    break;
                case 'label-donation':
                    $(formSelector).find('input[name="label-donation"]').val(key.value);
                    break;
                case 'donation-amount':
                    $(formSelector).find('input[name="donation-amount"]').val(key.value);
                    break;
                case 'cp-allow-other':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-allow-other"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-allow-other"]').prop('checked', false);
                    }
                    break;
                case 'cp-allow-another-additional-amount':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-allow-another-additional-amount"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-allow-another-additional-amount"]').prop('checked', false);
                    }
                    break;
                case 'cp-allow-select-multiple-amount':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-allow-select-multiple-amount"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-allow-select-multiple-amount"]').prop('checked', false);
                    }
                    break;
                case 'cp-display-amount-vertical':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-display-amount-vertical"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-display-amount-vertical"]').prop('checked', false);
                    }
                    break;
                case 'cp-display-add-remove-btn':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-display-add-remove-btn"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-display-add-remove-btn"]').prop('checked', false);
                    }
                    break;
                    
                case 'cp-hide-title':
                    if (key.value === 'on') {
                        $(formSelector).find('input[name="cp-hide-title"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="cp-hide-title"]').prop('checked', false);
                    }
                    break;
                case 'sf-amount-pc':
                    $(formSelector).find('select[name="sf-amount-pc"]').val(key.value);
                    break;
                case 'sf-label-pc':
                    $(formSelector).find('select[name="sf-label-pc"]').val(key.value);
                    break;
                case 'sf-transtaction-id':
                    if (key.value === null)
                        key.value = 'none';
                    $(formSelector).find('select[name="sf-transtaction-id"]').val(key.value);
                    break;
                case 'sf-transtaction-status':
                    if (key.value === null)
                        key.value = 'none';
                    $(formSelector).find('select[name="sf-transtaction-status"]').val(key.value);
                    break;
                case 'sf-transtaction-payment-method':
                    if (key.value === null)
                        key.value = 'none';
                    $(formSelector).find('select[name="sf-transtaction-payment-method"]').val(key.value);
                    break;
                case 'sf-transtaction-payment-billing-name':
                    if (key.value === null)
                        key.value = 'none';
                    $(formSelector).find('select[name="sf-transtaction-payment-billing-name"]').val(key.value);
                    break;
                case 'sf-transtaction-payment-subscription-info':
                    if (key.value === null)
                        key.value = 'none';
                    $(formSelector).find('select[name="sf-transtaction-payment-subscription-info"]').val(key.value);
                    break;
                case 'sf-total-transaction-fee':
                    if (key.value === null)
                        key.value = 'none';
                    $(formSelector).find('select[name="sf-total-transaction-fee"]').val(key.value);
                    break;
                    
                case 'sf-get-salesforce-amount-field':
                    if (key.value === null)
                        key.value = 'none';
                    $(formSelector).find('select[name="sf-get-salesforce-amount-field"]').val(key.value);
                    break;

                case 'pc-payment-process':
                    $(formSelector).find('select[name="pc-payment-process"]').val(key.value);
                    break;
                case 'pc-payment-currency':
                    $(formSelector).find('select[name="pc-payment-currency"]').val(key.value);
                    break;

                case 'pc-payment-transaction-fee-type-fixed-amount':
                    $(formSelector).find('input[name="pc-payment-transaction-fee-type-fixed-amount"]').val(key.value);
                    break;

                case 'pc-payment-transaction-fee-type-fixed-percent':
                    $(formSelector).find('input[name="pc-payment-transaction-fee-type-fixed-percent"]').val(key.value);
                    break;

                case 'pc-payment-transaction-fee-type':
                    $(formSelector).find('select[name="pc-payment-transaction-fee-type"]').val(key.value);
                    break;                 
                case 'pc-paypal-mode':
                    $(formSelector).find('select[name="pc-paypal-mode"]').val(key.value);
                    break;
                case 'prod-paypal-client-id':
                    $(formSelector).find('input[name="prod-paypal-client-id"]').val(key.value);
                    break;
                case 'prod-paypal-secret-id':
                    $(formSelector).find('input[name="prod-paypal-secret-id"]').val(key.value);
                    break;
                case 'sandbox-paypal-client-id':
                    $(formSelector).find('input[name="sandbox-paypal-client-id"]').val(key.value);
                    break;
                case 'sandbox-paypal-secret-id':
                    $(formSelector).find('input[name="sandbox-paypal-secret-id"]').val(key.value);
                    break;
                case 'payment-component-alignment':
                    $(formSelector).find('select[name="payment-component-alignment"]').val(key.value);
                    break;
                case 'do_not_save_field_to_database':
                    if (key.value === 'on' || key.value == true) {
                        $(formSelector).find('input[name="do_not_save_field_to_database"]').prop('checked', true);
                    } else {
                        $(formSelector).find('input[name="do_not_save_field_to_database"]').prop('checked', false);
                    }
                    break;

            }
            change_text_label_payment_api_keys(formSelector);

            if (key.name.indexOf('field-text') !== -1) {
                $(formSelector).find('form ul.tabs li a').each(function () {
                    var langId = $(this).data('language-id');
                    var title_field = 'field-text-' + langId;
                    if (key.name == title_field) {

                        $(formSelector).find('form input[name="' + title_field + '"]').val(key.value);
                    }
                });

            }

            if ($(formSelector).find('input[name="save_data_salesforce"]:checked').length > 0) {
                $(formSelector).find('.pc_sync_with_salesforce').removeClass('hidden');
            } else {
                $(formSelector).find('.pc_sync_with_salesforce').addClass('hidden');

            }
        });

        rebuild_payment_component(formSelector);
        hide_show_payment_amounts_config(formSelector);
        change_fields_elements(formSelector);
    }
}

/* Hide - Show Get salesforce Amount*/
function hide_show_payment_amounts_config(formSelector){
    if($(formSelector).find('input[name="update_record"]').is(':checked')){
        $(formSelector).find('.get-salesforce-payment-data').show();
        if($(formSelector).find('input[name="pc-payment-get-salesforce-amount"]').is(':checked')){
            $(formSelector).find('.donation-values').hide();
            $(formSelector).find('input[name="cp-allow-another-additional-amount"]').prop('checked', false);
        }else{
            $(formSelector).find('.donation-values').show()
        }
    }else{
        $(formSelector).find('.get-salesforce-payment-data').hide();
        $(formSelector).find('.donation-values').show()
    }
    if($(formSelector).find('input[name="cp-allow-select-multiple-amount"]').is(':checked')){
        $(formSelector).find('.display-add-remove-options').show();
        $(formSelector).find('.display-other-amount').hide();
        $(formSelector).find('input[name="cp-allow-other"]').prop('checked', false);
    }else{
        $(formSelector).find('.display-add-remove-options').hide();
        $(formSelector).find('.display-other-amount').show();
    }
    if($(formSelector).find('input[name="cp-allow-other"]').is(':checked')){
        $(formSelector).find('.display-another-additional-amount').hide();
        $(formSelector).find('input[name="cp-allow-another-additional-amount"]').prop('checked', false);
    }else{
        if($(formSelector).find('input[name="cp-allow-another-additional-amount"]').is(':checked')){
            $(formSelector).find('.display-other-amount').hide();
            $(formSelector).find('input[name="cp-allow-other"]').prop('checked', false);
        }else{
            $(formSelector).find('.display-another-additional-amount').show();
            if (!$(formSelector).find('input[name="cp-allow-select-multiple-amount"]').is(':checked')) {
                $(formSelector).find('.display-other-amount').show();
            }
        }
    }
}
function change_fields_elements(formSelector){
        $(formSelector).find('input[name="update_record"]').change(function(event) {
            hide_show_payment_amounts_config(formSelector);
        });
        $(formSelector).find('input[name="pc-payment-get-salesforce-amount"]').change(function(event) {
            hide_show_payment_amounts_config(formSelector);
        });
        $(formSelector).find('input[name="cp-allow-select-multiple-amount"]').change(function(event) {
            hide_show_payment_amounts_config(formSelector);
        });
        $(formSelector).find('input[name="cp-allow-other"]').change(function(event) {
            hide_show_payment_amounts_config(formSelector);
        });
        $(formSelector).find('input[name="cp-allow-another-additional-amount"]').change(function(event) {
            hide_show_payment_amounts_config(formSelector);
        });
}

/*Change text Label Payment Processor Settings  */
function change_text_label_payment_api_keys(formSelector){
    var current_payment = $(formSelector).find('select[name="pc-payment-process"]').val();
    if (current_payment == 'AUTHORIZENET') {
       $(formSelector).find('.paypal-custom-sandbox-configure label.label-cliend-id').text('Login ID');
       $(formSelector).find('.paypal-custom-sandbox-configure label.label-secret-id').text('Transaction Key');
       $(formSelector).find('.paypal-production-configure label.label-cliend-id').text('Login ID');
       $(formSelector).find('.paypal-production-configure label.label-secret-id').text('Transaction Key');
       $(formSelector).find('.row-payment-method').show();
       $(formSelector).find('.row-show-bank-payment').hide();
       $(formSelector).find('.row-is-recurring-billing').hide();
       $(formSelector).find('.row-payment-subscription').hide();
   }else if(current_payment == 'STRIPE'){
       $(formSelector).find('.paypal-custom-sandbox-configure label.label-cliend-id').text('Publishable key');
       $(formSelector).find('.paypal-custom-sandbox-configure label.label-secret-id').text('Secret key');
       $(formSelector).find('.paypal-production-configure label.label-cliend-id').text('Publishable key');
       $(formSelector).find('.paypal-production-configure label.label-secret-id').text('Secret key');
       $(formSelector).find('.row-payment-method').show();
       $(formSelector).find('.row-show-bank-payment').show();
       $(formSelector).find('.row-is-recurring-billing').show();
       $(formSelector).find('.row-payment-subscription').show();
   }else{
       $(formSelector).find('.paypal-custom-sandbox-configure label.label-cliend-id').text('Client ID');
       $(formSelector).find('.paypal-custom-sandbox-configure label.label-secret-id').text('Secret ID');
       $(formSelector).find('.paypal-production-configure label.label-cliend-id').text('Client ID');
       $(formSelector).find('.paypal-production-configure label.label-secret-id').text('Secret ID');
       $(formSelector).find('.row-payment-method').hide();
       $(formSelector).find('.row-show-bank-payment').hide();
       $(formSelector).find('.row-is-recurring-billing').show();
       $(formSelector).find('.row-payment-subscription').show();
   }
}

/*Show or Hide Inclue Transaction Fee  */
function change_include_transaction_fee(formSelector){
    var include_transaction_fee = $(formSelector).find('input[name="cp-inclue-processor-transaction-fee"]').is(':checked');
    if(include_transaction_fee){
            $(formSelector).find('.row-show-fee-in-form').show();
            $(formSelector).find('.row-payment-total-transaction-fee').show();
            $(formSelector).find('.row-payment-amount').find('label').text('Salesforce Field for Total Amount');
    }else{
            $(formSelector).find('.row-show-fee-in-form').hide();
            $(formSelector).find('.row-payment-total-transaction-fee').hide();
            $(formSelector).find('.row-payment-amount').find('label').text('Salesforce Field for Amount');
    }
}

/*Show or Hide Recurring Billing Fields  */
function change_is_recurring_billing(formSelector){
    var current_payment = $(formSelector).find('select[name="pc-payment-process"]').val();
    var is_recurring_active = $(formSelector).find('input[name="cp-is-recurring-billing"]').is(':checked');
    var is_display_frequencies_active = $(formSelector).find('input[name="cp-display-frequencies-in-form"]').is(':checked');
    if(current_payment != 'AUTHORIZENET' && is_recurring_active == true){
        $(formSelector).find('.row-display-frequencies-in-form').show();
        $(formSelector).find('.row-payment-subscription').show();
        if(is_display_frequencies_active == true ){
            $(formSelector).find('select[name="pc-payment-recurring-billing-interval"]').val('');
            $(formSelector).find('.row-is-recurring-billing-frequency').hide();
            $(formSelector).find('.row-frequencies-to-display').show();
            $(formSelector).find('.row-frequencies-to-display select[name="cp-frequencies-to-display"]').multiselect('destroy');
            $(formSelector).find('.row-frequencies-to-display select[name="cp-frequencies-to-display"]').multiselect();
        }else{
            $(formSelector).find('.row-is-recurring-billing-frequency').show();
            $(formSelector).find('.row-frequencies-to-display').hide();
        }
    }else{
        $(formSelector).find('select[name="pc-payment-recurring-billing-interval"]').val('');
        $(formSelector).find('.row-is-recurring-billing-frequency').hide();
        $(formSelector).find('.row-display-frequencies-in-form').hide();
        $(formSelector).find('.row-frequencies-to-display').hide();
        $(formSelector).find('.row-payment-subscription').hide();
    }
}

function change_is_inclue_processor_transaction_fee(formSelector){
    var is_transaction_fee = $(formSelector).find('input[name="cp-inclue-processor-transaction-fee"]').is(':checked');
    var transaction_fee_type = $(formSelector).find('select[name="pc-payment-transaction-fee-type"]').val();
    $(formSelector).find('.row-inclue-processor-transaction-fee-types').removeClass('is-active');
    if(is_transaction_fee){
        $(formSelector).find('.row-inclue-processor-transaction-fee-types').show();
        $(formSelector).find('.column-transaction-fee-type').show();
        if(transaction_fee_type == 'FIXEDAMOUNT'){
            $(formSelector).find('.column-transaction-fee-fixed-amount').show();
            $(formSelector).find('.column-transaction-fee-fixed-percent').hide();
        }else if(transaction_fee_type == 'PERCENT'){
            $(formSelector).find('.row-inclue-processor-transaction-fee-types').addClass('is-active');
            $(formSelector).find('.column-transaction-fee-fixed-amount').hide();
            $(formSelector).find('.column-transaction-fee-fixed-percent').show();
        }else if(transaction_fee_type == 'FIXEDAMOUNTPERCENT'){
            $(formSelector).find('.column-transaction-fee-fixed-amount').show();
            $(formSelector).find('.column-transaction-fee-fixed-percent').show();
        }else{
            $(formSelector).find('.row-inclue-processor-transaction-fee-types').hide();
        }
    }else{
        $(formSelector).find('.row-inclue-processor-transaction-fee-types').hide();
        $(formSelector).find('.column-transaction-fee-type').hide();
    }
}

/** frontend **/
function load_payment_component_frontend() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    if ($('.formBlock').length > 0) {
        $('.formBlock').each(function () {
            var self = $(this);
            let isAllowSelectMultipleAmount = self.find('input[name="isAllowSelectMultipleAmount"]').val();
            let is_show_quantity_in_form = self.find('input[name="is_show_quantity_in_form"]').val();
            let is_allow_another_additional_amount = self.find('input[name="allow_another_additional_amount"]').val();
            if (self.find('.payment-component').length > 0) {

                var donate_pay_text =  self.find('input[name="donate_pay_text"]').val();

                if (self.find('input[name="amountField"]').length > 0) {
                    var amountSelected = self.find('input[name="amountField"]').first().val();
                    var quantity = 1;
                    var quantity_label = 'x1';
                    var amountSelectedLabel = self.find('input[name="amountField"]').first().attr('data-amount-label');
                    var amount_label = '$'+(amountSelected/100);
                    var final_label = (amountSelectedLabel==amount_label)?amountSelectedLabel:amount_label+'['+amountSelectedLabel+']';
                    amountSelectedLabel = '('+final_label+')';
                    var is_inclue_processor_transaction_fee = self.find('input[name="is_inclue_processor_transaction_fee"]').val();
                    var is_show_fee_in_form = self.find('input[name="is_show_fee_in_form"]').val();
                    var isshowfeeinform = self.find('input[name="isshowfeeinform"]').prop('checked');
                    var transaction_fee = parseFloat(self.find('input[name="transaction_fee"]').val());
                    var transaction_fixed_fee = parseFloat(self.find('input[name="transaction_fixed_fee"]').val());

                    var paymentTotalFeeAmount = '';
                    var formAmountOtherValueLabel = '';
                    if(isAllowSelectMultipleAmount != "true" ){
                        self.find('input[name="amountField"]').first().prop('checked', true);
                    }

                    if(is_show_quantity_in_form == 'true'){
                        let first_quantity = self.find('input[name="quantity"]').first().val();
                        if(first_quantity > 1){
                            amountSelected = amountSelected * first_quantity;
                            quantity_label = 'x'+first_quantity;
                        }
                        amountSelectedLabel = '('+final_label + quantity_label+')';
                    }
                    if(isAllowSelectMultipleAmount === "true"){
                        let amount = 0;
                        let label = "";
                        self.find('.amount_listing .amount_item').each(function(index, el) {
                            if ($(el).find('input[name="amountField"]').is(':checked')) {
                                $(this).addClass("amount-active");
                                var current_amount = parseFloat($(el).find('input[name="amountField"]').val());
                                var current_label_amount = $(el).find('input[name="amountField"]').attr('data-amount-label');
                                var amount_label = '$'+(current_amount/100);
                                var final_label = (current_label_amount==amount_label)?current_label_amount:amount_label+'['+current_label_amount+']';
                                if(is_show_quantity_in_form == "true"){
                                      quantity = $(this).find('input[name="quantity"]').val();
                                        if(quantity > 1){
                                            current_amount = current_amount * quantity;
                                            quantity_label = 'x'+quantity;
                                        }
                                    amount = amount + current_amount;
                                    label = (label != "")? label+' + ' + '('+final_label+quantity_label+')':label+ '('+final_label+quantity_label+')';
                                }else{
                                    amount = amount + parseFloat($(el).find('input[name="amountField"]').val());
                                    label = (label != "")? label+' + ' + '('+final_label+')':label+ '('+final_label+')';
                                }
                            }else{
                                 $(this).removeClass("amount-active");
                            }
                        });
                        amountSelected = amount;
                        amountSelectedLabel = label;
                        self.find('span.total-payment').text('$'+(amount/100));
                    }
                    if(is_inclue_processor_transaction_fee == 'true'){
                        //self.find('div.container-total-payment-and-fee').show();
                        self.find('div.container-total-payment').hide();
                        let calcule_fee = true;
                        if(is_show_fee_in_form == 'true'){
                            if(!isshowfeeinform){
                                calcule_fee = false;
                            }
                        }
                            var get_original_amount = parseFloat(amountSelected/100);
                            var fee_amount = parseFloat(((get_original_amount*transaction_fee)/100) + transaction_fixed_fee);
                            fee_amount = (get_original_amount > 0 && calcule_fee)?parseFloat(fee_amount.toFixed(2)):0;
                            var amount_and_fee = (get_original_amount > 0)?(get_original_amount + fee_amount):0;
                            self.find('.container-total-payment-and-fee span.total-payment').text('$'+amount_and_fee.toFixed(2));
                            self.find('.container-total-payment-and-fee span.total-fee').text('$'+fee_amount.toFixed(2));
                            amountSelected = Math.round(amount_and_fee * 100);
                            amountSelectedLabel = amountSelectedLabel+'+($'+fee_amount+ ' fee)';

                        

                            paymentTotalFeeAmount = fee_amount;
                    }
                    if(is_show_quantity_in_form == 'true' || is_allow_another_additional_amount == 'true'){
                        let sub_total =(amountSelected/100);
                        self.find('.sub-total-item span.total-payment').text('$'+sub_total);
                    }
                    //Set value to hidden of form amount field
                    self.find('input[name="TotalFee"]').val(paymentTotalFeeAmount);
                    self.find('input[name="formAmountField"]').val(amountSelected);
                    self.find('input[name="formAmountLabel"]').val(amountSelectedLabel);
                    self.find('input[name="formAmountFieldP"]').val(amountSelected);
                    self.find('input[name="formAmountLabelP"]').val(amountSelectedLabel);

                    //If the first amount is "Other amount" enable otherAmount textfield
                    if (amountSelected !== 'Other Amount') {
                        self.find('input[name="amount_other_value"]').attr('readonly', 'readonly');
                    }
                    else {
                        self.find('input[name="amount_other_value"]').removeAttr('readonly');
                    }


                }


                if (self.find('input[name="payment_processor"]').length > 0) {
                    self.find('input[name="payment_processor"]').first().prop('checked', true);
                    var selected = self.find('input[name="payment_processor"]').first().val();
                    if (self.find('.row.payment-component').hasClass('is-hidden') || self.find('.row.payment-component').closest('.section').closest('.row').hasClass('is-hidden')) {
                        selected = '';
                    }
                    self.find('input[name="processor_selected"]').val(selected);
                    if (selected.toLocaleLowerCase() === "paypal") {
                        self.find('input[name="urlToProcess"]').val(urlSite + "/Payment/ProcessPaypalDonation");
                    }
                    if (selected.toLocaleLowerCase() === "stripe") {
                        self.find('input[name="urlToProcess"]').val(urlSite + "/Payment/ProcessStripeDonation");
                    }
                    if (selected.toLocaleLowerCase() === "authorizenet") {
                        self.find('input[name="urlToProcess"]').val(urlSite + "/Payment/ProcessAuthorizenetDonation");
                    }
                    if (selected == '') {
                        self.find('input[name="prefer_not_donate"]').prop('checked', true);
                    }

                    if (self.find('a.submit-button.from-view').length > 0) {
                        var payment_form = self.find('.row.payment-component');
                        var current_text = self.find('a.submit-button.from-view').attr('data-original-label');

                       var label_button = (current_text!='')? current_text : "Proceed to payment";

                        if (payment_form.hasClass('is-hidden') || payment_form.closest('.section').closest('.row').hasClass('is-hidden')) {
                                self.find('a.submit-button.from-view').text(current_text);
                            }else{ 
                                self.find('a.submit-button.from-view').text(label_button);
                            }

                    }

                    self.find('input[name="payment_processor"]').on('change', function () {
                        var selected = $(this).val();

                        if (self.find('a.submit-button.from-view').length > 0) {
                            var current_text = self.find('a.submit-button.from-view').attr('data-original-label');
                            var label_button = (current_text!='')? current_text : "Proceed to payment";
                            self.find('a.submit-button.from-view').text(label_button);
                        }
                        if (selected.toLocaleLowerCase() === "paypal") {
                            self.find('input[name="urlToProcess"]').val(urlSite + "/Payment/ProcessPaypalDonation");
                        }else if (selected.toLocaleLowerCase() === "stripe") {
                            self.find('input[name="urlToProcess"]').val(urlSite + "/Payment/ProcessStripeDonation");
                        }else if (selected.toLocaleLowerCase() === "authorizenet") {
                            self.find('input[name="urlToProcess"]').val(urlSite + "/Payment/ProcessAuthorizenetDonation");
                        }
                        self.find('input[name="processor_selected"]').val(selected);
                        if (self.find('input[name="prefer_not_donate"]').length > 0) {
                            self.find('input[name="prefer_not_donate"]').prop('checked', false);
                        }

                    });

                }


                if (self.find('input[name="prefer_not_donate"]').length > 0) {
                    self.find('input[name="prefer_not_donate"]').on('change', function () {
                        if ($(this).is(':checked')) {
                            self.find('input[name="payment_processor"]').prop('checked', false);
                            var current_text = self.find('a.submit-button.from-view').attr('data-original-label');
                            self.find('a.submit-button.from-view').text(current_text);
                            self.find('input[name="processor_selected"]').val("skip_donation");
                            self.find('input[name="urlToProcess"]').val("");

                        } else {
                            self.find('input[name="payment_processor"]').prop('checked', true);
                            self.find('input[name="payment_processor"]').trigger('change');
                        }

                    });
                }

                self.on('change', 'input[name="quantity"]', function () {
                    if($(this).closest('.amount_item').find('input[name="amountField"]').is(':checked')){
                        $(this).closest('.amount_item').find('input[name="amountField"]').change();
                    }
                });

                self.on('change', '.quantity input[name="text-quantity"]', function () {
                    let select_val = $(this).val();
                    if(select_val > 0 ){
                        $(this).siblings('input[name="quantity"]').val(select_val).change();
                    }
                });

                self.on('blur', '.quantity input[name="text-quantity"]', function () {
                    let select_val = $(this).val();
                    if(select_val == '' ){
                        $(this).hide();
                        $(this).siblings('select.select-quantity').show().val(1).change();
                    }
                });

                self.on('change', '.quantity select', function () {
                    let select_val = $(this).val();
                    if(select_val != '+'){
                        $(this).siblings('input[name="quantity"]').val(select_val).change();
                    }else{
                        $(this).hide();
                        $(this).siblings('input[name="text-quantity"]').show().focus();
                        $(this).siblings('input[name="quantity"]').val(1).change();
                    }
                });

                //Event if is change the value of radio amount enable or disable amount field
                self.on('change', 'input[name="amountField"],input[name="isshowfeeinform"],input[name="another_additional_amount_value"]', function () {
                    //var amountSelected = $(this).val();
                    //var amountSelectedLabel = $(this).attr('data-amount-label');
                    var item_selected = self.find('input[name="amountField"]:checked');
                    var amountSelected = self.find('input[name="amountField"]:checked').val();
                    var amountSelectedLabel = self.find('input[name="amountField"]:checked').attr('data-amount-label');
                    var amountlabel =(amountSelected=='Other Amount')?'$'+(parseFloat(amountSelected)/100):'$'+(parseFloat(amountSelected)/100);
                    var final_label = (amountSelectedLabel==amountlabel)?amountSelectedLabel:amountlabel +'['+amountSelectedLabel+']';
                    var amountSelectedother = (amountSelectedLabel=='Other Amount')? self.find('input[name="amount_other_value"]').val() :'';
                    amountSelectedLabel = (amountSelectedLabel=='Other Amount')?amountSelectedLabel:'('+final_label+')';
                    var is_inclue_processor_transaction_fee = self.find('input[name="is_inclue_processor_transaction_fee"]').val();
                    var is_show_fee_in_form = self.find('input[name="is_show_fee_in_form"]').val();
                    var isshowfeeinform = self.find('input[name="isshowfeeinform"]').prop('checked');
                    var is_show_quantity_in_form = self.find('input[name="is_show_quantity_in_form"]').val();
                    let is_allow_another_additional_amount = self.find('input[name="allow_another_additional_amount"]').val();
                    let another_additional_amount = (is_allow_another_additional_amount=='true')?self.find('input[name="another_additional_amount_value"]').val()*100:0;
                        another_additional_amount = parseFloat(another_additional_amount);
                    let another_additional_amount_label = '+($'+((another_additional_amount/100).toFixed(2))+' Additional Amount)';
                    var quantity = 1;
                    var quantity_label = 'x1';
                    var transaction_fee = parseFloat(self.find('input[name="transaction_fee"]').val());
                    var transaction_fixed_fee = parseFloat(self.find('input[name="transaction_fixed_fee"]').val());
                    var paymentTotalFeeAmount ='';
                    var formAmountOtherValueLabel = '';
                    if(is_show_quantity_in_form == "true" && amountSelected != 'Other Amount'){
                        if(amountSelected == 'Other Amount'){
                            amountSelected = self.find('input[name="amount_other_value"]').val()*100;
                        }
                        quantity = $(item_selected).closest('.amount_item').find('input[name="quantity"]').val();
                        if(quantity > 1){
                            amountSelected = amountSelected * quantity;
                            quantity_label = 'x'+quantity;
                        }
                        amountSelectedLabel = '('+final_label + quantity_label+')';
                    }
                    if (amountSelected !== 'Other Amount') {
                        if(isAllowSelectMultipleAmount === "true"){
                            self.find('input[name="amountField"][value="Other Amount"]').prop('checked', false);
                            let amount = 0;
                            let label = "";
                            self.find('.amount_listing .amount_item').each(function(index, el) {
                                if ($(el).find('input[type=checkbox][name="amountField"]').is(':checked')) {
                                    $(this).addClass("amount-active");
                                    var current_amount = parseFloat($(el).find('input[name="amountField"]').val());
                                    var current_amount_label = $(el).find('input[name="amountField"]').attr('data-amount-label');
                                    var amount_label = '$'+(current_amount/100);
                                    var final_label = (current_amount_label==amount_label)?current_amount_label:amount_label+'['+current_amount_label+']';
                                    if(is_show_quantity_in_form == "true"){
                                        quantity_label = 'x1';
                                        quantity = $(this).find('input[name="quantity"]').val();
                                        if(quantity > 1){
                                            current_amount = current_amount * quantity;
                                            quantity_label = 'x'+quantity;
                                        }
                                        amount = amount + current_amount;
                                        label = (label != "")? label+' + ' + '('+final_label +quantity_label+')':label+ '('+final_label+quantity_label+')';
                                    }else{
                                        amount = amount + parseFloat($(el).find('input[name="amountField"]').val());
                                        label = (label != "")? label+' + ' + final_label:label+ final_label;
                                    }
                                }else{
                                    $(this).removeClass("amount-active");
                                }
                            });
                            amountSelected = amount;
                            amountSelectedLabel = label;
                            self.find('span.total-payment').text('$'+(amount/100));
                        }
                    }
                    if(is_allow_another_additional_amount=='true'){
                        amountSelected = (parseFloat(amountSelected) + another_additional_amount);
                        amountSelectedLabel = amountSelectedLabel + another_additional_amount_label;
                        if(isAllowSelectMultipleAmount === "true"){
                            self.find('span.total-payment').text('$'+(amountSelected/100));
                        }
                    }
                    if(is_inclue_processor_transaction_fee == 'true'){
                        //self.find('div.container-total-payment-and-fee').show();
                        self.find('div.container-total-payment').hide();
                        let calcule_fee = true;
                        if(is_show_fee_in_form == 'true'){
                            if(!isshowfeeinform){
                                calcule_fee = false;
                            }
                        }
                            var original_amount = 0;
                            if(amountSelected !== 'Other Amount'){
                                original_amount = parseFloat((amountSelected/100));
                                var fee_amount = parseFloat(((original_amount*transaction_fee)/100) + transaction_fixed_fee);
                                fee_amount = (original_amount > 0 && calcule_fee) ?parseFloat(fee_amount.toFixed(2)):0;
                                var amount_and_fee = (original_amount > 0 )?original_amount + fee_amount:0;
                                self.find('.container-total-payment-and-fee span.total-payment').text('$'+amount_and_fee.toFixed(2));
                                self.find('.container-total-payment-and-fee span.total-fee').text('$'+fee_amount.toFixed(2));
                                amountSelected = Math.round(amount_and_fee * 100);
                                amountSelectedLabel = amountSelectedLabel +'+($'+fee_amount.toFixed(2)+ ' fee)';
                                paymentTotalFeeAmount = fee_amount;
                            }else{
                                var other_amount = (self.find('input[name="amount_other_value"]').val()!='')?self.find('input[name="amount_other_value"]').val():0;
                                var other_amount = parseFloat(other_amount);
                                var fee_amount = parseFloat(((other_amount * transaction_fee) / 100) + transaction_fixed_fee);
                                fee_amount = (other_amount > 0 && calcule_fee)  ?parseFloat(fee_amount.toFixed(2)):0;
                                var amount_and_fee = other_amount + fee_amount;
                                amount_and_fee = amount_and_fee.toFixed(2);
                                self.find('.container-total-payment-and-fee span.total-payment').text('$'+amount_and_fee);
                                self.find('.container-total-payment-and-fee span.total-fee').text('$'+fee_amount.toFixed(2));
                                amountSelectedother = amount_and_fee;
                                paymentTotalFeeAmount = fee_amount;
                                formAmountOtherValueLabel = (calcule_fee)?'($'+other_amount+'[Other Amount])+($'+fee_amount.toFixed(2)+' fee)': '($'+other_amount.toFixed(2)+'[Other Amount])';
                                //self.find('input[name="formAmountOtherValue"]').val(amount_and_fee);
                                //self.find('input[name="formAmountOtherValueP"]').val(amount_and_fee);
                            }
                    }

                    if(is_show_quantity_in_form == 'true' || is_allow_another_additional_amount == 'true'){
                        let sub_total =(amountSelected/100);
                        self.find('.sub-total-item span.total-payment').text('$'+sub_total);
                    }
                    
                    //Set value to hidden of form amount field
                    self.find('input[name="TotalFee"]').val(paymentTotalFeeAmount);
                    self.find('input[name="formAmountOtherValueLabel"]').val(formAmountOtherValueLabel);
                    self.find('input[name="formAmountField"]').val(amountSelected);
                    self.find('input[name="formAmountLabel"]').val(amountSelectedLabel);
                    self.find('input[name="formAmountFieldP"]').val(amountSelected);
                    self.find('input[name="formAmountLabelP"]').val(amountSelectedLabel);
                    if (amountSelected !== 'Other Amount') {
                        self.find('input[name="amount_other_value"]').attr('readonly', 'readonly');
                    }
                    else {
                        self.find('input[name="amount_other_value"]').removeAttr('readonly');
                        self.find('input[name="formAmountOtherValue"]').val(amountSelectedother);
                        self.find('input[name="formAmountOtherValueP"]').val(amountSelectedother);
                    }
                });

                //Event to assign to hidden value of other amount
                self.on('change focus', 'input[name="amount_other_value"]', function () {
                    var valueAmount = $(this).val();
                    var is_inclue_processor_transaction_fee = self.find('input[name="is_inclue_processor_transaction_fee"]').val();
                    var is_show_fee_in_form = self.find('input[name="is_show_fee_in_form"]').val();
                    var isshowfeeinform = self.find('input[name="isshowfeeinform"]').prop('checked');
                    var formAmountOtherValueLabel = '($'+valueAmount+'[Other Amount])';
                    var paymentTotalFeeAmount = '';
                    if(is_inclue_processor_transaction_fee == 'true'){
                        let calcule_fee = true;
                        if(is_show_fee_in_form == 'true'){
                            if(!isshowfeeinform){
                                calcule_fee = false;
                            }
                        }
                            var transaction_fee = parseFloat(self.find('input[name="transaction_fee"]').val());
                            var transaction_fixed_fee = parseFloat(self.find('input[name="transaction_fixed_fee"]').val());
                            var original_amount = parseFloat(valueAmount);
                            var fee_amount = parseFloat(((original_amount * transaction_fee) / 100) + transaction_fixed_fee);
                            fee_amount = (original_amount > 0 && calcule_fee)?parseFloat(fee_amount.toFixed(2)):0;
                            var amount_and_fee = original_amount + fee_amount;
                            amount_and_fee = (original_amount > 0)?amount_and_fee.toFixed(2):0;
                            self.find('.container-total-payment-and-fee span.total-payment').text('$'+amount_and_fee);
                            self.find('.container-total-payment-and-fee span.total-fee').text('$'+fee_amount.toFixed(2));
                            self.find('div.container-total-payment').hide();
                            valueAmount = amount_and_fee;
                            formAmountOtherValueLabel = (calcule_fee)?formAmountOtherValueLabel+'+($'+fee_amount.toFixed(2)+' fee)':formAmountOtherValueLabel;
                            paymentTotalFeeAmount = fee_amount;
                    }else{
                        self.find('.sub-total-item span.total-payment').text('$'+valueAmount);
                    }
                    if (valueAmount) {
                        self.find('input[name="formAmountOtherValue"]').val(valueAmount);
                        self.find('input[name="formAmountOtherValueP"]').val(valueAmount);
                        self.find('input[name="formAmountOtherValueLabel"]').val(formAmountOtherValueLabel);
                        self.find('input[name="TotalFee"]').val(paymentTotalFeeAmount);
                    }
                });

                $.getJSON('https://jsonip.com/?callback=?', function (data) {
                    self.find('input[name="ip_address"]').val(data.ip);
                });

                //Event to click donation field of other amount
                self.on('click', 'input[name="amount_other_value"],.other_amount input[name="amountField"]', function () {
                    self.find('input[name="amountField"]').prop('checked', false);
                    self.find('input[type=checkbox][name="amountField"]').prop('checked', false).change();
                    //Check radio of other amount and enable field
                    self.find('input[name="amount_other_value"]').removeAttr('readonly');
                    self.find('input[name="amountField"][value="Other Amount"]').prop('checked', true);
                    var amountSelected = self.find('input[name="amountField"][value="Other Amount"]').val();
                    var amountSelectedLabel = self.find('input[name="amountField"][value="Other Amount"]').attr('data-amount-label');
                    var amount_other_value = (self.find('input[name="amount_other_value"]').val())?self.find('input[name="amount_other_value"]').val():0;
                    self.find('.sub-total-item span.total-payment').text('$'+amount_other_value);
                    //Set value to hidden of form amount field
                    self.find('input[name="formAmountField"]').val(amountSelected);
                    self.find('input[name="formAmountLabel"]').val(amountSelectedLabel);
                    self.find('input[name="formAmountFieldP"]').val(amountSelected);
                    self.find('input[name="formAmountLabelP"]').val(amountSelectedLabel);
                });
            }
        });
    }
};
//Set all foundation functionalities
$(document).foundation();
/*
    Custom events and methods to implement on project
*/
$(document).ready(function () {
    window.HOCPS_Version = 'HOC3v13.0.2';
    console.log(window.HOCPS_Version + " - EU");
    window.screenWidth = 0;
    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();
    add_class_body();
    window.rowPerPage = 10;
    window.rowPerPageInSearchBlock = 50;
    // Verify the session storage information is present for logged users
    verify_session_storage_variables();

    check_shareable_link_search();

    //Assign links active with current url
    //active_menu_by_url();

    ////set item menu in visible zone
    put_menu_in_visible_zone();

    // Including validation to expand content when sidebar is empty.
    full_size_content();

    //Populate localStorage info
    read_local_storage();

    window.GeoLocationAPIRetries = 5;

    //Method to get localStorage info and send to webservice to return URL with ID of search
    save_search_parameters();

    //Custom method to widget advanced search
    custom_methods_advanced_search_widget();

    //Autocomplete city & state or zip code search box
    autocompleted_city_state_field();

    //Behavior volunteer availability widget
    volunteer_availability_widget();

    //Behavior open/close fieldset sections
    //open_close_fieldset_section();

    //Apply mmenu to mobile devices
    apply_mmenu_in_mobile();

    //Responsive class to mobile and desktop versions
    change_responsive_class();

    //Method to reset inputs
    reset_input_form();

    //JS method to display swal modal with title and message custom
    show_modal_message_swal();

    //Initialize clipboard
    initiate_clipboard_library();

    //Including jQuery Growl
    initiate_jquery_growl();

    //Fix label middle in forms
    fix_label_middle_in_forms();

    //Fix css of button and labels of form search of calendar page
    fix_label_button_calendar_page();

    //Volunteer Sign Up Form Fixes
    volunteer_signup_fixes();

    //Organization Sign Up Form Fixes
    organization_signup_fixes();

    //Opportunity Signup
    opportunity_signup();

    //Event to populate form of volunteer registration if exists values of branch logic
    volunteer_registration_populate_form();

    //Event to block waiver, check checkbox with click of content
    waiver_block_events();

    //Event and validation to modal Login and Register
    event_validation_modal_login();

    //Adding active class to first item in case there is no active menu item
    fix_active_menu();

    active_secondary_menu();

    ajax_mode_forgot_password();

    redirect_previous_page_volunteer_confirmation_registration();

    init_timepicker();

    approveOrRejectParentalConsent();

    //Event to save data form compliance progress 
    saveComplianceProgressForm();

    init_addtocalendar();

    fix_rss_title_height();
    //responsive_calendar();

    //Method to open autimatically the auxLogin modal
    verify_aux_login();

    //Validate new date
    validate_new_date_field();

    //Method to add the security field to all theforms where it is missing
    add_security_all_forms();

    //Format Date
    validate_format_date();

    //Validate CustomFields
    validate_custom_fields();

    fixes_for_mixed_menu();

    link_anchor();

    enable_fields_team_detail_page();

    //Send email in opportunity detail
    send_email_opportunity_detail();

    validate_dropdown_language_mobile();

    //Validate main phone for form Sign Up
    validate_main_phone();

    //Validate main phone for form Personal Information
    validate_main_phone_personal_information();

    //Verify if the current page has a search block
    VerifySearchBlock();

    //verify WRSCode
    verifyWRSCode();

    //Volunteer Opportunity Detail v2

    //load one step data for change password
    one_step_change_password();

    window.maxFileLengthMBForm = 20;

    print_version_behaviors();

    timer_for_custom_control_page();

    load_social_network_colors();

    remove_escape_query_string();

    add_use_this_address_event();

    

    handle_organizaton_selector();

    hide_page_content();

    ajax_reset_password_submit_function();

});

function hide_page_content() {
    if ($('input[name="hide-page-content"]').length > 0) {
        $('body.cms-item-page  div.content-page div.content-page-block').hide();
    }
}

function handle_organizaton_selector() {

    if ($("#related-organizations_filter").length > 0) {
        $("#related-organizations_filter").remove();

    }
    $('input[name="organization-search-generic"]').keyup(function () {
        var datatable = $('#related-organizations').dataTable().api();
        datatable.search($('input[name="organization-search-generic"]').val()).draw();
    });
}
function auto_process_verification_code_additional_page() {
    let formElement = $('form#verification-code-page');
    if (formElement !== undefined && formElement.length > 0 && formElement.hasClass('self-process')) {
        console.log('auto trigering verification click on button')
        formElement.find('input[id="verifybutton"]').trigger("click");
    }
}

function add_toggle_password_event() {
    try {
        if ($('.password-box input.password-field').length > 0) {
            let iconbase = $('.password-box i.toogle-password-item');
            iconbase.attr("aria-label", window.translation.show_password);
            $('.password-box i.toogle-password-item').on('click', function () {
                var parent = $(this).parent();
                let icon = $(this);
                let ispwdField = parent.find('input.password-field').prop("type").toLowerCase() == "password";
                if (ispwdField) {
                    parent.find('input.password-field').prop("type", "text");
                    parent.find('i.toogle-password-item').removeClass("fa-eye");
                    parent.find('i.toogle-password-item').addClass("fa-eye-slash");
                    icon.attr("aria-label", window.translation.hide_password);
                } else {
                    parent.find('input.password-field').prop("type", "password");
                    parent.find('i.toogle-password-item').addClass("fa-eye");
                    parent.find('i.toogle-password-item').removeClass("fa-eye-slash");
                    icon.attr("aria-label", window.translation.show_password);
                }
            });
        }
    } catch (e) {
        window.console && console.error(e)
    }
}
function add_use_this_address_event() {
    $('#address-lookup.formbuilder input#chooseaddress').on('click', function (e) {
        var containerParent = $(this).parent('div');
        if (containerParent !== undefined) {
            containerParent.find('.spinner').show();
            $(this).prop('disabled', true);
        }
        var value = $('input[name="addressId"]:checked').val();
        let sectionMachineName = $(this).data('selectedAddressComponent');
        // here call get place details and populate the form, close the modal and submit the form to builder

        if (value === "original") {
            $('#address-lookup').foundation('close');
            if ($('.section.address-component-use-address-suggestion').length > 0) {
                $('.section.address-component-use-address-suggestion').addClass('address-suggestion-completed');
                // In this case is needed invocate the case logic to calculate the latlongitude
            }
        } else {

            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

            $.ajax({
                type: "GET",
                url: urlSite + "place-details?placeId=" + encodeURIComponent(value) + "&isFromSharingPortal=false&sessionToken=" + get_session_token(),
            }).done(function (data) {

                data = JSON.parse(data);
                let sectionComponent = undefined;

                if (data.code === 200 && data.data !== undefined) {

                    sectionComponent = $('.section.address-component-use-address-suggestion[data-machine-name="' + sectionMachineName + '"]');
                    if (sectionComponent.length > 0) {

                        sectionComponent.find('input.address-component-street').val(data.data.street);
                        sectionComponent.find('input.address-component-state').val(data.data.state);
                        sectionComponent.find('input.address-component-city').val(data.data.city);
                        sectionComponent.find('select.address-component-country').val(data.data.country);
                        sectionComponent.find('input.address-component-zipcode').val(data.data.zipcode);
                        sectionComponent.find('input.address-component-latitude').val(data.data.latitude);
                        sectionComponent.find('input.address-component-longitude').val(data.data.longitude);
                        sectionComponent.removeClass("pending");

                    }
                }

                if (sectionComponent !== undefined) {
                    sectionComponent.addClass('address-suggestion-completed');

                    if (sectionComponent.parents('.formBlock.blockContainer').hasClass('arsBlock')) {
                        $('.actions_branch_logic .next_option a').trigger('click');
                    } else {
                        sectionComponent.parents('form').find('.submit-group a.submit-button').trigger('click');
                    }
                }

                $('#address-lookup').foundation('close');

            }).fail(function (jqXHR, status, error) {
                console.log("status:", status, "error:", error);
                $('#address-lookup').foundation('close');

            }).always(function () {
                sessionStorage.removeItem("session_token");
            });
        }
    });
}

function after_translation_resource_load() {
    var languageText = {
        "lengthMenu": window.translation.datatable_length,
        "zeroRecords": window.translation.datatable_zero_records,
        "info": window.translation.datatable_info,
        "infoEmpty": window.translation.datatable_info_empty,
        "paginate": {
            "first": window.translation.datatable_first,
            "last": window.translation.datatable_last,
            "next": window.translation.datatable_next,
            "previous": window.translation.datatable_previous
        },
        "processing": "<span>" + window.translation.please_wait + "</span><img src='/img/default/spinner.svg' alt='loading'/>"
    };

    //Multi-select-widget
    add_multi_select_widget();

    //Datatable widget
    datatable_widget(null, window.rowPerPage, false, languageText);

    translate_datatable_grid();

    // Event to load progress data in Compliance Forms.
    LoadDataComplianceProgressForm();

    //Including jquery-validate to all forms with class "validate"
    initiate_jquery_validate(window.translation);

    //Implement full-calendar widget
    //reload_Calendars(false);

    //Display opportunity info consulted of API
    retrieve_opportuniy_detail();

    //Display organization detail consulted of API
    retrieve_organization_detail();

    //Browse organization (Index by letter)
    browse_organization_index_letter(window.rowPerPage, languageText);

    //Events to Page Branch Logic for all pages.
    vol_page_branch_logic();

    //Events to branching Logic of Partner Registration page
    partner_page_branch_logic();

    // Method to upload profile image in oportunity singup
    upload_profile_image();

    verifySocialLogin();

    verifyRemoveSocialLogin();

    // Method to apply Drag and drop zone over input_image
    apply_drag_image_option();

    //JS validation for advanced search filter block
    advanced_search_filter_block();

    //Date picker widget
    date_picker_widget();

    // To Get the elevationCode
    GetElevationCode();

    // Event display signed-ups information in Opp Detail page
    display_modal_signed_up_information();

    //
    add_confirmation_event_to_external_opportunities();

    //Handle datatable customization
    public_team_datatable();

    //password meter event

    verify_password_meter();

    validate_login_403();

    // Verify if the user is now in a succes page after signup/express interest/waitlist
    VerifyIfIsSuccessSignupPage();

    // Logic to events about CMS Privileges
    cms_privileges_process();

    // Logict to handle virtual validations
    eventsRelatedToVirtualLocationInSearch();

    llamapi_contact_list();

    process_volunteer_detail();

    add_hoc_verification_code_events();
    load_rss();

    prevent_registration_close();

    verification_code_additional_page_hoc_actions();

    auto_process_verification_code_additional_page();

    add_toggle_password_event();

    init_date_picker_widget_pp();
    if($('body').hasClass('ars-page')){
        calculate_items();
    }

    if ($("body").hasClass("new-template-system")) {
        validate_content_page_block();
        adding_styles_in_region();
    }


}


function prevent_registration_close() {
    var alert_missing_changes = (window.alert_missing_changes != undefined) ? window.alert_missing_changes : false;
    if ($('input[name="pageARSRegistrationOrCompliance"]').length > 0) {
        if ($('input[name="pageARSRegistrationOrCompliance"]').val() == 'REGISTRATION' && $('form.form-ars').length > 0) {
            $('form.form-ars').addClass('alert-changes');
        }
    }
    if ($('form[data-evaluate-changes=true]').length > 0) {
        $('form[data-evaluate-changes=true]').each(function () {
            var hiddenInfo = JSON.stringify($(this).serializeObjectSkipUserResponse());
            var formId = $(this).prop('id');
            sessionStorage.removeItem("data-" + formId);
            sessionStorage.setItem("data-" + formId, hiddenInfo);
            $(this).addClass('prevent-changes');
        });
    }

    window.addEventListener('beforeunload', (event) => {
        var canExit = true;
        if ($('form.prevent-changes').length > 0) {
            $('form.prevent-changes').each(function () {
                var formId = $(this).prop('id');
                var hiddenInfo = sessionStorage.getItem("data-" + formId);
                if (hiddenInfo != null && hiddenInfo != undefined && hiddenInfo != JSON.stringify($(this).serializeObjectSkipUserResponse())) {
                    canExit = false;
                }
            });
        }
        if ($('form.alert-changes').length > 0) {
            canExit = false;
        }
        if (alert_missing_changes && !canExit) {
            event.returnValue = 'There is pending work. Sure you want to leave?';
        }

    });
}

$.fn.serializeObjectSkipUserResponse = function () {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function () {
        if (this.name.indexOf('user_response') != -1) {
            //continue
        }
        else if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

$.fn.serializeObject = function () {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function () {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

$.fn.dataTable.ext.type.order['decimal-num-pre'] = function (d) {

    var textValue = $(d).text();
    if (textValue.indexOf(':') != -1) {
        textValue = textValue.substring(textValue.indexOf(':') + 1);
    }
    if (textValue.trim() == '') {
        var d2 = d.replace('</strong>', '#');
        textValue = d2.substr(d2.indexOf('#') + 1);
    }
    var pointNum = parseFloat(textValue);
    if (pointNum == NaN) {
        pointNum = 0;
    }
    return pointNum;
};

$.fn.dataTable.ext.order['custom-order'] = function (settings, col) {
    return this.api().column(col, { order: 'index' }).nodes().map(function (td, i) {
        return $(td).data('sort');
    });
};

function add_confirmation_event_to_external_opportunities() {
    if ($('a.external-opportunity-information').length > 0) {
        $('body').on("click", "a.external-opportunity-information", function (e) {
            var url = $(this).attr('href');
            e.preventDefault();
            Swal.fire({
                title: window.translation.warning_go_outside_title,
                text: window.translation.warning_go_outside_msg,
                icon: "warning",
                showCancelButton: true,
                confirmButtonText: "Ok",
                closeOnConfirm: false
            }).then(function (result) {
                if (result.isConfirmed) {
                    window.open(url, '_blank');
                    Swal.close();

                }
            });

        });

    }
}

function approveOrRejectParentalConsent() {
    $("body .parental-consent-terms button").on('click', function () {
        var approve = false;
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        if ($(this).hasClass("approve") == true) {
            approve = true;
        }
        var cID = $(".parental-consent-terms input[name='contactId']").val();
        if (cID != "" && approve == true) {
            $.ajax({
                type: "POST",
                url: urlSite + "Admin/ApproveParentalConsent",
                data: { contactId: cID },
                beforeSend: function () {
                    $('.processing_screen').show();
                },
                success: function (data) {
                    data = JSON.parse(data);
                    if (data.status == "ok") {

                        Swal.fire({
                            title: window.translation.success,
                            text: window.translation.parental_consent_approved,
                            icon: "success",
                            showCancelButton: false,
                            confirmButtonText: "Ok",
                            closeOnConfirm: false

                        }).then(function (result) {
                            if (result.isConfirmed) {
                                window.location.href = urlSite;
                                Swal.close();
                                $("body .parental-consent-terms button").prop("disabled", true);

                            }
                        });


                    } else {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: data.message,
                            confirmButtonText: "Ok",
                        });
                    }

                },
                complete: function (jqXHR, textStatus) {
                    $('.processing_screen').hide();
                }
            });
        }
        if (cID != "" && approve == false) {

            Swal.fire({
                title: window.translation.warning,
                text: window.translation.are_you_sure,
                icon: "warning",
                showCancelButton: true,
                confirmButtonText: "Ok",
                closeOnConfirm: false,
            }).then(function (result) {
                if (result.isConfirmed) {
                    $.ajax({
                        type: "POST",
                        url: urlSite + "Admin/RejectParentalConsent",
                        data: { contactId: cID },
                        beforeSend: function () {
                            $('.processing_screen').show();
                        },
                        success: function (data) {
                            data = JSON.parse(data);
                            if (data.status == "ok") {

                                Swal.fire({
                                    title: window.translation.success,
                                    text: window.translation.parental_consent_rejected,
                                    icon: "success",
                                    showCancelButton: false,
                                    confirmButtonText: "Ok",
                                    closeOnConfirm: false
                                }).then(function (result2) {
                                    if (result2.isConfirmed) {
                                        window.location.href = urlSite;
                                        swal.close();
                                        $("body .parental-consent-terms button").prop("disabled", true);
                                    }
                                });
                            } else {
                                Swal.fire({
                                    title: "",
                                    icon: "error",
                                    text: data.message,
                                    confirmButtonText: "Ok",
                                });
                            }

                        },
                        complete: function (jqXHR, textStatus) {
                            $('.processing_screen').hide();
                        }
                    });
                }
            });

        }
    });
}

function verifySocialLogin() {
    if ($("div.social-login-enabled").length > 0) {
        var text = $("div.social-login-enabled .social-login-message").html();
        var provider = $("div.social-login-enabled input[name='providerCallBack']").val();
        var options = {
            html: text,
            icon: "warning",
            showCancelButton: true,
            confirmButtonClass: 'btn-danger',
            confirmButtonText: window.translation.social_login_link_continue,
            cancelButtonText: window.translation.social_login_link_cancel,
            closeOnConfirm: true,
            showLoaderOnConfirm: false,
            closeOnCancel: true,

        };

        Swal.fire(options).then(function (result) {
            if (result.isConfirmed) {
                $("button." + provider + "-login").hide();
                $("img.spinner-fb." + provider).show();
                $("div.social-login-enabled form#confirm-link-account").submit();
            }
        });

    }
}

function removeSocialLogin(provider) {
    $("div.social-login-box form.remove-social-account button.unlink-" + provider).click(function () {
        var text = $("div.social-login-box form.remove-social-account." + provider + " .social-login-remove-message").html();
        var canContinue = true;
        var title = window.translation.social_login_confirm;
        var confirmTextButton = window.translation.social_login_link_continue;

        if ($('div.social-login-box form.remove-social-account input[name="missingNativeAccount"]').length > 0) {
            canContinue = false;
            var capitalizeprovider = provider.substr(0, 1).toUpperCase() + provider.substr(1).toLowerCase();
            text = window.translation.configure_password_before_unlink.replaceAll("#provider#", capitalizeprovider);
            title = window.translation.Important;
            confirmTextButton = "Ok";//universal message
        }

        var options = {
            title: title,
            icon: "warning",
            showCancelButton: canContinue,
            confirmButtonClass: 'btn-danger',
            confirmButtonText: confirmTextButton,
            cancelButtonText: window.translation.social_login_link_cancel,
            closeOnConfirm: true,
            showLoaderOnConfirm: false,
            closeOnCancel: true,
            html: text,
        };

        Swal.fire(options).then(function (result) {
            if (result.isConfirmed && canContinue) {
                $("button.unlink-" + provider).hide();
                $("form.remove-social-account." + provider).submit();
            }
        });
    });
}

function verifyRemoveSocialLogin() {
    if ($("div.social-login-box form.remove-social-account button.unlink-facebook").length > 0) {
        removeSocialLogin('facebook');
    }

    if ($("div.social-login-box form.remove-social-account button.unlink-linkedIn").length > 0) {
        removeSocialLogin('linkedIn');
    }

    if ($("div.social-login-box form.remove-social-account button.unlink-google").length > 0) {
        removeSocialLogin('google');
    }

    if ($("div.social-login-box form.remove-social-account button.unlink-apple").length > 0) {
        removeSocialLogin('apple');
    }
}

function active_secondary_menu() {
    $(".secondary_menu ul li a").each(function () {
        var path = window.location.pathname;
        var res = path.replace("/", "");
        if ($(this).attr("href") == res) {
            //$(this).parent().addClass("active");
        }
    });

    $('.is-dropdown-submenu').each(function () {
        // Check if the current element doesn't have any children the add the a class to hide the after efect
        if ($(this).children().length === 0) {
            $(this).siblings('a').first().addClass('hide-after');
        }
    });
}

function fix_active_menu() {
    if (typeof validSelectFirstItem === 'undefined' || validSelectFirstItem == null || (validSelectFirstItem != undefined && validSelectFirstItem != null && validSelectFirstItem === false))
        return;
    var items = $('nav ul.level-1 > li');
    if (!items.hasClass('active')) {
        //items.first().addClass('active');
        var item_active = items.first();
        if (item_active.length > 0) {
            var sub_menu = item_active.children("ul").first().clone();
            if (sub_menu.length > 0) {
                $(".visible_zone").html(sub_menu);
            }
        }
    }
}

function ajax_mode_forgot_password() {
    $("#forgot-password-jc").submit(function (e) {
        var url = $(this).attr('action');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);
        $.ajax({
            type: "POST",
            url: urlSite + url,
            data: $("#forgot-password-jc").serialize(),
            beforeSend: function () {
                $('.processing_screen').show();
            },
            success: function (data) {
                var message = $(data).find('.validation-summary-errors li').html();
                var keyToDisplay = '';
                if (message != null && message != undefined && message.trim() != '') {
                    keyToDisplay = message;
                    keyToDisplay = keyToDisplay.toLowerCase();
                    keyToDisplay = keyToDisplay.replaceAll('.', '');
                    keyToDisplay = keyToDisplay.replaceAll(' ', '_');
                    keyToDisplay = keyToDisplay.replaceAll('-', '_');
                }
                var translation = window.translation;
                if (keyToDisplay != '' && translation[keyToDisplay] != null && translation[keyToDisplay] != undefined) {
                    message = translation[keyToDisplay];
                }
                if (message && message.length > 0) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: message,
                        confirmButtonText: "Ok",
                    });
                } else {
                    window.location.href = urlSite + "/forgot-password-confirmation";
                }
            },
            complete: function (jqXHR, textStatus) {
                $('.processing_screen').hide();
            }
        });
        e.preventDefault();
    });
}

function browse_organization_index_letter(rowPerPage, languageText) {
    if ($('.browse-organization-container').length > 0) {
        update_links_in_browser_org();
        $('.index-links ul li a, .index-links a.all').click(function () {
            //Get if site is sharingPortalPlus
            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
            var letterSelected = ($(this).data('search') !== 'all') ? $(this).data('search') : '';

            $.ajax({
                method: "POST",
                url: urlSite + "search/BrowseOrganizationByParameter",
                data: { letter: letterSelected },
                beforeSend: function () {
                    $('.processing_screen').show();
                }
            }).done(function (data) {
                $('.processing_screen').hide();
                data = JSON.parse(data);
                //Clear datatable info
                $("#browse-organization").DataTable().destroy();
                $("#browse-organization tbody").empty();

                if (data.Organizations) {
                    data.Organizations.forEach(function (organization) {
                        var oName = (organization.Name) ? organization.Name : "";
                        var oId = (organization.Id) ? organization.Id : "";
                        var oBillingCity = (organization.BillingCity) ? organization.BillingCity : "";
                        var oBillingState = (organization.BillingState) ? organization.BillingState : "";
                        var oImpactArea = (organization.ImpactArea) ? organization.ImpactArea : "";

                        //Avoid XXS scripting
                        oName = (oName.indexOf("<script>") === -1) ? oName : escape(oName);
                        oId = (oId.indexOf("<script>") === -1) ? oId : escape(oId);
                        oBillingCity = (oBillingCity.indexOf("<script>") === -1) ? oBillingCity : escape(oBillingCity);
                        oBillingState = (oBillingState.indexOf("<script>") === -1) ? oBillingState : escape(oBillingState);
                        oImpactArea = (oImpactArea.indexOf("<script>") === -1) ? oImpactArea : escape(oImpactArea);

                        var name = "<td><a href='" + urlSite + "organization/" + oId + "'>" + oName + "</a></td>";
                        var billingCity = "<td tabindex='0'>" + oBillingCity + "</td>";
                        var billingState = "<td tabindex='0'>" + oBillingState + "</td>";
                        var impactArea = "<td tabindex='0'>" + oImpactArea + "</td>";
                        var row = "<tr>";
                        if (data.display_org_name === true) {
                            row += name;
                        }
                        if (data.display_city === true) {
                            row += billingCity;
                        }
                        if (data.display_state === true) {
                            row += billingState;
                        }
                        if (data.display_impact_area === true) {
                            row += impactArea;
                        }

                        row += "</tr>";


                        $("#browse-organization tbody").append(row);
                    });
                    datatable_add_cells_data_for_mobile_headers($("#browse-organization")[0]);
                }
                datatable_initialize_notAjax($("#browse-organization"), languageText, rowPerPage);
            });

            return false;
        });
    }
}

function update_links_in_browser_org() {
    $('.browse-organization-container').find('a.paginate_button').attr('role', 'link');
}

function upload_profile_image() {
    //$("#profile_photo_file").ezdz('destroy');
    var fileInput = document.getElementById('logo');
    //Iterating through each files selected in fileInput
    if (fileInput != null && fileInput.value != "") {
        var type = $("#logo").attr('data-filetype');
        //Creating an XMLHttpRequest and sending
        var xhr = new XMLHttpRequest();
        var formdata = new FormData(); //FormData object

        for (i = 0; i < fileInput.files.length; i++) {
            //Appending each file to FormData object
            formdata.append(fileInput.files[i].name, fileInput.files[i]);
        }
        if ($("#logo").parent().hasClass('ezdz-reject')) {
            xhr.abort();
        } else {
            $("#logo").parents(".ezdz-dropzone").find("img").hide();
            $("#logo").parents(".ezdz-dropzone").find("div").append('<img alt="' + window.translation.loading_image + '" title="' + window.translation.loading_image + '" class="spinner" src="/img/default/spinner-green.svg" height="30" width="30" />');
            $("form").find(".submit-button").attr("disabled", true);
            xhr.open('POST', '/user/UploadImageOrg');
            xhr.send(formdata);
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var obj = JSON.parse(xhr.responseText);
                    if (obj.status.toLowerCase() == "ok") {
                        $("#logo_url").val(obj.uri_image);
                        $("#logo").parents(".ezdz-dropzone").find(".spinner").remove();
                        $("#logo").parents(".ezdz-dropzone").find("img").show();
                        $("form").find(".submit-button").attr("disabled", false);
                    } else {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: obj.message,
                            confirmButtonText: "Ok",
                        });
                        //$.growl.error({ duration: 10000, message: obj.message });
                        $("form").find(".submit-button").attr("disabled", false);
                    }
                }
            }
            var link = window.translation.delete;
            var delete_image_link = '<a href="#" id="delete_logo_url" class="delete_logo_url">' + link + '</a>';
            // Put link below image preview.
            $(".remove_image").html(delete_image_link);


            $("#delete_logo_url").click(function () {
                $("#logo").parents(".ezdz-dropzone").find("img").hide();
                $("#logo").parents(".ezdz-dropzone").find("div").append(translation.add_picture_drop_picture);
                $("#logo_url").val("");
                xhr.abort();
                $(this).remove();
                return false;
            });
        }

    }
}

//Method to make sign up of opportunities via AJAX
function ajax_submit_sign_up(dataSerialized, urlSuccessPage) {
    //Get if site is sharingPortalPlus
    let isMultiSignup = urlSuccessPage == "/opportunity-multi-signup-confirmation";

    if (isMultiSignup == false) {
        isMultiSignup = dataSerialized["isMultiSignup"] == 'true';

        if (isMultiSignup === true)
            urlSuccessPage = "/opportunity-multi-signup-confirmation";
    }

    if (isMultiSignup == false && dataSerialized["comeFromPreRequisiteMultiSignUp"] == 'true') {
        isMultiSignup = true;
        urlSuccessPage = "/opportunity-multi-signup-confirmation";
    }

    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    // Getting verified volunteer required level to opportunity 
    var vvRequiredLevelOpportunity = $("#vvRequiredLevel").val();

    //Validation to waiverField
    var postData = dataSerialized;
    postData["waiverFields"] = JSON.stringify(postData["waiverFields"]);
    dataSerialized = postData;
    $.ajax({
        method: "POST",
        url: urlSite + "/Compliance/ValidateCustomCompliance",
        data: { vvRequiredLevelOpportunity: vvRequiredLevelOpportunity },
        beforeSend: function () {
            if ($('#signup-questions-form').length > 0) $('#signup-questions').foundation('close');
            if (!$('.processing_screen').first().is(':visible')) $('.processing_screen').first().show();
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $('.processing_screen').hide();
            Swal.fire({
                title: textStatus,
                icon: "error",
                html: errorThrown,
                confirmButtonText: "Ok",
            });
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);
        if (jsonData.status == "ok") {
            remove_form_backup_from_session_storage();
            if (jsonData.isComplianceActive == false) {
                $.ajax({
                    method: "POST",
                    url: urlSite + "/User/OppSignupIndividual",
                    data: dataSerialized,
                    beforeSend: function () {
                        if (!$('.processing_screen').first().is(':visible')) $('.processing_screen').first().show();
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        $('.processing_screen').hide();
                        Swal.fire({
                            title: textStatus,
                            text: errorThrown,
                            icon: "error"
                        });
                    }
                }).done(function (data) {

                    let originalData = data;
                    var jsonData = JSON.parse(data);
                    var isTimeOutEnable = is_signup_time_out_enabled();

                    if (jsonData.code == "200") {
                        var message = "";

                        var formResult = jsonData.formResult;
                        var formErrors = '';

                        $.ajax({
                            type: "GET",
                            url: urlSite + '/ARS/getSiteId',
                            success: function (data) {
                                var siteId = data;
                                var workflowId = dataSerialized['workflowId'];

                                if (formResult != null) {
                                    formResult.forEach(function (item) {
                                        if (item.status == 'error') {
                                            formErrors = item.results + "\n";
                                        }
                                    });
                                }
                                if (formErrors != '') {
                                    Swal.fire({
                                        title: '',
                                        icon: 'error',
                                        text: formErrors,
                                        confirmButtonText: 'Ok',
                                        closeOnConfirm: true
                                    });
                                }

                                if (isTimeOutEnable === true) {
                                    remove_cookie_signupevent_timeout();
                                }

                                //Remove localStorage before redirect
                                localStorage.removeItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId);

                                if (isMultiSignup) {
                                    //lest to redirect and post the result to confirmation page
                                    let urlToSucces = urlSite + '/opportunity-multi-signup-confirmation';
                                    let form = $('<form action="' + urlToSucces + '" method="post" style="display:none">' +
                                        '<input type="hidden" name="data" value="' + utf8ToBase64(originalData) + '" />' +
                                        '</form>');
                                    $('body').append(form);
                                    form.submit();
                                    return false;
                                }

                                var url = (!urlSuccessPage) ? "/opportunity-signup-confirmation" : urlSuccessPage;
                                var qs = getQueryString(); // Get qs to validate type of sign up
                                var signUpType = (qs['type']) ? qs['type'] : '';
                                urlSuccessPage = (urlSuccessPage) ? urlSuccessPage.split('?')[0] : urlSuccessPage;  //  Fix to compare path without params

                                //Set url if the process is Add to waitlist
                                if (jsonData.message == "Individual signup wait listed" || jsonData.isWailtList == true) {
                                    url = "/opportunity-waitlist-confirmation";
                                }
                                else if ($("div.grouped-occurrence-box-express-interest").length > 0 || signUpType === 'grouped-ocurrences-express-interest') {
                                    message = jsonData.message;
                                    url = (!urlSuccessPage || urlSuccessPage === '/individual-signup-confirmation') ? "/grouped-occ-express-interest-confirmation" : urlSuccessPage;
                                }
                                else if ($(".express-interest-block").length > 0 || signUpType === 'express-interest') {
                                    message = window.translation.expressed_interest_successfully;
                                    url = (!urlSuccessPage || urlSuccessPage === '/individual-signup-confirmation') ? "/express-interest-confirmation-page" : urlSuccessPage;
                                }
                                else if ($(".express-interest-only-block").length > 0 || signUpType === 'express-interest') {
                                    message = window.translation.expressed_interest_successfully;
                                    url = (!urlSuccessPage || urlSuccessPage === '/individual-signup-confirmation') ? "/express-interest-confirmation-page" : urlSuccessPage;
                                }
                                else if ($("div.grouped-occurrence-box").length > 0 || signUpType === 'grouped-ocurrences') {
                                    message = jsonData.message;
                                    url = (!urlSuccessPage || urlSuccessPage === '/individual-signup-confirmation') ? "/grouped-occurrences-confirmation" : urlSuccessPage;
                                }
                                else {
                                    message = jsonData.message;
                                    if (urlSuccessPage === '/individual-signup-confirmation')
                                        urlSuccessPage = '/opportunity-signup-confirmation';
                                    url = (!urlSuccessPage) ? "/opportunity-signup-confirmation" : urlSuccessPage;
                                }
                                var occId = encodeURIComponent(dataSerialized['occId']);

                                // If the current opportunity is a prerequisite and the original opportunity have questions, return to the original opportunity to complete questions, otherwise continue to confirmation page
                                if ($('#prerequisite-notice').length > 0 && $('#prerequisite-notice').data('oppwithprerequisitehasquestions')) {
                                    var selectedOccId = $('#signup-questions-form input[name="occId"]').val();
                                    var occId = $('#prerequisite-notice').data('occwithprerequisite');
                                    var registeringWithTeam = $('#prerequisite-notice').data('registeringwithteam');
                                    window.location.href = urlSite + "/opportunity/" + occId + "?" +
                                        "prerequisitesuccess=true" +
                                        "&registeringWithTeam=" + registeringWithTeam +
                                        "&prerequisiteOccSelected=" + selectedOccId;
                                }
                                else {
                                    var params = {};
                                    if (occId != null) {
                                        params["occId"] = occId;
                                    }

                                    if (jsonData.idConnections[0] != null) {
                                        params["conn"] = jsonData.idConnections[0];
                                    }

                                    // If the current opportunity is a prerequisite and the original opportunity does NOT have questions, replace the parameters for the confirmation page with the information of the original opportunity.
                                    if ($('#prerequisite-notice').length > 0) {
                                        if ($('#prerequisite-notice').data('oppwithprerequisiteconfirmationpage') != null && $('#prerequisite-notice').data('oppwithprerequisiteconfirmationpage') != "") {
                                            url = $('#prerequisite-notice').data('oppwithprerequisiteconfirmationpage');
                                        }
                                        params["occId"] = $('#prerequisite-notice').data('occwithprerequisite');
                                        params["prerequisiteOccSelected"] = $('#signup-questions-form input[name="occId"]').val();
                                    }
                                    // If the current opportunity is NOT a prerequisite, but comes from a prerequisite signup, get the selected prerequisite occ from the URL to send it to confirmation page.
                                    else {
                                        var prerequisiteOccSelected = "";
                                        if (qs['prerequisiteOccSelected']) {
                                            prerequisiteOccSelected = qs['prerequisiteOccSelected'];
                                            params["prerequisiteOccSelected"] = prerequisiteOccSelected;
                                        }
                                    }
                                    var str = [];
                                    for (var p in params) {
                                        if (params.hasOwnProperty(p)) {
                                            str.push(encodeURIComponent(p) + "=" + encodeURIComponent(params[p]));
                                        }
                                    }
                                    url += "?" + str.join("&");
                                    window.location.href = urlSite + url;
                                }
                            }
                        });
                    } else {
                        $('.processing_screen').hide();
                        var typeError = "error";
                        var cannotHandle = false;
                        var imageUrlForAlert = "";
                        var isSpecialError = false;
                        

                        var custommessage = jsonData.message;
                        if (jsonData.useCustomMessage && window.think_face_image != undefined) {
                            imageUrlForAlert = window.think_face_image;
                            typeError = "";
                        }
                        if (jsonData.message == 'We cannot handle your request at the moment. Please try again in a few minutes. Thank you for your patience.' || jsonData.message.indexOf('unable to obtain exclusive access to this record') >= 0) {
                            typeError = "";
                            cannotHandle = true;
                            isSpecialError = true;

                            if (window.sad_face_image != undefined) {
                                imageUrlForAlert = window.sad_face_image;
                            }


                            if (isTimeOutEnable === true) {
                                //For now this code is fixed, but this should happens depends of settting
                                // This value is not available from here in ARS mode
                                custommessage = "We are experiencing an unusually high volume of requests. Please wait at least <span class='counter' style='font-weight: bold;'>30</span> seconds before trying again.Thank you for your patience.";
                                var oppIdEvent = $('.opportunity-detail-content input#opportunityId').val();

                                var signupeventcookiename = "signupevent" + oppIdEvent;
                                var signupeventvalue = getCookie(signupeventcookiename);
                                var signupevent;
                                //var allowSignUpEvent = true;

                                if (signupeventvalue !== "") {
                                    signupevent = JSON.parse(signupeventvalue);
                                    signupevent.action = "wtime";
                                    signupevent.t1 = Date.now();
                                } else {
                                    signupevent = { void: oppIdEvent, action: "wtime", t1: Date.now() };
                                }

                                setCookie(signupeventcookiename, JSON.stringify(signupevent));
                            }
                        }

                        var messageProperties = {
                            title: "",
                            imageUrl: imageUrlForAlert,
                            icon: typeError,
                            html: custommessage,
                            confirmButtonText: "Ok",


                        };

                        if (isMultiSignup == true) {

                            let newCustomMessage = null;

                            if (jsonData.code == 428 && jsonData.SubResult == 2) {
                                newCustomMessage = "<li>";
                                for (const [occId, label] of Object.entries(jsonData.OccIdsLabels)) {

                                    if (jsonData.UnmetRequirements[occId] !== undefined)
                                        newCustomMessage += "<ul>" + label + " : " + jsonData.UnmetRequirements[occId] + "</ul>";
                                }
                                newCustomMessage += "</li>";
                            } else {
                                if (jsonData.message !== '' && jsonData.message != null)
                                    newCustomMessage = jsonData.message;

                                if (jsonData.GeneralUnmetRequierements != null && jsonData.GeneralUnmetRequierements != undefined) {
                                    newCustomMessage += "<li>";
                                    jsonData.GeneralUnmetRequierements.forEach(function (item, index) {
                                        newCustomMessage += "<ul>" + item + "</ul>";
                                    });
                                    newCustomMessage += "</li>";
                                }
                            }

                            if (newCustomMessage !== null && newCustomMessage != '')
                                messageProperties.html = newCustomMessage;
                        }

                        if (isTimeOutEnable === true && isSpecialError === true) {
                            // messageProperties.timer = 10000; // This is to auto close the modal. For now this is not needed by is good to know it
                            messageProperties.customClass = "server-full";
                        }

                        Swal.fire(messageProperties).then(function (result) {
                            if (result.isConfirmed) {
                                $('.processing_screen').show();
                                if ($('.signup-individual').length > 0) {
                                    $('.signup-individual').addClass('disabled');
                                    $('.signup-individual').off("click");
                                }
                                if ($('.signup-team').length > 0) {
                                    $('.signup-team').addClass('disabled');
                                    $('.signup-team').off("click");
                                }
                                //Redirect again to OPP page
                                let occIdToRedirect = null;

                                if (dataSerialized != null) {
                                    if (isMultiSignup == true && ('occIds' in dataSerialized)) {
                                        occIdToRedirect = dataSerialized['occIds'].split(',')[0].split('#')[0];
                                    } else if (('occId' in dataSerialized)) {
                                        occIdToRedirect = dataSerialized['occId'];
                                    }
                                }

                                if (occIdToRedirect != null)
                                    window.location.href = urlSite + '/opportunity/' + occIdToRedirect;

                                if ($('body').hasClass('one-step-signup')) {
                                    $('.processing_screen').show();
                                    location.reload();
                                }

                            }
                        });

                        // The message is shown regardless if is specialError or not

                        if (isTimeOutEnable === true) {

                            if (isSpecialError === true)
                                timer_for_swal_timeout();
                            else
                                remove_cookie_signupevent_timeout();
                        }
                    }

                    return false;
                });
            } else {
                // Custom compliance redirect page
                $('.processing_screen').hide();
                window.location.href = urlSite + jsonData.redirectTo;
            }
        } else {
            $('.processing_screen').hide();
            if (jsonData.status == "error") {
                Swal.fire({
                    title: "",
                    icon: "error",
                    html: jsonData.message,
                    confirmButtonText: "Ok",
                });
            }

            if (jsonData.status == "warning") {
                Swal.fire({
                    title: "",
                    icon: "warning",
                    html: jsonData.message,
                    confirmButtonText: "Ok",
                });
            }
        }

        return false;
    });
}

function remove_form_backup_from_session_storage() {

    try
    {
        let prefix = "resize-form-custom-";
        // Iterate through session storage keys to determine what are related to
        for (let i = 0; i < sessionStorage.length; i++) {
            let key = sessionStorage.key(i);

            // Check if the key starts with the specified prefix
            if (key && key.startsWith(prefix)) {
                //sessionStorage.removeItem(prefix);
                sessionStorage.removeItem(key);
            }
        }
    }catch (e) {
        window.console && console.error(e)
    }
}

//Method to make submit of form volunteer via AJAX
function ajax_submit_event(form, dataSerialized, urlToRedirectVS) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    var isMasterTemplate = ($('body.new-template-system').length > 0 ? true : false);
    if (dataSerialized === null) {
        var postData = form.serializeObject();
        var uri = form.attr("action");

        // Building Custom Questions Format
        var qfields = form.find(".custom-questions input, .custom-questions textarea, .custom-questions select");
        postData["questions"] = qfields.serializeObject();
    }
    else {
        var uri = urlSite + '/user/SignUpVolunteer';
        var postData = dataSerialized;
        postData["waiverFields"] = JSON.stringify(postData["waiverFields"]);
    }
    if (uri != "") {

        $.ajax({
            type: "POST",
            url: uri,
            data: postData,
            dataType: "json",
            beforeSend: function () {
                if ($('#volunteer-register-form').length > 0) {
                    $('#volunteer-register-form').find(".submit-button").attr("disabled", true);
                    //$('#volunteer-register-form').find(".spinner").show();
                } else if ($('#organization-register-form').length > 0) {
                    $('#organization-register-form').find(".submit-button").attr("disabled", true);
                    //$('#organization-register-form').find(".spinner").show();
                }
                if (isMasterTemplate == true)
                    $("body #main_content .processing_screen").show();
                else
                    $("body #main-content .processing_screen").show();
            },
            success: function (data) {
                $('.processing_screen').hide();



                if (data.code == 200) {
                    remove_form_backup_from_session_storage();
                    //remove the possible information in the session satorge
                    if (uri == urlSite + "/user/SignUpVolunteer") {
                        //Validate parental status
                        if (data.parentalStatus == 0) {
                            var signUpVolunteerResponse = data;
                            $.ajax({
                                type: "GET",
                                url: urlSite + '/ARS/getSiteId',
                                success: function (data) {
                                    var siteId = data;

                                    //Remove localStorage before redirect
                                    localStorage.removeItem('vol-branch-logic-form-data-' + siteId);

                                    if (signUpVolunteerResponse.OneStepSignUpResponseARS == true) {
                                        var url = "/opportunity/" + signUpVolunteerResponse.occSelectedBeforeLogin;
                                        if (signUpVolunteerResponse.signUpBeforeLoginWTeam)
                                            url += "?OneStepSignUpWTeam=true";
                                        else
                                            url += "?OneStepSignUp=true";
                                        window.location.href = urlSite + url;
                                    }
                                    if (signUpVolunteerResponse.OneStepSignUpResponse != null) {
                                        if (signUpVolunteerResponse.OneStepSignUpResponse.status == "ok") {
                                            window.location.href = urlSite + signUpVolunteerResponse.OneStepSignUpConfirmationUrl;
                                        }
                                        else {
                                            Swal.fire({
                                                title: "",
                                                icon: "error",
                                                html: signUpVolunteerResponse.OneStepSignUpResponse.message,
                                                confirmButtonText: "Ok",
                                            }).then(function (result) {
                                                window.location.href = urlSite + "/opportunity/" + signUpVolunteerResponse.occSelectedBeforeLogin;
                                            });

                                        }
                                    } else if (signUpVolunteerResponse.isMultiSignUp && signUpVolunteerResponse.multisignupParamaters != '' && signUpVolunteerResponse.firstOccId != '') {
                                        var url = "/opportunity/" + signUpVolunteerResponse.firstOccId + "?" + signUpVolunteerResponse.multisignupParamaters;
                                        window.location.href = urlSite + url;

                                    } else if (signUpVolunteerResponse.occSelectedBeforeLogin != null) {
                                        if (signUpVolunteerResponse.returnOccSelectedBeforeLogin) {
                                            var url = "/opportunity/" + signUpVolunteerResponse.occSelectedBeforeLogin;
                                            if (signUpVolunteerResponse.signUpBeforeLoginWTeam)
                                                url += "?OneStepSignUpWTeam=true";
                                            else
                                                url += "?OneStepSignUp=true";
                                            window.location.href = urlSite + url;
                                        }
                                        else if (signUpVolunteerResponse.signUpBeforeLoginWTeam) {
                                            window.location.href = urlSite + "/opportunity-signup-team/" +
                                                signUpVolunteerResponse.occSelectedBeforeLogin + "/" +
                                                signUpVolunteerResponse.waitlistAllowed;
                                        }
                                    }
                                    else {
                                        if (urlToRedirectVS == undefined || urlToRedirectVS == null || urlToRedirectVS == '')
                                            urlToRedirectVS = '/volunteer-confirmation-registration';

                                        window.location.href = urlSite + urlToRedirectVS;
                                        //window.location.href = urlSite + "/volunteer-confirmation-registration";
                                    }
                                }
                            });
                        } else {
                            window.location.href = urlSite + '/volunteer-parental-confirmation';
                        }
                    }
                    if (uri == urlSite + '/user/SignUpOrganization') {
                        window.location.href = urlSite + '/organization-confirmation-registration';
                    }
                    else if ($('#volunteer-register-form').length > 0) {
                        //$('#volunteer-register-form').find('.spinner').hide();
                        $(".processing_screen").hide();
                        $('#volunteer-register-form').find('.submit-button').attr('disabled', false);
                    } else if ($('#organization-register-form').length > 0) {
                        //$('#organization-register-form').find('.spinner').hide();
                        $(".processing_screen").hide();
                        $('#organization-register-form').find('.submit-button').attr('disabled', false);
                    }
                } else {

                    Swal.fire({
                        title: '',
                        icon: 'error',
                        html: data.message,
                        confirmButtonText: 'Ok',
                    }).then(function (result) {
                        if ($('#volunteer-register-form').length > 0) {
                            //$('#volunteer-register-form').find('.spinner').hide();
                            $(".processing_screen").hide();
                            $('#volunteer-register-form').find('.submit-button').attr("disabled", false);
                            $('#volunteer-register-form').find('.next_option').removeAttr('disabled');
                            $('#volunteer-register-form').find('.verification-code-section').hide();
                            $('#volunteer-register-form').find('.email-field').removeClass('custom-disabled-opacity');
                            $('#volunteer-register-form').find('.submit-button').show();
                            $('#volunteer-register-form').find('.info-email-code').hide();
                            $('#volunteer-register-form .verification-code-section').removeClass('custom-disabled-opacity');

                            if (data.renew != undefined && data.renew == true) {
                                regenerateKey('form#volunteer-register-form', "volunteer_registration");
                            }
                        } else if ($('#organization-register-form').length > 0) {
                            //$('#organization-register-form').find('.spinner').hide();
                            $(".processing_screen").hide();
                            $('#organization-register-form').find('.submit-button').removeAttr('disabled');
                            $('#organization-register-form').find('.next_option').removeAttr('disabled');

                            if (data.renew != undefined && data.renew == true) {
                                regenerateKey('form#organization-register-form', "organization_registration");
                            }

                        } else if ($('.branch-logic-info').length > 0) {
                            var redirectToFirstPage = urlSite + '/volunteer-sign-up';
                            var userId = postData["userId"];
                            var isSocialLogin = postData["isSocialLoginSource"];
                            var isSSO = postData["isSSOSource"];


                            //if is related to socialLogin, then put the userId again
                            if (userId !== undefined && userId != null && userId != '' && (isSocialLogin == 1 || isSSO == 1))
                                redirectToFirstPage = redirectToFirstPage + "/" + userId;

                            window.location.href = redirectToFirstPage;
                        }

                    });

                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: errorThrown
                });
                if ($('#volunteer-register-form').length > 0) {
                    $('#volunteer-register-form').find(".submit-button").prop("disabled", false);
                    //$('#volunteer-register-form').find(".spinner").hide();
                    $(".processing_screen").hide();
                    regenerateKey('form#volunteer-register-form', "volunteer_registration");
                }
                else if ($('#organization-register-form').length > 0) {
                    $('#organization-register-form').find(".submit-button").prop("disabled", false);
                    //$('#organization-register-form').find(".spinner").hide();
                    $(".processing_screen").hide();
                }
                else {
                    $('.processing_screen').hide();
                }
            }
        });
    }
}

//Method to make submit of donation form via AJAX
function ajax_submit_donation(dataSerialized, blockElement) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    var redirectUrl = dataSerialized['redirect_url'];
    var reloadPage = false;
    var isARS = dataSerialized['is_ars'];

    $.ajax({
        method: 'POST',
        url: urlSite + '/ARS/SendDonation',
        data: dataSerialized,
        beforeSend: function () {
            blockElement.find('.processing_screen').first().show();
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);
        var typeMessage = 'error';
        var titleMessage = jsonData.title;
        var message = jsonData.message;

        blockElement.find('.processing_screen').hide();

        if (jsonData.status === '200') {
            typeMessage = 'success';
            blockElement.find('form').each(function () {
                $(this)[0].reset();
            });

            //If exists redirect url, apply redirect
            if (redirectUrl) {
                blockElement.find('.processing_screen').first().show();
                window.location.href = urlSite + redirectUrl;
            } else
                reloadPage = true; // To reload the current page to regenerate the security key
        } else if (jsonData.status !== "400") {
            if ($('form[name="donation-form"]').length > 0 && $('form[name="donation-form"] input[name="is_ars"]').val() === "False") {
                if (typeof regenerateKey === "function") {
                    regenerateKey('form[name="donation-form"]', $('form[name="donation-form"] input[name="pageactioname"]').val());
                }
            }
        }

        Swal.fire({
            title: titleMessage,
            icon: typeMessage,
            text: message,
            confirmButtonText: 'Ok',
            closeOnConfirm: true
        }).then(function (result) {
            if (isARS === "False" && reloadPage === true) {
                location.reload();
            }

        });

        $('form[name="donation-form"] input.submit-button').prop("disabled", false);
    });
}

function translate_datatable_grid() {
    if ($('.dataTables_wrapper .dataTables_processing span').length > 0)
        $('.dataTables_wrapper .dataTables_processing span').text(window.translation.please_wait);
}

function translate_full_calendar_widget(eventType) {
    var translation = window.translation;

    if (eventType === '0') { //Not completed
        if (!translation) {
            $.get('/translation/' + new Date().getTime(), function (data) {
                translation = data;

                var titleMonth = $(".full-calendar-widget .fc-toolbar h2").text().split(' ');
                var titleMonthTranslated = translation[titleMonth[0].toLowerCase() + '_name'];

                if (titleMonthTranslated != undefined && titleMonthTranslated != '') {
                    titleMonth[0] = titleMonthTranslated;
                }

                $(".full-calendar-widget .fc-toolbar h2").text(titleMonth.join(' '));
                $(".full-calendar-widget .fc-toolbar button.fc-today-button").text(translation.today);
                $(".full-calendar-widget .fc-view-container table thead .fc-widget-header table thead th").each(function () {
                    var text = $(this).text();

                    $(this).text(translation[text.toLowerCase()]);
                });
                //Buttons
                $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-month-button").html(translation.month);
                $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-basicWeek-button").html(translation.week);
                $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-agendaDay-button").html(translation.day);

            });
        }
        else {
            var titleMonth = $(".full-calendar-widget .fc-toolbar h2").text().split(' ');
            var titleMonthTranslated = translation[titleMonth[0].toLowerCase() + '_name'];

            if (titleMonthTranslated != undefined && titleMonthTranslated != '') {
                titleMonth[0] = titleMonthTranslated;
            }

            $(".full-calendar-widget .fc-toolbar h2").text(titleMonth.join(' '));
            $(".full-calendar-widget .fc-toolbar button.fc-today-button").text(translation.today);
            $(".full-calendar-widget .fc-view-container table thead .fc-widget-header table thead th").each(function () {
                var text = $(this).text();

                $(this).text(translation[text.toLowerCase()]);
            });
            $(".full-calendar-widget .fc-view-container table tbody tr td.fc-more-cell a.fc-more").each(function () {
                var text = $(this).text().split(' ');

                text[1] = translation[text[1]];
                $(this).text(text.join(' '));
            });

            //Buttons
            $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-month-button").html(translation.month);
            $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-basicWeek-button").html(translation.week);
            $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-agendaDay-button").html(translation.day);

        }
    }
    else if (eventType === '1') { //Completed
        if (!translation) {
            $.get('/translation/' + new Date().getTime(), function (data) {
                translation = data;


                var titleMonth = $(".full-calendar-widget .fc-toolbar h2").text().split(' ');
                titleMonth[0] = (translation[titleMonth[0].toLowerCase() + '_name']) ? translation[titleMonth[0].toLowerCase() + '_name'] : titleMonth[0];

                $(".full-calendar-widget .fc-toolbar h2").text(titleMonth.join(' '));
                $(".full-calendar-widget .fc-view-container table tbody tr td.fc-more-cell a.fc-more").each(function () {
                    var text = $(this).text().split(' ');

                    text[1] = translation[text[1]];
                    $(this).text(text.join(' '));
                });
                $(".full-calendar-widget .fc-view-container table thead .fc-widget-header table thead th").each(function () {
                    var text = $(this).text();
                    var textTranslated = (translation[text.toLowerCase()]) ? translation[text.toLowerCase()] : textTranslated;

                    $(this).text(textTranslated);
                });

                //Detect change in container with new div popuver included in event click
                $('.full-calendar-widget .fc-widget-content').on('DOMNodeInserted', function (e) {
                    if ($(e.target).is('.fc-popover')) {
                        var object = $('.fc-popover .fc-header .fc-title');
                        var textParts = object.text().split(', ');
                        var day = textParts[1].split(' ')[1];
                        var dayName = translation[textParts[0].toLowerCase()];
                        var month = translation[textParts[1].split(' ')[0].toLowerCase()];

                        object.text(dayName + ', ' + month + ' ' + day);
                    }
                    else if ($(e.target).is('.fc-more-cell')) {
                        $(".full-calendar-widget .fc-view-container table tbody tr td.fc-more-cell a.fc-more").each(function () {
                            var text = $(this).text().split(' ');

                            text[1] = (text[1] === 'more') ? translation[text[1]] : text[1];
                            $(this).text(text.join(' '));
                        });
                    }
                });

                //Buttons
                $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-month-button").html(translation.month);
                $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-basicWeek-button").html(translation.week);
                $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-agendaDay-button").html(translation.day);

            });
        }
        else {
            var titleMonth = $(".full-calendar-widget .fc-toolbar h2").text().split(' ');
            titleMonth[0] = (translation[titleMonth[0].toLowerCase() + '_name']) ? translation[titleMonth[0].toLowerCase() + '_name'] : titleMonth[0];

            $(".full-calendar-widget .fc-toolbar h2").text(titleMonth.join(' '));
            $(".full-calendar-widget .fc-view-container table tbody tr td.fc-more-cell a.fc-more").each(function () {
                var text = $(this).text().split(' ');

                text[1] = translation[text[1]];
                $(this).text(text.join(' '));
            });
            $(".full-calendar-widget .fc-view-container table thead .fc-widget-header table thead th").each(function () {
                var text = $(this).text();
                var textTranslated = (translation[text.toLowerCase()]) ? translation[text.toLowerCase()] : textTranslated;

                $(this).text(textTranslated);
            });

            //Detect change in container with new div popuver included in event click
            $('.full-calendar-widget .fc-widget-content').on('DOMNodeInserted', function (e) {
                if ($(e.target).is('.fc-popover')) {
                    var object = $('.fc-popover .fc-header .fc-title');
                    var textParts = object.text().split(', ');
                    var day = textParts[1].split(' ')[1];
                    var dayName = translation[textParts[0].toLowerCase()];
                    var month = translation[textParts[1].split(' ')[0].toLowerCase() + '_name'];

                    object.text(dayName + ', ' + month + ' ' + day);
                }
                else if ($(e.target).is('.fc-more-cell')) {
                    $(".full-calendar-widget .fc-view-container table tbody tr td.fc-more-cell a.fc-more").each(function () {
                        var text = $(this).text().split(' ');

                        text[1] = (text[1] === 'more') ? translation[text[1]] : text[1];
                        $(this).text(text.join(' '));
                    });
                }
            });
            //Buttons
            $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-month-button").html(translation.month);
            $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-basicWeek-button").html(translation.week);
            $(".full-calendar-widget .fc-toolbar .fc-center .fc-button-group button.fc-agendaDay-button").html(translation.day);

        }
    }
}

function full_size_content() {
    if ($("#sidebar").length > 0 && !$("body").hasClass("new-template-system")) {
        if ($("#sidebar div").length == 0) {
            $("#sidebar").hide();
            $("#main-content").addClass("full-width");
        }
    }
}

function put_menu_in_visible_zone() {
    if ($("nav").length > 0) {
        var item_active = $("nav ul.level-1 > li.active");
        if (item_active.length > 0) {
            if (item_active.find("ul").length == 0) {
                item_active.addClass("no-after");
            }
            var sub_menu = item_active.children("ul").first().clone();
            if (sub_menu.length > 0) {
                $(".visible_zone").html(sub_menu);
            }
        }
        if ($("body nav ul li.active ul.level-2 li.active ul.level-3").length > 0) {
            var internal_menu = $("body nav ul li.active ul.level-2 li.active ul.level-3").html();
            if ($("#sidebar").length > 0) {
                $("#sidebar").prepend('<div class="sub-menu"><ul>' + internal_menu + '</ul></div>');
            }

        }

    }
}

function active_menu_by_url() {

    var pathname = window.location.pathname;
    var specialCharacters = [';', '?', ':', '@', '=', '&'];
    //Fix to specialCharacters
    specialCharacters.forEach(function (character) {
        pathname = pathname.replaceAll(character, '');
    });


    pathname = pathname.toLowerCase();

    if ($("body.new-template-system").length > 0)
        return;

    if ($("body nav ul").length > 0) {

        $('body nav ul a').each(function () {
            var chunks = pathname.split('/');
            var pathlink = $(this).attr('href').toLowerCase();
            for (var i = 2; i <= chunks.length; i++) {
                var tmpPath = chunks.slice(0, i).join('/');
                if (tmpPath.match('^' + pathlink + '$') != null) {
                   $(this).parents("li").addClass("active");
                }
            }
        });
        $('.menu-block-wrapper ul a').each(function () {
            var chunks = pathname.split('/');
            var pathlink = $(this).attr('href').toLowerCase();
            for (var i = 2; i <= chunks.length; i++) {
                var tmpPath = chunks.slice(0, i).join('/');
                if (tmpPath.match('^' + pathlink + '$') != null) {
                    $(this).parents("li").addClass("active");
                }
            }
        });
    }
}


function initiate_jquery_validate(translation) {
    if ($('form.validate').length > 0) {
        jQuery.validator.addMethod("regex", function (value, element, regexpr) {
            if (value != '') {
                return regexpr.test(value);
            } else {
                return true;
            }
        });

        jQuery.validator.addMethod("notEqual", function (value, element, param) {
            return $(param).val() != value;
        }, "Please specify a different (non-default) value");

        jQuery.validator.addMethod("minOptionsMultiSelect", function (value, element, params) {
            var minimum = params[0];
            var maximum = params[1];
            var valueArrayLength = 0;
            if (value instanceof Array) {
                valueArrayLength = value.length;
            } else if (value) {
                valueArrayLength = value.split(',').length;
            }

            if (minimum === 0 && maximum === 0) {
                return true;
            } else if (minimum && maximum === 0) {
                if (valueArrayLength < minimum) {
                    return false;
                }
            } else if (minimum === 0 && maximum) {
                if (valueArrayLength > maximum) {
                    return false;
                }
            }
            else if (minimum <= maximum) {
                if (valueArrayLength < minimum) {
                    return false;
                } else if (valueArrayLength > maximum) {
                    return false;
                }
            }
            return true;
        });

        jQuery.validator.addMethod("maxrepetitive", function (value, element, params) {
            var isForPersonalInformation = $(element).closest('form#personal-information-form').length > 0;
            var maxrepetitive = params[0];
            var resultValidation = true;

            if (!isForPersonalInformation || value != null && value != '') {
                resultValidation = is_valid_password_repetitive(value, maxrepetitive);
            }

            return resultValidation;
        });

        jQuery.validator.addMethod("maxsequential", function (value, element, params) {
            var isForPersonalInformation = $(element).closest('form#personal-information-form').length > 0;
            var maxsequential = params[0];
            var resultValidation = true;

            if (!isForPersonalInformation || value != null && value != '') {
                resultValidation = is_valid_password_sequential(value, maxsequential);
            }

            return resultValidation;
        });

        jQuery.validator.addMethod("passwordComplexity", function (value, element, params) {
            var isForPersonalInformation = $(element).closest('form#personal-information-form').length > 0;
            var complexityType = params[0];
            var resultValidation = true;
            if (!isForPersonalInformation || value != null && value != '') {
                switch (complexityType) {
                    case '1':
                        var alphaNumericRegex = RegExp('(?=.*[0-9]+)(?=.*[a-zA-Z]+).*');
                        resultValidation = alphaNumericRegex.test(value);
                        break;
                    case '2':
                        var alphaUpperLowerRegex = RegExp('(?=.*[0-9]+)(?=.*[a-z]+)(?=.*[A-Z]+).*');
                        resultValidation = alphaUpperLowerRegex.test(value);
                        break;
                    case '3':
                        var alphaNumSpecialRegex = RegExp('(?=.*[0-9]+)(?=.*[a-zA-Z]+)(?=.*[\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^_\`\{\|\}\~]+).*');
                        resultValidation = alphaNumSpecialRegex.test(value);
                        break;
                    case '4':
                        var alphaUpperLowerSpecRegex = RegExp('(?=.*[0-9]+)(?=.*[a-z]+)(?=.*[A-Z]+)(?=.*[\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^_\`\{\|\}\~]+).*');
                        resultValidation = alphaUpperLowerSpecRegex.test(value);
                        break;
                }
            }

            return resultValidation;
        });

        // Validator to handle format dd/mm/yyyy and d/m/yyyyy
        jQuery.validator.addMethod("dateDMY", function (value, element) {
            var check = false,
                re = /^\d{1,2}\/\d{1,2}\/\d{4}$/,
                adata, gg, mm, aaaa, xdata;
            if (re.test(value)) {
                adata = value.split("/");
                gg = parseInt(adata[0], 10);
                mm = parseInt(adata[1], 10);
                aaaa = parseInt(adata[2], 10);
                xdata = new Date(Date.UTC(aaaa, mm - 1, gg, 12, 0, 0, 0));
                if ((xdata.getUTCFullYear() === aaaa) && (xdata.getUTCMonth() === mm - 1) && (xdata.getUTCDate() === gg)) {
                    check = true;
                } else {
                    check = false;
                }
            } else {
                check = false;
            }
            return this.optional(element) || check;
        });

        jQuery.validator.addMethod("check_date_of_birth", function (value, element) {
            var minAgeAllowed = $(element).attr('data-min-age-allowed');

            if (value != '') {
                if ($("select#select-year").length > 0 || $("select#select-month").length > 0) {
                    var valueDate = $("#date_of_birth").val();
                    var age = 10000;
                    if (valueDate != '')
                        age = moment().diff(moment(valueDate, "YYYY-M-D", true), "years");
                    return age >= minAgeAllowed;

                } else {
                    return true;
                }
            } else {
                return true;
            }
        });//minor

        jQuery.validator.addMethod("multiFileRequired", function (value, element) {

            //return $(element).parent().find('.file-detail-table tbody tr[role="row"]').length > 0;            
            var ulFilesId = $(element).data('ul-files-id');
            return $('#' + ulFilesId + ' li .progress-file.completed').length > 0;
        });

        jQuery.validator.addMethod("required_date", function (value, element) {
            return $("#date_of_birth") != null && $("#date_of_birth").val() != "";
        });//minor

        jQuery.validator.addMethod("differentTo", function (value, element) {
            var diffTo = $('#' + $(element).attr('data-different-to')).val();
            if (value != null && diffTo != null && value == diffTo) {
                return false;
            } else {
                return true;
            }
        });

        jQuery.validator.addMethod("currencyformat", function (value, element) {

            var regexpr = /^\d*\.?\d+$/;
            var decimalMark = $(element).attr('data-decimal-mark');
            if (decimalMark == "" || decimalMark == null) {
                decimalMark = "."
            }

            if (decimalMark === ",") {
                regexpr = /^\d*\,?\d+$/;
            }

            return this.optional(element) || regexpr.test(value);
        });

        /*
        jQuery.validator.addMethod("percentformat", function (value, element) {
            var regexpr = /^\d*\.?\d+$/;
            var fieldDecimalMark = $(element).attr('data-decimal-mark');
            var decimalMark = (fieldDecimalMark != '' && fieldDecimalMark != undefined)? fieldDecimalMark : window.decimalCharacter;
            if (decimalMark == "" || decimalMark == null) {
                decimalMark = "."
            }
            if (decimalMark === ",") {
                regexpr = /^\d*\,?\d+$/;
            }
            return this.optional(element) || regexpr.test(value);
        });
        */

        jQuery.validator.addMethod("numericformat", function(value, element) {
            var fieldDecimalMark = $(element).attr('data-decimal-mark');
            var decimalMark = (fieldDecimalMark != '' && fieldDecimalMark != undefined) ? fieldDecimalMark : window.decimalCharacter;
            if (!decimalMark) {
                decimalMark = ".";
            }
            var thousandSeparator = decimalMark === "." ? "," : ".";
            value = value.trim();
            if (value === "") {
                return this.optional(element);
            }
            var regex;
            if (decimalMark === ".") {
                regex = /^(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d+)?$/;
            } else {
                regex = /^(?:\d{1,3}(?:\.\d{3})*|\d+)(?:,\d+)?$/;
            }
            return regex.test(value);
        });

        jQuery.validator.addMethod("numericformatdecimalplaces", function(value, element) {
            var fieldDecimalMark = $(element).attr('data-decimal-mark');
            var decimalPlaces = $(element).attr('data-decimal-places') || '4';
            decimalPlaces = parseInt(decimalPlaces);
            var decimalMark = (fieldDecimalMark != '' && fieldDecimalMark != undefined) ? fieldDecimalMark : window.decimalCharacter;
            if (!decimalMark) {
                decimalMark = ".";
            }
            var thousandSeparator = decimalMark === "." ? "," : ".";
            value = value.trim();
            if (value === "") {
                return this.optional(element);
            }
            var regex;
            if (decimalMark === ".") {
                regex = new RegExp(`^(?:\\d{1,3}(?:,\\d{3})*|\\d+)(?:\\.\\d{0,${decimalPlaces}})?$`);
                if (!regex.test(value)) {
                    regex = new RegExp(`^\\d+(?:\\.\\d{0,${decimalPlaces}})?$`);
                }
            } else {
                regex = new RegExp(`^(?:\\d{1,3}(?:\\.\\d{3})*|\\d+)(?:,\\d{0,${decimalPlaces}})?$`);
                if (!regex.test(value)) {
                    regex = new RegExp(`^\\d+(?:,\\d{0,${decimalPlaces}})?$`);
                }
            }
            return regex.test(value);
        });


        jQuery.validator.addMethod("numericformatnotdecimalplaces", function(value, element) {
            var fieldDecimalMark = $(element).attr('data-decimal-mark');
            var decimalMark = (fieldDecimalMark != '' && fieldDecimalMark != undefined) ? fieldDecimalMark : window.decimalCharacter;
            if (!decimalMark) {
                decimalMark = ".";
            }
            var thousandSeparator = decimalMark === "." ? "," : ".";
            value = value.trim();
            if (value === "") {
                return this.optional(element);
            }
            var regex;
            if (thousandSeparator === ",") {
                regex = /^(?:\d{1,3}(?:,\d{3})*|\d+)$/;
            } else {
                regex = /^(?:\d{1,3}(?:\.\d{3})*|\d+)$/;
            }
            return regex.test(value);
        });

        jQuery.validator.addMethod("numberformat", function (value, element) {
            var regexpr = /^\d*\.?\d+$/;
            var decimalMark = window.decimalCharacter;
            if (decimalMark == "" || decimalMark == null) {
                decimalMark = "."
            }
            if (decimalMark === ",") {
                regexpr = /^\d*\,?\d+$/;
            }
            return this.optional(element) || regexpr.test(value);
        });
        jQuery.validator.addMethod("rangeorspecific", function (value, element) {

            var valueRange = value;
            var patt = new RegExp("^[0-9]+\-[0-9]+$");
            var patt2 = new RegExp("^[0-9]+$");
            var isRange = patt.test(valueRange);
            if (isRange) {
                var numbers = valueRange.split("-");
                if (parseInt(numbers[1]) <= parseInt(numbers[0]))
                    return false;

            }
            return isRange || patt2.test(valueRange) || valueRange == "";

        });

        jQuery.validator.addMethod("codevalidator", function (value, element) {
            var result = $(element).data('required') && $(element).data('missing-validation') && value != '';
            return !result;

        });

        jQuery.validator.addMethod("codevalidator-badvalue", function (value, element) {
            var result = !$(element).data('required') || $(element).data('required') && !$(element).data('missing-validation') && !$(element).attr('data-not-valid') && value != '';
            return result;

        });

        jQuery.validator.addMethod("validate_email", function (value, element) {
            if (/^([a-zA-Z0-9_\.\-])+(\+[a-zA-Z0-9_\.\-]+)*\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(value)) {
                return true;
            }
            else {
                return false;
            }
        });

        jQuery.validator.addMethod("validate_email_special", function (value, element) {
            if (value.trim() === "")
                return true;

            if (/^([a-zA-Z0-9_\.\-])+(\+[a-zA-Z0-9_\.\-]+)*\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(value)) {
                return true;
            }
            else {
                return false;
            }
        });

        jQuery.validator.addMethod("minValueFormat", function(value, element, param) {
            var fieldDecimalMark = $(element).attr('data-decimal-mark');
            var decimalMark = (fieldDecimalMark != '' && fieldDecimalMark != undefined) ? fieldDecimalMark : window.decimalCharacter;
            if (!decimalMark) {decimalMark = "."; }

            var thousandSeparator = decimalMark === "." ? "," : ".";
            value = value.trim();
            if (value === "") {
                return this.optional(element);
            }
            var numericValue;
            if (decimalMark === ".") {
                numericValue = parseFloat(value.replace(/,/g, ''));
            } else {
                numericValue = parseFloat(value.replace(/\./g, '').replace(',', '.'));
            }
            var minValue = (typeof param === 'string') ? parseFloat(param) : param;
            if (isNaN(numericValue) || isNaN(minValue)) {
                return false;
            }
            return numericValue >= minValue;
        });

        jQuery.validator.addMethod("maxValueFormat", function(value, element, param) {
            var fieldDecimalMark = $(element).attr('data-decimal-mark');
            var decimalMark = (fieldDecimalMark != '' && fieldDecimalMark != undefined) ? fieldDecimalMark : window.decimalCharacter;
            if (!decimalMark) {
                decimalMark = ".";
            }
            var thousandSeparator = decimalMark === "." ? "," : ".";
            value = value.trim();
            
            if (value === "") {
                return this.optional(element);
            }
            var numericValue;
            if (decimalMark === ".") {
                numericValue = parseFloat(value.replace(/,/g, ''));
            } else {
                numericValue = parseFloat(value.replace(/\./g, '').replace(',', '.'));
            }
            var maxValue = (typeof param === 'string') ? parseFloat(param) : param;
            if (isNaN(numericValue) || isNaN(maxValue)) {
                return false;
            }
            return numericValue <= maxValue;
        });

        jQuery.validator.addMethod("special_number_min_value", function (value, element) {
            if (value.trim() === "")
                return true;
            var digitGroupSeparator = window.digitGroupSeparator;
            if (digitGroupSeparator !== null && digitGroupSeparator !== undefined) {

            } else {
                digitGroupSeparator = ',';
            }
            var newValue = value.replaceAll(digitGroupSeparator, '');
            var valueToEvaluate = parseFloat(newValue);
            var minValue = $(element).attr('data-minvalue');
            var minValueToEvaluate = parseFloat(minValue);
            if (valueToEvaluate >= minValueToEvaluate)
                return true;
            return false;
        });
        jQuery.validator.addMethod("special_number_max_value", function (value, element) {
            if (value.trim() === "")
                return true;
            var digitGroupSeparator = window.digitGroupSeparator;
            if (digitGroupSeparator !== null && digitGroupSeparator !== undefined) {

            } else {
                digitGroupSeparator = ',';
            }
            var newValue = value.replaceAll(digitGroupSeparator, '');
            var valueToEvaluate = parseFloat(newValue);
            var maxValue = $(element).attr('data-maxvalue');
            var maxValueToEvaluate = parseFloat(maxValue);
            if (valueToEvaluate <= maxValueToEvaluate)
                return true;
            return false;
        });



        $('form.validate').each(function () {

            var formObject = $(this);
            var formID = formObject.prop('id');

            var objValidate = {
                ignore: ':hidden:not(.jqmsLoaded, .rich_text, .custom-file-multiple),.custom-radio-behavior , custom-check-behavior',
                rules: {
                },
                messages: {
                },
                errorPlacement: function (error, element) // Added for Ckeditor in Partner Portal
                {
                    if (element.hasClass('wysiwyg') || element.hasClass('rich_text')) {
                        error.insertAfter(element.next('.cke'));
                    } else if (element.hasClass('jqmsLoaded')) {
                        error.insertAfter(element.parent());
                    } else if (element.hasClass('custom-file-multiple')) {
                        error.insertAfter(element.parent().parent().parent().parent());
                    }
                    else {
                        error.insertAfter(element);
                    }
                },
                showErrors: function (errorMap, errorList) {
                    this.defaultShowErrors();
                    var foundFirstError = false;
                    errorList.forEach(function (item, index) {
                        if (item.message.indexOf('data-tooltip') > -1) {
                            if ($('.tooltip').length > 0) {
                                $('.tooltip').remove();
                            }
                            $(item.element).next('label.error').find('span.has-tip').foundation();
                        }
                    });
                    $('label.error').attr('tabindex', '0');
                    $('label.error-custom').attr('tabindex', '0');
                }
            };

            if (formID == "organization-register-form" ||
                formID == 'signup-questions-form' ||
                formID == "volunteer-register-form" ||
                formID == "volunteer-skills-doc" ||
                formID == "createanewteam" ||
                formID == "report-form") {

                $('form input[type=submit].submit-button').click(function () {
                    partial_validate_custom(formObject, formID, false);

                    if (formID == "createanewteam")
                        if (validate_team_members_before_create() > 0)
                            return false;
                });

                objValidate['submitHandler'] = function (form) {
                    var valid = false;
                    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
                    urlSite = urlSite.substring(0, urlSite.length - 1);
                    var isTeamSignUp = false;

                    if (formID == "signup-questions-form") {
                        if ($('form#signup-questions-form input[name="isTeamAction"]').val() == "1") {
                            isTeamSignUp = true;
                            // This is due to in the team signup the questions are shown again
                            valid = true;
                        }
                    }

                    if (!isTeamSignUp) {
                        valid = partial_validate_custom(formObject, formID, false);
                    }

                    if (valid) {
                        if ($("form#organization-register-form").length > 0) {
                            //Events to partner Registration Branch Logic
                            volunteer_registration_branch_logic('organization-register-form');

                            //Redirect to next if meet conditions of branch logic, if not meet conditions apply submit normally
                            var branchLogicInputRedirect = $('form#organization-register-form').find('input#branch-logic-redirect');
                            var isSuccess = branchLogicInputRedirect.attr("data-issuccess");

                            if (branchLogicInputRedirect.val() != '' && branchLogicInputRedirect.val() != null && branchLogicInputRedirect.val() != '/organization-confirmation-registration') {
                                var form = $("form#organization-register-form");
                                var postData = form.serializeObject();
                                var donationTransactionId = '';
                                var donationAmount = '';
                                var donationAuthorizationId = '';


                                //Disable submit to prevent multiples
                                form.find(".submit-button").attr("disabled", true);
                                form.find(".spinner").show();

                                $.ajax({
                                    type: 'GET',
                                    url: urlSite + '/ARS/getSiteId',
                                    success: function (data) {
                                        var siteId = data;

                                        postData['back-branch-logic'] = [];

                                        var urlObject = {};
                                        urlObject.urlCurrent = urlSite + branchLogicInputRedirect.val();
                                        urlObject.urlBack = window.location.pathname;

                                        postData['back-branch-logic'].push(urlObject);

                                        //Validate if exists value in localStorage
                                        if (localStorage.getItem('partner-branch-logic-form-data-' + siteId) !== null && localStorage.getItem('partner-branch-logic-form-data-' + siteId) !== 'null') {
                                            //Get values of donation if exists
                                            var partnerForm = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));

                                            donationTransactionId = (partnerForm['donationTransactionId']) ? partnerForm['donationTransactionId'] : '';
                                            donationAmount = (partnerForm['donationAmount']) ? partnerForm['donationAmount'] : '';
                                            donationAuthorizationId = (partnerForm['donationAuthorizationId']) ? partnerForm['donationAuthorizationId'] : '';

                                            postData['donationTransactionId'] = donationTransactionId;
                                            postData['donationAmount'] = donationAmount;
                                            postData['donationAuthorizationId'] = donationAuthorizationId;
                                        }

                                        _assign_value_json_local_storage('partner-branch-logic-form-data-' + siteId, postData);
                                        // validate if Redirection path is success a u
                                        if (isSuccess == true || isSuccess == "true") {
                                            ajax_submit_partner_registration(postData, branchLogicInputRedirect.val(), siteId);
                                        } else {

                                            var formBlockToPRocess = $('.formBlock.blockContainer form');
                                            remove_form_restriction(formBlockToPRocess, '19');
                                            //Redirect to next step
                                            window.location.href = urlSite + branchLogicInputRedirect.val();
                                        }

                                    }
                                });
                            }
                            else {

                                var securityKey = getClientSecurityKey();
                                var recalculateToken = false;
                                if (securityKey != undefined) {
                                    // compare the current time vs the time when the token eas generated
                                    var initialTime = $('form#organization-register-form input[name="user_response_time"]').val();
                                    var currentTime = new Date().getTime();

                                    var diff = currentTime - initialTime;

                                    if (diff > 90000)
                                        recalculateToken = true;

                                }

                                if (recalculateToken === true) {
                                    $('#organization-register-form').find(".submit-button").attr("disabled", true);
                                    var actionName = $('form#organization-register-form input[name="pageactioname"]').val();

                                    grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {
                                        if ($('form#organization-register-form input[name="user_response"]').length > 0) {
                                            var currentTime = new Date().getTime();
                                            currentTime = currentTime + (24 * 60 * 60 * 1000);
                                            $('form#organization-register-form input[name="user_response"]').val(token);
                                            $('form#organization-register-form input[name="user_response_time"]').val(currentTime);
                                        }
                                        ajax_submit_event($("form#organization-register-form"), null, null);
                                    });
                                } else {

                                    ajax_submit_event($("form#organization-register-form"), null, null);
                                }

                                //ajax_submit_event($("form#organization-register-form"), null);
                            }

                            return false;
                        }
                        //  Validate Opp Signup Questions
                        if ($('#signup-questions-form').length > 0) {
                            //  Validate Opp Signup Questions
                            var formData = $('#signup-questions-form').serializeObject();
                            var qs = $('#signup-questions-form .question').find('input, textarea, select');
                            formData['questions'] = qs.serializeObject();

                            //  Get ISO data if exists
                            var isoData = localStorage.getItem('signup-iso');
                            var dataFormIso = isoData ? JSON.parse(isoData) : null;

                            //  Get team data if exists
                            var teamData = localStorage.getItem('signup-team');
                            var teamDataParsed = teamData ? JSON.parse(teamData) : null;

                            //Validate if exists branch logic, create LocalStorage value and redirect
                            if ($('.opportunity-detail-content input.branch-logic-info').length > 0) {
                                var workflowId = $('.opportunity-detail-content input.branch-logic-info').first().data('workflow');
                                var redirectTo = '';
                                var isSuccessPage = '';

                                if ($('.opportunity-detail-content input.branch-logic-info').length == 1) {
                                    redirectTo = $('.opportunity-detail-content input.branch-logic-info').first().data('redirectto');
                                    isSuccessPage = $('.opportunity-detail-content input.branch-logic-info').first().data('issuccess');
                                    redirectTo = (redirectTo) ? redirectTo.split('?')[0] : redirectTo;  //  Fix to compare path without params
                                }
                                if (redirectTo !== '/individual-signup-confirmation' && isSuccessPage !== 'True') {

                                    var occurrenceId = formData.occId;
                                    var fieldsOccurrence = [];
                                    $('.occurrence-field-ars').each(function () {
                                        fieldsOccurrence.push($(this).prop('id'));
                                    });


                                    var datatoSend = {
                                        occurrenceId: occurrenceId,
                                        fieldsOccurrence: fieldsOccurrence
                                    };
                                    $.ajax({
                                        type: 'POST',
                                        data: datatoSend,
                                        url: urlSite + '/ARS/getSiteIdAndOccurrenceFields',
                                        beforeSend: function () {
                                            $('.processing_screen').first().show();
                                        },
                                        success: function (data) {
                                            data = JSON.parse(data);
                                            var siteId = data.SiteId;
                                            fieldsOccurrence.forEach(function (item) {
                                                if (data.Record != undefined && data.Record[item.split('.')[1]] != null) {
                                                    $('input[name="' + item + '[value]"]').val(data.Record[item.split('.')[1]]);

                                                }
                                            });

                                            var urlObject = {};
                                            //Logic for Branch logic conditions
                                            volunteer_registration_branch_logic('signup-questions-form');
                                            var branchLogicInputRedirect = $('input#branch-logic-redirect');
                                            formData['back-branch-logic'] = [];
                                            urlObject.urlCurrent = urlSite + branchLogicInputRedirect.val();
                                            urlObject.urlBack = window.location.pathname;
                                            formData['back-branch-logic'].push(urlObject);
                                            formData['isExpressInterest'] = $('.express-interest-container').length > 0;
                                            formData['oppTitle'] = $('h2.title-opportunity').text();
                                            formData['oppDate'] = $('#signup-questions-form input[name="oppDate"]').val();
                                            formData['workflowId'] = workflowId;

                                            //Update LocalStorage
                                            _assign_value_json_local_storage('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId, formData);
                                            //Redirect to next step or submit
                                            if (branchLogicInputRedirect.val().split('?')[0] === '/individual-signup-confirmation' || branchLogicInputRedirect.attr('data-issuccess') === 'true') {
                                                //  Verify if is ISO opp
                                                if (dataFormIso && dataFormIso.isISO) {
                                                    ajax_submit_signup_iso(dataFormIso, branchLogicInputRedirect.val(), formData);
                                                    localStorage.removeItem('signup-iso');
                                                } else if (teamDataParsed && teamDataParsed.isTeamSignup) {
                                                    var arsData = { sid: siteId, wid: workflowId, signupType: "Team Only" };
                                                    localStorage.setItem('ars-signup-type', JSON.stringify(arsData));
                                                    localStorage.removeItem('signup-team');
                                                    window.location.href = urlSite + teamDataParsed.finalUrl;
                                                } else {
                                                    ajax_submit_sign_up(formData, branchLogicInputRedirect.val());
                                                }
                                            } else {
                                                window.location.href = urlSite + branchLogicInputRedirect.val();
                                            }
                                        }
                                    });
                                }
                                else {
                                    if (isSuccessPage === 'True') {
                                        //  Verify if is ISO opp
                                        if (dataFormIso && dataFormIso.isISO) {
                                            ajax_submit_signup_iso(dataFormIso, redirectTo, formData);
                                            localStorage.removeItem('signup-iso');
                                        } else if (teamDataParsed && teamDataParsed.isTeamSignup) {
                                            localStorage.removeItem('signup-team');
                                            window.location.href = urlSite + teamDataParsed.finalUrl;
                                        } else {
                                            ajax_submit_sign_up(formData, redirectTo);
                                        }
                                    }
                                    else {
                                        //  Verify if is ISO opp
                                        if (dataFormIso && dataFormIso.isISO) {
                                            ajax_submit_signup_iso(dataFormIso, null, formData);
                                            localStorage.removeItem('signup-iso');
                                        } else if (teamDataParsed && teamDataParsed.isTeamSignup) {
                                            localStorage.removeItem('signup-team');
                                            window.location.href = urlSite + teamDataParsed.finalUrl;
                                        } else {
                                            ajax_submit_sign_up(formData, null);
                                        }
                                    }
                                }
                            }
                            else {
                                if (dataFormIso && dataFormIso.isISO) {
                                    ajax_submit_signup_iso(dataFormIso, null, formData);
                                    localStorage.removeItem('signup-iso');
                                } else if (teamDataParsed && teamDataParsed.isTeamSignup) {
                                    localStorage.removeItem('signup-team');
                                    window.location.href = urlSite + teamDataParsed.finalUrl;
                                } else {

                                    let isMultiSignup = formData["isMultiSignup"] == 'true';
                                    let urlSuccessPage = (isMultiSignup) ? "/opportunity-multi-signup-confirmation" : null;
                                    ajax_submit_sign_up(formData, urlSuccessPage);
                                }
                            }

                            return false;
                        }
                        if ($("form#volunteer-register-form").length > 0) {
                            var isSSO = $('#volunteer-register-form input[name="isSSOSource"]').val();
                            var isSocialLogin = $('#volunteer-register-form input[name="isSocialLoginSource"]').val();
                            var requiredVerificationCode = true;

                            if (isSSO == "1")
                                requiredVerificationCode = false;
                            else if (isSocialLogin == "1") {
                                var emailInput = $.trim($('#volunteer-register-form #email').val());
                                var emailOriginal = $('#volunteer-register-form #email').data('original-value');

                                if (emailInput === emailOriginal)
                                    requiredVerificationCode = false;
                            }


                            if (requiredVerificationCode === false) {
                                process_volunteer_registration_submit();
                            }
                            else {
                                is_needed_verification_code_hoc('#' + formID, false);
                                return false;
                            }
                        }
                        else {
                            return true;
                        }
                    } else {
                        //Display fieldsets and hide processing screen

                        $('.processing_screen').hide();

                        //Move document to first field with error
                        var topLabelError = 0;
                        var currentScrollTopUser = $(document).scrollTop();

                        if (formObject.find('label.error-custom:visible').length > 0) {
                            topLabelError = formObject.find('label.error-custom:visible').first().offset().top;
                            var item = formObject.find('label.error-custom:visible').first().parent('columns').find('input.error');
                            if (item != null && item != undefined) {
                                item.focus();
                            } else {
                                item = formObject.find('label.error-custom:visible').first().parent('columns').find('select.error');
                                if (item != null && item != undefined) {
                                    item.focus();
                                }
                            }

                        }
                        else if (formObject.find('label.error:visible').length > 0) {
                            topLabelError = formObject.find('label.error:visible').first().offset().top;
                            var item = formObject.find('label.error:visible').first().parent('columns').find('input.error');
                            if (item != null && item != undefined) {
                                item.focus();
                            } else {
                                item = formObject.find('label.error:visible').first().parent('columns').find('select.error');
                                if (item != null && item != undefined) {
                                    item.focus();
                                }
                            }

                        }

                        if (currentScrollTopUser > topLabelError) {
                            $('body,html').animate({
                                scrollTop: topLabelError - 100,
                            }, 500);
                        }

                        return false;
                    }
                }
            }

            //Push all inputs to objValidate
            formObject.find("input, select, textarea").each(function (item) {


                var field_data = $(this).data();
                var name = $(this).prop("name");
                var type = $(this).attr("data-type");
                var length = $(this).attr("data-length");
                var minlength = $(this).attr("data-min-length");
                var maxlength = $(this).attr("data-max-length");
                var creditCard = $(this).attr("data-creditcard");
                var equalTo = $(this).attr("data-equal-to");
                var notEqualTo = $(this).attr("data-not-equal-to");
                var labelName = $(this).siblings('label[for="' + name + '"]').first().text();
                var minOptions = $(this).attr('data-min-options');
                var maxOptions = $(this).attr('data-max-options');

                var isSpecialNumber = $(this).hasClass('field-with-auto-number');

                rules = {};
                messages = {};
                rules['required'] = {
                    depends: function () {
                        if ($(this).attr("data-required") === "true") {
                            var nameInput = $(this).attr("name");
                            var messageRequired = (labelName.length > 25 || labelName == '') ? translation.field_required : labelName + ' ' + translation.is_required;
                            messages['required'] = messageRequired;
                            var isRequiredField = true
                            if ($(this).attr('name') == 'personal_nick_name' ||
                                $(this).attr('name') == 'organization_formal_nick_name' ||
                                $(this).attr('name') == 'with_copy_to'
                            ) {
                                isRequiredField = false;
                            }

                            if ($(this).hasClass('jqmsLoaded')) {
                                isRequiredField = function (element) {
                                    if ($(element).next('.ms-options-wrap').is(':visible')) {
                                        return true;
                                    }
                                    return false;
                                };
                            } else if ($(this).hasClass('rich_text')) {
                                var id = $(this).attr('id');
                                isRequiredField = function (element) {
                                    CKEDITOR.instances[id].updateElement();
                                    if ($(element).next('.cke').is(':visible')) {
                                        return true;
                                    }
                                    return false;
                                }
                            }
                            if ($('input[name="' + nameInput + '"][data-type="file"]').length > 0 && $('input[name="' + nameInput + '"]').parent().find('span.file-upload-name a[target="_blank"]').length > 0) {
                                return false;
                            }

                            $(this).rules('add', {
                                required: isRequiredField,
                                messages: {
                                    required: messageRequired
                                },
                                normalizer: function (value) { return $.trim(value); }
                            });
                            return true
                        }
                        return false;
                    }
                }

                if ($(this).attr('data-code-validator-input')) {
                    rules["codevalidator"] = true;
                    messages["codevalidator"] = 'This code needs to be checked';
                    rules["codevalidator-badvalue"] = true;
                    messages["codevalidator-badvalue"] = '';
                }

                if ($(this).attr("data-val-range-specific") === "true") {
                    rules["rangeorspecific"] = true;
                    var messageValidationText = window.translation.range_specific_validation_text;
                    if (messageValidationText != null && messageValidationText != undefined && messageValidationText != "") {
                        messageValidationText = messageValidationText.replaceAll('{x}', "16");
                        messageValidationText = messageValidationText.replaceAll('{y}', "50-65");
                    } else {
                        messageValidationText = window.translation.currency_format_message + " 16 " + window.translation.or_word + " 50-65";
                    }
                    messages["rangeorspecific"] = messageValidationText;
                }
                if (type) {

                    if (type === 'email' && $(this).attr("data-required") === "false") {
                        rules["validate_email_special"] = true;
                        messages["validate_email_special"] = translation.please_complete_valid_email;
                    } else if (type === 'email' && $(this).attr("data-required") === "true") {
                        rules["validate_email"] = true;
                        messages["validate_email"] = translation.please_complete_valid_email;
                    }
                    if (type === 'date') {
                        var formatDateGlobal = DatePickerDateFormat = window.DatePickerDateFormat;

                        if (formatDateGlobal.toLowerCase().indexOf('d/m') == -1) {

                            rules[type] = true;
                            messages[type] = translation.please_complete_valid_date;
                        }
                        else {

                            rules["dateDMY"] = true;
                            messages["dateDMY"] = translation.please_complete_valid_date;
                        }
                    }
                    if (type === 'file') {


                        if ($(this).hasClass('multiple-file') && $(this).attr('data-multi-required') != null && $(this).attr('data-multi-required') != undefined) {
                            isMultipleRequired = $(this).attr('data-multi-required');

                            if (isMultipleRequired == 'true') {
                                rules["multiFileRequired"] = true;
                                messages["multiFileRequired"] = translation.please_at_least_file;
                            }
                        }

                        // Validation to file field in compliance forms
                        if (formObject.hasClass('isComplianceForm')) {
                            if (($(this).attr("data-required") === "true")) {
                                if ($(this).siblings(".compliance_file").length > 0) {
                                    if ($(this).siblings(".compliance_file").val() != "") {
                                        rules["required"] = false;
                                    } else {
                                        rules["required"] = true;
                                    }
                                } else {
                                    rules["required"] = true;
                                }
                            }
                        }
                    }

                    /*
                    if (type === 'currency') {
                        rules["currencyformat"] = true;
                        messages["currencyformat"] = window.translation.currency_format_message + " 123" + $(this).attr('data-decimal-mark') + "12";
                    }
                    */

                    if (type === 'currency') {
                        let dataValueMin = $(this).attr('data-value-min');
                        let dataValueMax = $(this).attr('data-value-max');

                        let fieldDecimalCharacter = $(this).attr('data-decimal-mark');
                        let decimalMark = ( fieldDecimalCharacter != '' && fieldDecimalCharacter != undefined)?fieldDecimalCharacter:window.decimalCharacter;
                        let thousandSeparator = decimalMark === "." ? "," : ".";
                        rules["numericformat"] = true;
                        messages["numericformat"] = window.translation.currency_format_message + " 12"+thousandSeparator+"345" + decimalMark + "12";

                        if (dataValueMin !== undefined && dataValueMin !== null && dataValueMin !== '') {
                            rules["minValueFormat"] = dataValueMin;
                            messages["minValueFormat"] = translation.form_number_field_min_value.replaceAll('{0}', dataValueMin);
                        }
                        
                        if (dataValueMax !== undefined && dataValueMax !== null && dataValueMax !== '') {
                            rules["maxValueFormat"] = dataValueMax;
                            messages["maxValueFormat"] = translation.form_number_field_max_value.replaceAll('{0}', dataValueMax);
                        }
                    }

                    if (type === 'percent') {
                        let fieldDecimalCharacter = $(this).attr('data-decimal-mark');
                        let decimalMark = ( fieldDecimalCharacter != '' && fieldDecimalCharacter != undefined)?fieldDecimalCharacter:window.decimalCharacter;
                        let thousandSeparator = decimalMark === "." ? "," : ".";
                        rules["numericformat"] = true;
                        messages["numericformat"] = window.translation.currency_format_message + " 12"+thousandSeparator+"345" + decimalMark + "12";
                    }
                    if (type === 'url') {
                        rules["url"] = true;
                        messages["url"] = window.translation.please_enter_valid_url;
                    }
                    if (type === 'number') {

                        let minValue = $(this).attr('min');
                        let maxValue = $(this).attr('max');
                        let dataValueMin = $(this).attr('data-value-min');
                        let dataValueMax = $(this).attr('data-value-max');
                        let isnormalnumber = $(this).hasClass('number-field');
                        let decimalPlaces = $(this).data('decimal-places');
                        decimalPlaces = parseInt(decimalPlaces);
                        if (minValue !== undefined && minValue !== null && minValue !== '') {
                            messages['min'] = translation.form_number_field_min_value.replaceAll('{0}', minValue);
                        }
                        if (maxValue !== undefined && maxValue !== null && maxValue !== '') {
                            messages['max'] = translation.form_number_field_max_value.replaceAll('{0}', maxValue);
                        }
                        if(isnormalnumber){
                            if (dataValueMin !== undefined && dataValueMin !== null && dataValueMin !== '') {
                                rules["minValueFormat"] = dataValueMin;
                                messages["minValueFormat"] = translation.form_number_field_min_value.replaceAll('{0}', dataValueMin);
                            }
                            if (dataValueMax !== undefined && dataValueMax !== null && dataValueMax !== '') {
                                rules["maxValueFormat"] = dataValueMax;
                                messages["maxValueFormat"] = translation.form_number_field_max_value.replaceAll('{0}', dataValueMax);
                            }
                            let fieldDecimalCharacter = $(this).attr('data-decimal-mark');
                            let decimalMark = ( fieldDecimalCharacter != '' && fieldDecimalCharacter != undefined)?fieldDecimalCharacter:window.decimalCharacter;
                            let thousandSeparator = decimalMark === "." ? "," : ".";
                            if(decimalPlaces == 0){
                                rules["numericformatnotdecimalplaces"] = true;
                                messages["numericformatnotdecimalplaces"] = window.translation.currency_format_message + " 12"+thousandSeparator+"345";
                            }else{
                                rules["numericformatdecimalplaces"] = true;
                                messages["numericformatdecimalplaces"] = window.translation.currency_format_message + " 12"+thousandSeparator+"345" + decimalMark + generateNumberByDecimalPlaces(decimalPlaces);
                            }
                        }
                    }
                }
                if ($(this).attr('type') === 'password' && !$(this).attr('data-type') && $(this).attr('data-type') !== "encrypted") {
                    var pwmsg = translation.password_minimal_length_message;
                    //rules["minlength"] = 6;
                    if ($(this).attr('data-psw-min-length') != undefined) {
                        rules["minlength"] = $(this).attr('data-psw-min-length');
                        if ($('.password-meter-detailed').length > 0) {
                            messages["minlength"] = translation.please_complete_valid_password;
                        }
                        else {
                            messages["minlength"] = pwmsg.replace('{0}', rules["minlength"]);
                        }

                    }

                    if ($(this).attr('data-psw-complexity') != undefined) {
                        var complexityValue = $(this).attr('data-psw-complexity');
                        if (complexityValue != '0') {
                            rules["passwordComplexity"] = complexityValue;
                            var complexityMessage = translation.please_complete_valid_password;
                            messages["passwordComplexity"] = complexityMessage;
                        }
                    }

                    if ($(this).attr('data-psw-repetitive') != undefined) {

                        var repetitiveValue = $(this).attr('data-psw-repetitive');
                        if (repetitiveValue != '0') {

                            rules["maxrepetitive"] = $(this).attr('data-psw-repetitive');
                            if ($('.password-meter-detailed').length > 0) {
                                messages["maxrepetitive"] = translation.please_complete_valid_password;
                            }
                            else {
                                messages["maxrepetitive"] = pwmsg.replace('{0}', rules["maxrepetitive"]);
                            }
                        }
                    }

                    if ($(this).attr('data-psw-sequential') != undefined) {

                        var sequentialValue = $(this).attr('data-psw-sequential');
                        if (sequentialValue != '0') {

                            rules["maxsequential"] = $(this).attr('data-psw-sequential');
                            if ($('.password-meter-detailed').length > 0) {
                                messages["maxsequential"] = translation.please_complete_valid_password;
                            }
                            else {
                                messages["maxsequential"] = pwmsg.replace('{0}', rules["maxsequential"]);
                            }
                        }
                    }

                }
                if (equalTo) {
                    var labelFieldEqual = '';
                    var parentContainer = $("input[id='" + equalTo + "']").parents('.field_container');
                    if (parentContainer == null || parentContainer === undefined || parentContainer.length == 0) 
                        parentContainer = $("input[id='" + equalTo + "']").parent().parent();

                    labelFieldEqual = parentContainer.find('label').first().text();

                    rules["equalTo"] = "input[id='" + equalTo + "']";
                    var messageEqualTo = translation.field_must_be_equal;
                    messageEqualTo = messageEqualTo.replaceAll('{x}', labelFieldEqual);
                    messages["equalTo"] = messageEqualTo;
                }
                if (notEqualTo) {
                    var labelFieldNotEqual = $("#" + notEqualTo).parent().parent().find('label').first().text();
                    rules["notEqual"] = "#" + notEqualTo;
                    messages["notEqual"] = translation.field_must_be_different + " " + labelFieldNotEqual;
                }
                if (length) {
                    rules["minlength"] = parseInt(length);
                    rules["maxlength"] = parseInt(length);

                    messages["minlength"] = window.translation.the_field_must_be_of+ " " + length + " " + window.translation.characters;
                    messages["maxlength"] = window.translation.the_field_must_be_of+ " " + length + " " + window.translation.characters;
                }
                if (minlength) {
                    rules["minlength"] = parseInt(minlength);
                    messages["minlength"] = window.translation.the_field_must_be_minimum_of + " " + minlength + " " + window.translation.characters;
                }
                if (maxlength) {
                    rules["maxlength"] = parseInt(maxlength);
                    messages["maxlength"] = window.translation.the_field_must_be_maximum_of +' '+ maxlength +' ' + window.translation.characters;
                }
                if (isSpecialNumber === true) {
                    var minimumValue = $(this).attr('data-minvalue');
                    if (minimumValue !== null && minimumValue !== undefined && minimumValue !== '') {
                        rules['special_number_min_value'] = true;
                        let messageMin = translation.form_number_field_min_value.replaceAll('{0}', minimumValue);
                        //messages['special_number_min_value'] = 'Please enter a value greater than or equal to ' + minimumValue;
                        messages['special_number_min_value'] = messageMin;
                    }
                    var maximumValue = $(this).attr('data-maxvalue');
                    if (maximumValue !== null && maximumValue !== undefined && maximumValue !== '') {
                        rules['special_number_max_value'] = true;
                        let messageMax = translation.form_number_field_max_value.replaceAll('{0}', maximumValue);
                        //messages['special_number_max_value'] = 'Please enter a value less than or equal to ' + maximumValue;
                        messages['special_number_max_value'] = messageMax;
                    }

                }
                if (creditCard) {
                    $(this).validateCreditCard(function (result) {
                        var isValid = result.valid;

                        if (isValid === false) {
                            if ($('#' + name + '-error-number').length === 0 && $(this).val() != "") {
                                var labelError = '<label id="' + name + '-error-number" class="error">Credit card number is not valid</label>';
                                $(this).after(labelError);
                                $('#' + name + '-error-number').css('display', 'none');
                            }

                            if ($(this).val() != "") {
                                $('#' + name + '-error-number').text('Credit card number is not valid');
                                $('#' + name + '-error-number').css('display', 'block');
                            }
                        }
                        else {
                            $('#' + name + '-error-number').css('display', 'none');
                        }
                    });
                }
                if (minOptions && maxOptions) {
                    rules["minOptionsMultiSelect"] = [+minOptions, +maxOptions];
                    if (+minOptions === +maxOptions) {
                        var message = translation.multiselect_only_one_option.replaceAll('[minNumber]', minOptions);
                        messages["minOptionsMultiSelect"] = message;
                    } else if (+minOptions && +maxOptions === 0) {
                        var message = translation.multiselect_min_option.replaceAll('[minNumber]', minOptions);
                        messages["minOptionsMultiSelect"] = message;
                    } else if (+minOptions === 0 && +maxOptions) {
                        var message = translation.multiselect_max_option.replaceAll('[maxNumber]', maxOptions);
                        messages["minOptionsMultiSelect"] = message;
                    } else {
                        var message = translation.multiselect_between_option.replaceAll('[minNumber]', minOptions);
                        message = message.replaceAll('[maxNumber]', maxOptions);
                        messages["minOptionsMultiSelect"] = message;
                    }
                }

                var parameter = $("input[name='date_of_birth']").attr("data-no-validate-min-age");
                if (field_data != null && parameter == "False") {
                    if ('minAge' in field_data) {
                        rules['check_date_of_birth'] = (typeof parameter === 'undefined' || (typeof parameter !== 'undefined' && parameter == "False"));
                        messages['check_date_of_birth'] = field_data.minAge;
                    }
                }

                if (field_data != null && ('requiredDate' in field_data)) {
                    rules['required_date'] = true;
                    var messageRequired = translation.form_error_field_required;
                    if ($("#birth_date_mode").val() == "year_only") {
                        messageRequired = messageRequired.replaceAll('{0}', translation.year_of_birh);
                    } else {
                        messageRequired = messageRequired.replaceAll('{0}', translation.date_of_birth);
                    }
                    messages['required_date'] = messageRequired;
                }

                var differentTo = $(this).attr("data-different-to");
                if (field_data != null && differentTo && ('differentTo' in field_data)) {
                    var labelFieldDifferent = $("#" + name).parent().parent().find('label').first().text();
                    var labelFieldDifferent2 = $("#" + differentTo).parent().parent().find('label').first().text();
                    rules["differentTo"] = "#" + name;
                    messages["differentTo"] = labelFieldDifferent + " " + translation.field_must_be_different + " " + labelFieldDifferent2;
                }

                if (!$.isEmptyObject(rules)) {
                    objValidate.rules[name] = rules;
                    objValidate.messages[name] = messages;
                }
            });

            formObject.validate(objValidate);
        });

        //Initialize inputTelfield and validation on change event
        if ($('form input[data-type="phone"]').length !== 0) {
            $('form input[data-type="phone"]').each(function (item) {
                var formObject = $(this).parents('form');
                var telInput = $(this).get(0);
                var nameInput = $(this).attr("name");
                var fixedVal = $(this).val();

                window.intlTelInput(telInput, {
                    allowDropdown: true,
                    initialCountry: window.IsoPhone,
                    preferredCountries: [window.IsoPhone],
                    utilsScript: "/js/vendors/intl-tel-utils.js"
                });


                var international_number = $(this).val();
                //form builder field
                var nameInputDial = nameInput.replace('[value]', '[phoneDial]');
                if ($('form input[name="' + nameInputDial + '"]').length > 0) {
                    var iti = window.intlTelInputGlobals.getInstance(telInput);
                    if ($(this).val().indexOf('+') <= 0) {

                    }
                }


                //normal phone field
                if ($("form input[name='international_" + nameInput + "']").length > 0) {
                    var iti = window.intlTelInputGlobals.getInstance(telInput);
                    if ($(this).val().indexOf('+') <= 0) {
                        if ($("form input[name='international_" + nameInput + "_fixed']").length > 0) {
                            var fixed_number = $("form input[name='international_" + nameInput + "_fixed']").val();
                            international_number = fixed_number;
                            iti.setNumber(fixed_number);
                        }
                    }
                    $("form input[name='international_" + nameInput + "']").val(international_number);
                }

                fix_validate_phone_field_after_country_change(telInput, $(this), true, false, formObject, nameInput);

                /*$(this).on('change', function () {
                    var iti = window.intlTelInputGlobals.getInstance(telInput);
                    if ($.trim($(this).val())) {
                        if (iti.isValidNumber()) {
                            if ($(this).parents(".row").first().find('label.error-custom').length !== 0) {
                                $(this).parents(".row").first().find('label.error-custom').remove();
                            }
                            if ($("form input[name='international_" + nameInput + "']").length > 0) {
                                $("form input[name='international_" + nameInput + "']").val(iti.getNumber());
                            };

                        } else {
                            var spanRequired = "<label class='error-custom'>" + translation.please_complete_valid_phone + "</label>";

                            if ($(this).parents(".row").first().find('label.error-custom').length === 0) {
                                $(this).parents(".iti").first().append(spanRequired);
                            }
                            if ($("form input[name='international_" + nameInput + "']").length > 0) {
                                $("form input[name='international_" + nameInput + "']").val("");
                            }
                            return false;
                        }
                    } else {
                        if ($(this).parents(".row").first().find('label.error-custom').length !== 0) {
                            $(this).parents(".row").first().find('label.error-custom').css('display', 'none');
                        }
                        if ($("form input[name='international_" + nameInput + "']").length > 0) {
                            $("form input[name='international_" + nameInput + "']").val(iti.getNumber());
                        }
                        var value = $.trim($(this).val());
                        if (value === "") {
                            var data_required = $(this).attr('data-required');
                            var spanRequired = "";
                            if (data_required !== null && data_required === "true") {
                                spanRequired = "<label class='error-custom'>" + translation.please_complete_valid_phone + "</label>";
                            }

                            if ($(this).parents(".row").first().find('label.error-custom').length === 0) {
                                if (spanRequired !== "")
                                    $(this).parents(".iti").first().append(spanRequired);
                                $("form input[name='" + nameInput + "']").val("");
                            }
                            if ($("form input[name='international_" + nameInput + "']").length > 0) {
                                $("form input[name='international_" + nameInput + "']").val("");
                            }
                            return false;

                        }

                    }
                });*/

            });
        }

        //On change event to checkbox, radios and multiselect
        var selector = 'form input[type="checkbox"][data-required="true"], form input[type="radio"][data-required="true"]';
        $(document).on('change', selector, function () {
            var condition = ($(this).attr('type') === 'checkbox') ? $(this).prop('checked') === true : $(this).val() && $(this).prop('checked') === true;
            if (condition) {
                if ($(this).attr('type') !== 'checkbox') {
                    if ($(this).parents(".row.input-group").first().find('label.error-custom').length) {
                        $(this).parents(".row.input-group").first().find('label.error-custom').css('display', 'none');
                    } else if ($(this).parents(".row").first().find('label.error-custom').length) {
                        $(this).parents(".row").first().find('label.error-custom').css('display', 'none');
                    }

                }
                else {
                    if ($(this).parents(".row").first().find('label.error-custom').length) {
                        if ($(this).parents(".row").first().find('label.error-custom').parent().hasClass("right")) {
                            $(this).parents(".row").first().find('label.error-custom').css('display', 'none');
                        } else {
                            //$(this).parents(".row").first().find('label.error-custom').parent().css('display', 'none');
                            $(this).parents(".row").first().find('label.error-custom').css('display', 'none');
                        }
                    }
                }
            }
        });

        var multiples = 'form select[multiple="multiple"][data-required="true"]';
        $(document).on('change', multiples, function () {
            if ($(this).val()) {
                if ($(this).parents(".row").first().find('label.error-custom').length) {
                    $(this).parents(".row").first().find('label.error-custom').css('display', 'none');
                }
                if ($(this).parents(".row").first().find('label.error').length) {
                    $(this).parents(".row").first().find('label.error').css('display', 'none');
                }
            }
        });
    }
}

const generateNumberByDecimalPlaces = decimalPlaces => Array.from({length: decimalPlaces}, (_, i) => i + 1).join('');

function partial_validate_custom(formObject, formID, fromSharingPortal) {
    var valid = true;
    var currentScrollTopUser = $(document).scrollTop();
    var topLabelError = 0;

    //Get checkboxes required and validate if are checked
    formObject.find("input[type='checkbox'][data-required='true']").each(function (item) {

        if (!(fromSharingPortal === true && $(this).parents('.formBlock').first().length > 0)) {

            var name_checkbox = $(this).attr("name");
            var is_checked = false;
            $("form input[name='" + name_checkbox + "']").each(function () {
                if ($(this).prop('checked') === true) {
                    is_checked = true;
                }
            });
            if (is_checked === false) {
                var spanRequired = "<div class='small-12 checkbox-error columns'><label class='error-custom'>" + translation.field_required + "</label></div>";

                if ($(this).parent().parent().find('label.error-custom').length === 0) {
                    $(this).parent().parent().append(spanRequired);
                }
                valid = false;
            }


        }

    });

    //Get radios required and validate if are checked
    if (formObject.find("input[type='radio'][data-required='true']").length > 0) {

        var is_checked = false;

        var requiredRadioByNameIsChecked = {};
        var radioBtnProcessed = {};
        var radioBtnInSP = {};


        formObject.find("input[type='radio'][data-required='true']").each(function () {
            var name_radio = $(this).attr("name");

            if ($(this).prop("checked") === true) {
                is_checked = true;
                requiredRadioByNameIsChecked[name_radio] = true;
            }

            if (radioBtnProcessed[name_radio] === undefined)
                radioBtnProcessed[name_radio] = true;

            if (fromSharingPortal === true && $(this).parents('.formBlock').first().length > 0) {
                radioBtnInSP[name_radio] = true;
            } else {
                radioBtnInSP[name_radio] = false;
            }
        });

        for (var radioname in radioBtnProcessed) {
            var is_checked = requiredRadioByNameIsChecked[radioname];
            var is_spradio = radioBtnInSP[radioname];

            if (is_spradio === false) {
                if (is_checked === false || is_checked === undefined) {
                    var spanRequired = "<div class='small-12 columns'><label class='error-custom'>" + translation.field_required + "</label></div>";
                    if (formObject.find("input[name='" + radioname + "']").first().parents(".row").first().find('label.error-custom').length === 0) {
                        formObject.find("input[name='" + radioname + "']").first().parents(".row").first().append(spanRequired);
                    } else {
                        formObject.find("input[name='" + radioname + "']").first().parents(".row").first().find('label.error-custom').show();
                    }
                    valid = false;
                } else {
                    if (formObject.find("input[name='" + radioname + "']").parents(".row").first().find('label.error-custom').length > 0)
                        formObject.find("input[name='" + radioname + "']").parents(".row").first().find('label.error-custom').hide();
                }

            }

        }
    }

    //Get radios required and validate if are checked
    formObject.find(".day-widget[data-required='true']").each(function (item) {
        var is_checked = false;
        var widget = $(this);
        $(this).find("input[type='checkbox']").each(function () {
            if ($(this).prop('checked') === true) {
                is_checked = true;
            }

            $(this).change(function () {
                if ($(this).prop('checked') === true) {
                    is_checked = true;
                    widget.first().find(".error-custom").remove();
                }
            });
        });
        if (is_checked === false) {
            var spanRequired = "<div style='margin-top: 10px;' class='small-12 columns'><label class='error-custom'>" + translation.field_required + "</label></div>";
            if ($(this).find('label.error-custom').length === 0) {
                widget.first().append(spanRequired);
            }
            valid = false;
        } else {
            widget.first().find(".error-custom").remove();
        }
    });

    //Validate custom questions
    if (formID === 'signup-questions-form') {
        //Get multiselects required and validate if exist almost one selected
        formObject.find("select[multiple='multiple']").each(function (item) {
            if ($(this).attr("data-required") == "true") {
                if (!$(this).val()) {
                    var spanRequired = "<label class='error-custom'>" + translation.field_required + "</label>";

                    if ($(this).parent().parent().find('label.error-custom').length === 0) {
                        $(this).parent().parent().append(spanRequired);
                    }
                    valid = false;
                }
            }
        });

        formObject.find("textarea").each(function (item) {
            if ($(this).attr("data-required") == "true") {
                if (!$(this).val()) {
                    var spanRequired = "<label class='error-custom'>" + translation.field_required + "</label>";

                    if ($(this).parent().parent().find('label.error-custom').length === 0) {
                        $(this).parent().parent().append(spanRequired);
                    }
                    valid = false;
                }
            }
        });

        formObject.find("select").each(function (item) {
            if ($(this).attr("data-required") == "true") {
                if (!$(this).val()) {
                    var spanRequired = "<label class='error-custom'>" + translation.field_required + "</label>";

                    if ($(this).parent().parent().find('label.error-custom').length === 0) {
                        $(this).parent().parent().append(spanRequired);
                    }
                    valid = false;
                }
            }
        });


        //On change event to checkbox, radios and multiselect
        var selector = 'form select[data-required="true"]';
        $(document).on('change', selector, function () {
            if ($(this).val()) {
                if ($(this).parents(".row").find('label.error-custom').length) {
                    $(this).parents(".row").find('label.error-custom').remove();
                }
            }
        });

        selector = 'form textarea[data-required="true"]';
        $(document).on('change', selector, function () {
            if ($(this).val()) {
                if ($(this).parents(".row").find('label.error-custom').length) {
                    $(this).parents(".row").find('label.error-custom').remove();
                }
            }
        });
    }

    //Validate fieldset Volunteer Availability
    if (formObject.find('.volunteer-availability[data-required="true"]').length !== 0) {
        //Validate if exists almost one checkbox checked
        if (formObject.find('.volunteer-availability[data-required="true"]').find('input[type="checkbox"]:checked').length == 0) {
            //Open fieldset if is closed
            var isVisible = formObject.find('.volunteer-availability[data-required="true"]').parents('.fieldset-content:visible').length > 0;
            if (!isVisible) {
                formObject.find('.volunteer-availability[data-required="true"]').parents('fieldset').first().find('button.button-open').removeClass('button-open').addClass('button-close');
                formObject.find('.volunteer-availability[data-required="true"]').parents('fieldset').first().find('.fieldset-content').fadeIn();
            }
        }
    }

    //Validate fieldset with fields required
    formObject.find('fieldset').find('.fieldset-title').find('span.required').each(function (index) {
        var fieldset = $(this).parents('fieldset').first();

        //Open fieldset
        fieldset.find('button.button-open').removeClass('button-open').addClass('button-close');
        fieldset.find('.fieldset-content').fadeIn();
    });

    //Validate input-number-phone
    if (formObject.find('input[data-type="phone"]').length !== 0) {
        formObject.find('input[data-type="phone"]').each(function (item) {
            var telInput = $(this).get(0);
            var iti = window.intlTelInputGlobals.getInstance(telInput);
            if (iti !== null && iti !== undefined) {
                var name = $(this).attr("name");
                if ($.trim($(this).val())) {
                    if (!iti.isValidNumber()) {
                        var spanRequired = "<label class='error-custom'>" + translation.please_complete_valid_phone + "</label>";

                        if ($(this).parents(".row").first().find('label.error-custom').length === 0) {
                            $(this).parents(".iti").first().append(spanRequired);
                        }
                        if ($("form input[name='international_" + name + "']").length > 0) {
                            $("form input[name='international_" + name + "']").val("");
                        }
                        valid = false;
                    } else {
                        if ($("form input[name='international_" + name + "']").length > 0) {
                            $("form input[name='international_" + name + "']").val(iti.getNumber());
                        }
                    }
                }

                //Assign extension of country to hidden field
                if ($("input#" + name + "-ext").length !== 0) {
                    var valueExtension = $(this).parent().find(".iti__selected-flag").attr("title").split(":")[1].trim();
                    $("input#" + name + "-ext").val(valueExtension);
                }

            }
        });
    }

    //Reviewing the empty fields
    if (formObject.find('input[type="text"]').length !== 0) {
        formObject.find('input[type="text"]').each(function (item) {
            var input = $(this);
            if (!$.trim(input.val())) {
                input.val("");
            }
        });
    }

    //Reviewing the empty fields
    if (formObject.find('textarea').length !== 0) {
        formObject.find('textarea').each(function (item) {
            var input = $(this);
            if (!$.trim(input.val())) {
                input.val("");
            }
        });
    }

    //Validate if exist labels with error
    if (formObject.length > 0 && (!formObject.valid() || valid == false)) {
        if (formObject.find('label.error:visible').length > 0) {
            topLabelError = formObject.find('label.error:visible').first().offset().top;
            formObject.find('label.error:visible').first().focus();
        }
        else if (formObject.find('label.error-custom:visible').length > 0) {
            topLabelError = formObject.find('label.error-custom:visible').first().offset().top;
        }

        if (currentScrollTopUser != topLabelError) {
            var spaceInTop = $('.cms-back').length > 0 ? 200 : 150;

            $('body,html').animate({
                scrollTop: topLabelError - spaceInTop,
            }, 500);
        }
    }

    return valid;
}

function initiate_jquery_growl() {
    if ($('.growl-message').length !== 0) {
        $('.growl-message').each(function (item) {
            if ($(this).hasClass('success') === true) {
                $(this).click(function () {
                    $.growl.notice({ message: "The kitten is cute!" });
                    return false;
                });
            }
            if ($(this).hasClass('error') === true) {
                $(this).click(function () {
                    $.growl.error({ message: "The kitten is attacking!" });
                    return false;
                });
            }
            if ($(this).hasClass('warning') === true) {
                $(this).click(function () {
                    $.growl.warning({ message: "The kitten is ugly!" });
                    return false;
                });
            }
            if ($(this).hasClass('notice') === true) {
                $(this).click(function () {
                    $.growl({ title: "Growl", message: "The kitten is awake!" });
                    return false;
                });
            }
        });
    }
}

function getCurrentViewMode() {

    return $('.full-calendar-widget').fullCalendar('getView').name;
}

function getCalendarSearchLastDateSessionStorage() {

    var values = sessionStorage.getItem('calendar-search-last-date');
    if (values != null && values != undefined)
        values = values.trim();
    var calendarSearchSessionStorage = null;
    if (values != 'undefined' && values != '') {
        calendarSearchSessionStorage = JSON.parse(values);
    }
    var lastDate = null;
    var hours = 0;

    if (calendarSearchSessionStorage && calendarSearchSessionStorage.last_date) {
        lastDate = calendarSearchSessionStorage.last_date;
    }

    if (calendarSearchSessionStorage && calendarSearchSessionStorage.local_storage_creation_timestamp) {
        var creation_date_milliseconds = parseInt(calendarSearchSessionStorage.local_storage_creation_timestamp);
        var diff = new Date() - new Date(creation_date_milliseconds);
        hours = Math.abs(diff) / 36e5;
    }

    if (hours > 24) {
        return null;
    }
    return calendarSearchSessionStorage;
}

function initiate_clipboard_library() {
    new Clipboard('.btn');
}

function saveSearchLastDate(viewMode) {
    start = $('.full-calendar-widget').fullCalendar('getView').start.unix();
    end = $('.full-calendar-widget').fullCalendar('getView').end.unix();

    var dateToSave = '';

    var today = new Date();
    var month = today.getMonth() + 1;
    if (month < 10)
        month = '0' + month;
    var day = today.getDate();
    if (day < 10)
        day = '0' + day;

    if (viewMode == 'month') {
        var monthToSave = moment.unix(start).add(8, 'days').format('MM');
        var yearToSave = moment.unix(start).add(8, 'days').format('YYYY');
        if (monthToSave == month) {
            dateToSave = yearToSave + '-' + monthToSave + '-' + day;
        } else {
            dateToSave = yearToSave + '-' + monthToSave + '-' + '01';
        }


    }
    else {
        var dayToSave = moment.unix(start).add(1, 'days').format('DD');
        var monthToSave = moment.unix(start).add(1, 'days').format('MM');
        var yearToSave = moment.unix(start).add(1, 'days').format('YYYY');
        dateToSave = yearToSave + '-' + monthToSave + '-' + dayToSave;

    }



    var data = new Object();
    data['last_date'] = dateToSave;
    data['local_storage_creation_timestamp'] = new Date().getTime();
    data['view_mode'] = viewMode;
    _assign_value_json_session_storage('calendar-search-last-date', data);

}

function advanced_search_filter_block() {
    if ($("#advanced-search-filters-form .popup_information").length > 0) {
        $("#advanced-search-filters-form .popup_information").click(function () {
            Swal.fire({
                title: window.translation.invitation_code,
                html: '<p>' + window.translation.invitation_code_popup_message_1 + '</p><p>' + window.translation.invitation_code_popup_message_2 + '</p>',
            });
        });
    }
}

function show_modal_message_swal() {
    if ($("a.modal-message").length > 0) {

        $("a.modal-message").click(function () {
            var title = $(this).attr("data-title");
            var content = $(this).attr("data-content");
            var typeM = $(this).attr("data-type");

            Swal.fire({
                title: title,
                html: '<p>' + content + '</p>',
                icon: typeM
            });
        });
    }
}

function apply_mmenu_in_mobile() {
    var has_items = false;
    if ($('nav #menu').length !== 0) {
        var menu_mobile = $("#menu ul").clone();

        if ($(".secondary_menu ul li").length > 0) {
            $(".secondary_menu ul li").clone().appendTo(menu_mobile);
        }
        $(".invisible_zone").append("<div id='mobile_menu'></div>");

        //Navigation Menu Golden Gate
        if ($('.utility-menu ul.level-1').length > 0) {
            var utility_menu = $('.utility-menu ul.level-1').clone();
            utility_menu.appendTo(menu_mobile);
        }
        if (menu_mobile.length > 0) {
            $("#mobile_menu").append(menu_mobile);
            has_items = true;
        }
    }
    else {
        if ($('.sub-menu').length > 0) {
            $(".invisible_zone").append("<div id='mobile_menu'></div>");

            var menu_mobile = $(".sub-menu ul").first().clone();
            if (menu_mobile.length > 0) {
                $("#mobile_menu").append(menu_mobile);
                has_items = true;
            }
        }
        else {
            //$('.login-section .hamburguer').hide();
            $(".invisible_zone").append("<div id='mobile_menu'></div>");
        }
    }
    if ($('header .login-info a.return_to_partner_portal').length > 0) {
        var return_to_partner_portal = $("<li/>").append($('header .login-info a.return_to_partner_portal').clone());
        $("#mobile_menu").find('ul.level-1').append(return_to_partner_portal);
    }
    // Apply mmenu effect in mobile and tablet
    if ($(window).width() < 1024) {
        if (has_items === true) {
            $("#mobile_menu").mmenu({
                extensions: ['effect-slide-menu'],
                searchfield: false,
                counters: false,
                navbar: {
                    title: 'Menu'
                },

                navbars: [
                    {
                        position: 'top',
                        content: ['searchfield']
                    }, {
                        position: 'top',
                        content: [
                            'prev',
                            'title',
                            'close'
                        ]
                    }
                ]

            });
            setTimeout(function () {
                //Close modal
                $(".mm-close").trigger("click");
            }, 1000);

            //Add validation to jump slide to current slide
            open_slide_active_mmenu();
        }
        else {
            $('.hamburguer').addClass('is-hidden');
        }
    }

    $(window).resize(function () {
        if ($(window).width() < 1024) {
            if ($(".mm-menu").length == 0 && has_items === true) {
                $("#mobile_menu").mmenu({
                    extensions: ['effect-slide-menu'],
                    searchfield: true,
                    counters: false,
                    navbar: {
                        title: 'Menu'
                    },

                    navbars: [
                        {
                            position: 'top',
                            content: ['searchfield']
                        }, {
                            position: 'top',
                            content: [
                                'prev',
                                'title',
                                'close'
                            ]
                        }
                    ]

                });
            }
        } else {
            $(".mm-close").trigger("click");
        }

        //Add validation to jump slide to current slide
        open_slide_active_mmenu();
    });
}

function open_slide_active_mmenu() {
    var firstActive = $('#mm-1').find('ul.mm-listview').find('li.active').first();
    var next = firstActive.find('a.mm-next').data('target');
    var previous = '#mm-1';
    var previousBackup = '#mm-1';
    var otherNext = true;
    var level = 0;
    var titleMenu = '';

    //Apply classes to jump slide 
    if (next) {
        //Add classes to mm1-panel if there is next slide
        $('#mm-1').removeClass('mm-current');
        $('#mm-1').addClass('mm-subopened');

        while (otherNext === true) {
            var nextActive = $(next).find('ul.mm-listview').find('li.active').first();

            titleMenu = nextActive.find('a').last().text();

            if (typeof nextActive.find('a.mm-next')[0] !== 'undefined') {
                //To current slide add classes subopened
                $(next).removeClass('mm-current');
                $(next).removeClass('mm-highest');
                $(next).addClass('mm-subopened');
                if ($(next).hasClass('mm-opened') !== true) $(next).addClass('mm-opened');

                //Update previous link
                $('.mm-menu .mm-navbar.mm-navbar-top .mm-prev').removeClass('mm-hidden');
                $('.mm-menu .mm-navbar.mm-navbar-top .mm-prev').attr('href', next);
                $('.mm-menu .mm-navbar.mm-navbar-top .mm-title').attr('href', next);
                $('.mm-menu .mm-navbar.mm-navbar-top .mm-title').text(titleMenu);

                //Update previous
                previous = next;

                //Has another slide
                next = nextActive.find('a.mm-next').data('target');

                if ($(next).find('ul.mm-listview').find('li.active').first().length > 0) {
                    //Modify classes of next slide
                    $(next).removeClass('mm-hidden');
                    $(next).addClass('mm-highest mm-current mm-opened');
                }
                else {
                    $(previous).removeClass('mm-hidden');
                    $(previous).removeClass('mm-subopened');
                    $(previous).addClass('mm-highest mm-current mm-opened');

                    //Update previous link
                    $('.mm-menu .mm-navbar.mm-navbar-top .mm-prev').removeClass('mm-hidden');
                    $('.mm-menu .mm-navbar.mm-navbar-top .mm-prev').attr('href', previousBackup);
                    $('.mm-menu .mm-navbar.mm-navbar-top .mm-title').attr('href', previousBackup);
                    $('.mm-menu .mm-navbar.mm-navbar-top .mm-title').text(titleMenu);

                    otherNext = false;
                }

                previousBackup = next;

                if (level === 2) {
                    $('#mm-1').addClass('mm-hidden');
                }
            }
            else {
                //Update previous link
                $('.mm-menu .mm-navbar.mm-navbar-top .mm-prev').removeClass('mm-hidden');
                $('.mm-menu .mm-navbar.mm-navbar-top .mm-prev').attr('href', previous);
                $('.mm-menu .mm-navbar.mm-navbar-top .mm-title').attr('href', previous);
                $('.mm-menu .mm-navbar.mm-navbar-top .mm-title').text(titleMenu);

                //Modify classes of next slide
                $(next).removeClass('mm-hidden');
                $(next).addClass('mm-highest mm-current mm-opened');

                otherNext = false;
            }

            level = level + 1;
        }
    }
}



function volunteer_availability_widget() {
    $('.select-all').on('click', this, function () {
        var day_all = $(this).attr('day');
        var selected = $(this).attr('o-selected');

        //All Morning
        if (day_all == 'morning') {
            if (selected === 'true') {
                $('input[type="checkbox"].morning').prop('checked', false);
            }
            else {
                $('input[type="checkbox"].morning').prop('checked', true);
            }
        }
        else if (day_all == 'afternoon') {
            if (selected === 'true') {
                $('input[type="checkbox"].afternoon').prop('checked', false);
            }
            else {
                $('input[type="checkbox"].afternoon').prop('checked', true);
            }
        }
        else if (day_all == 'evening') {
            if (selected === 'true') {
                $('input[type="checkbox"].evening').prop('checked', false);
            }
            else {
                $('input[type="checkbox"].evening').prop('checked', true);
            }
        }
        else {
            var selector = 'input[type="checkbox"].morning' + day_all;

            if (selected === 'true') {
                $('input[type="checkbox"].morning_' + day_all).prop('checked', false);
                $('input[type="checkbox"].afternoon_' + day_all).prop('checked', false);
                $('input[type="checkbox"].evening_' + day_all).prop('checked', false);
            }
            else {
                $('input[type="checkbox"].morning_' + day_all).prop('checked', true);
                $('input[type="checkbox"].afternoon_' + day_all).prop('checked', true);
                $('input[type="checkbox"].evening_' + day_all).prop('checked', true);
            }
        }

        if (selected === 'true') {
            $(this).attr('o-selected', 'false');
        }
        else {
            $(this).attr('o-selected', 'true');
        }

        return false;
    });
}



function castFormatDate(dateValue) {
    var dateFormat = window.DatePickerDateFormat;
    var d = dateValue.getDate();
    var m = dateValue.getMonth() + 1;
    var yyyy = dateValue.getFullYear().toString();
    var yy = dateValue.getFullYear().toString().substring(2, 4)
    var dd = d;
    var mm = m;
    if (dd < 10) {
        dd = '0' + dd;
    }

    if (mm < 10) {
        mm = '0' + mm;
    }
    switch (dateFormat) {
        case 'd/m/yyyy':
        case 'm/d/yyyy':
        case 'd-m-yyyy':
        case 'm-d-yyyy':
            result = dateFormat.replace('d', d).replace('m', m).replace('yyyy', yyyy);
            break;
        case 'dd/mm/yyyy':
        case 'mm/dd/yyyy':
        case 'dd-mm-yyyy':
        case 'mm-dd-yyyy':
            result = dateFormat.replace('dd', dd).replace('mm', mm).replace('yyyy', yyyy);
            break;

        case 'd/m/yy':
        case 'm/d/yy':
        case 'd-m-yy':
        case 'm-d-yy':
            result = dateFormat.replace('d', d).replace('m', m).replace('yy', yy);
            break;
        case 'dd/mm/yy':
        case 'mm/dd/yy':
        case 'dd-mm-yy':
        case 'mm-dd-yy':
            result = dateFormat.replace('dd', dd).replace('mm', mm).replace('yy', yy);
            break;
    }
    return result;
}

function equalDates(dateA, dateB) {
    return dateA.getFullYear() == dateB.getFullYear() && dateA.getMonth() == dateB.getMonth() && dateA.getDate() == dateB.getDate();
}

function date_picker_widget() {

    if ($('.date-picker-pp').length > 0 || $('.date-picker-input').length > 0 || $('.date-picker-iso').length > 0) {
        var nowTemp = new Date();
        var language_ISO = window.translation.language_iso;
        var date_language = language_ISO.split('-')[0];
        if (date_language === undefined || date_language === null || date_language === '')
            date_language = 'en';
        if (date_language === 'zh')
            date_language = 'zh-TW';
        var currentLocale = window.translation['locale_iso'];
        $('.date-picker-pp').each(function () {
            var oldyear = nowTemp.getFullYear();
            var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
            var oldnow = new Date(oldyear, nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
            var normalDatepicker = true;
            var InputName = $(this).attr("name");

            moment().tz(window.translation['time_zone'])
            var dateFormat = window.DatePickerDateFormat;
            var today = new Date();
            moment.locale(currentLocale);
            today = moment().format("MM/DD/YYYY");
            var todayComparer = moment().subtract(1, 'days').format(window.MomentDateFormat);


            if (InputName.indexOf('[value]') != -1) {
                var starDatePicker = null;
                var endDatePicker = null;
                var FieldId = InputName.replace('[value]', '');
                if ($("input[name='" + FieldId + "[onlyFuture]']").length > 0 ||
                    $("input[name='" + FieldId + "[onlyPast]']").length > 0 ||
                    $("input[name='" + FieldId + "[allowCurrentDate]']").length > 0 ||
                    $("input[name='" + FieldId + "[maxDaysInFuture]']").length > 0 ||
                    $("input[name='" + FieldId + "[maxDaysInPast]']").length > 0 ||
                    $("input[name='" + FieldId + "[validatorDateField]']").length > 0 ||
                    $("input[name='" + FieldId + "[ruleToValidate]']").length > 0 ||
                    $("input.related-" + FieldId).length > 0 ||
                    $(this).data('minimum-age') && $(this).data('min-age')) {
                    normalDatepicker = false;
                    customDateConfiguration(FieldId);
                }
            }
        });


        date_picker_input_inner();

        $('.date-picker-iso').each(function () {
            var data = $(this).data();
            var DatePickerFormat = data.shortDatePattern;
            var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate() - 1, 0, 0, 0, 0);

            $(this).fdatepicker({
                format: DatePickerFormat,
                language: date_language,
                weekStart: get_start_day_of_week_from_locale(),
                onRender: function (date) {
                    return date.valueOf() < now.valueOf() ? 'disabled' : '';
                }
            });
        });

    }

}

function date_picker_input_inner() {
    var nowTemp = new Date();
    var currentLocale = window.translation['locale_iso'];
    var language_ISO = window.translation.language_iso;
    var date_language = language_ISO.split('-')[0];
    if (date_language === undefined || date_language === null || date_language === '')
        date_language = 'en';
    if (date_language === 'zh')
        date_language = 'zh-TW';
    var currentLocale = window.translation['locale_iso'];

    $('.date-picker-input').each(function () {
        var oldyear = nowTemp.getFullYear();
        var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
        var oldnow = new Date(oldyear, nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
        var normalDatepicker = true;
        var InputName = $(this).attr("name");

        moment().tz(window.translation['time_zone'])
        var dateFormat = window.DatePickerDateFormat;
        var today = new Date();
        moment.locale(currentLocale);
        today = moment().format("MM/DD/YYYY");
        var todayComparer = moment().subtract(1, 'days').format(window.MomentDateFormat);

        if (InputName == "date-of-service" ||
            InputName == "date-from" ||
            InputName == "date-to" || InputName == "dateReceived") {
            date_of_birth_date_picker = $(this).fdatepicker({
                format: window.DatePickerDateFormat,
                language: date_language,
                endDate: today,
                disableDblClickSelection: true,
                startView: 'decade',
                weekStart: get_start_day_of_week_from_locale(),
            });
        }
        if ($(this).parents('.basic-search-block').length > 0 || $(this).parents('.basicsearchblock ').length > 0) {
            if (InputName == "searchvo_date_from") {
                normalDatepicker = false;
                now.setHours(0);
                now.setMinutes(0);
                now.setSeconds(0);
                var checkin = $(this).fdatepicker({
                    format: 'mm/dd/yyyy',
                    language: date_language,
                    initialDate: today,
                    weekStart: get_start_day_of_week_from_locale(),
                    startDate: today
                }).on('changeDate', function (ev) {
                    if (ev.date.valueOf() > checkout.date.valueOf()) {
                        var newDate = new Date(ev.date)
                        newDate.setDate(newDate.getDate() + 1);
                        checkout.update(newDate);
                    }
                    //checkin.hide();
                    //$('input[name="searchvo_date_to"]').focus();
                }).data('datepicker');


                var checkout = $('input[name="searchvo_date_to"]').fdatepicker({
                    format: 'mm/dd/yyyy',
                    language: date_language,
                    weekStart: get_start_day_of_week_from_locale(),
                    onRender: function (date) {
                        var checkinValue = checkin.date.valueOf();
                        return date.valueOf() < checkinValue ? 'disabled' : '';
                    }
                }).on('changeDate', function (ev) {
                    //checkout.hide();
                }).data('datepicker');
            }
            if (InputName == "searchvo_date_to") {
                normalDatepicker = false;
            }



        }

        if (InputName.indexOf('[value]') != -1) {
            var starDatePicker = null;
            var endDatePicker = null;
            var FieldId = InputName.replace('[value]', '');
            if ($("input[name='" + FieldId + "[onlyFuture]']").length > 0 ||
                $("input[name='" + FieldId + "[onlyPast]']").length > 0 ||
                $("input[name='" + FieldId + "[allowCurrentDate]']").length > 0 ||
                $("input[name='" + FieldId + "[maxDaysInFuture]']").length > 0 ||
                $("input[name='" + FieldId + "[maxDaysInPast]']").length > 0 ||
                $("input[name='" + FieldId + "[validatorDateField]']").length > 0 ||
                $("input[name='" + FieldId + "[ruleToValidate]']").length > 0 ||
                $("input.related-" + FieldId).length > 0 ||
                $(this).data('minimum-age') && $(this).data('min-age')) {

                normalDatepicker = false;
                customDateConfiguration(FieldId);
            }
        }

        if (normalDatepicker == true && (InputName !== 'searchvo_date_from' && InputName !== 'searchvo_date_to')) {
            $(this).fdatepicker({
                format: dateFormat,
                language: date_language,
                disableDblClickSelection: true,
                weekStart: get_start_day_of_week_from_locale(),
            });
        }

    });
}


function _validate_parental_consent() {
    var dateString = $(document).find('#volunteer-register-form input[name="date_of_birth"]').val();
    var parental_consent_minimum_age = $(document).find('#volunteer-register-form input[name="parental_consent_minimum_age"]').val();


    var age = moment().diff(moment(dateString, "YYYY-M-D", true), "years");

    $(document).find('#volunteer-register-form input[name="volunteer_age"]').val(age);
    if (age < parental_consent_minimum_age) {
        $("#volunteer-register-form .parent_consent").removeClass("is-hidden");
    } else {
        $("#volunteer-register-form .parent_consent").addClass("is-hidden");
    }
}
function datatable_widget(language, rowPerPage, recreate, languageText) {
    if ($("table.datatable-custom").length > 0) {
        if (recreate === true) {
            $("table.datatable-custom").DataTable().destroy();
        }


        $("table.datatable-custom").each(function (index) {
            var object = $(this);
            var languageTextAux = languageText;
            if (object.attr('id') == 'datatable-search-opportunities') {
                languageTextAux.zeroRecords = window.translation.datatable_zero_records_opportunities;
            }

            if (object.hasClass('search-opportunities-in-search-block')) {
                rowPerPage = window.rowPerPageInSearchBlock;
            }

            var tableIsAjax = object.attr("data-isAjax");

            if (tableIsAjax === "1") {
                var tableAjaxURL = object.data("url");
                var tableParameters = object.data("parameters");
                var tableParametersURL = object.data("parameters-url");
                var tableParametersBoth = object.data("parameters-both");

                languageText = {
                    "lengthMenu": window.translation.datatable_length,
                    "zeroRecords": window.translation.datatable_zero_records_search,
                    "info": window.translation.datatable_info,
                    "infoEmpty": window.translation.datatable_info_empty,
                    "paginate": {
                        "first": window.translation.datatable_first,
                        "last": window.translation.datatable_last,
                        "next": window.translation.datatable_next,
                        "previous": window.translation.datatable_previous
                    },
                    "processing": "<span>" + window.translation.please_wait + "</span><img src='/img/default/spinner.svg' alt='loading'/>"
                };

                datatable_parameters_ajax(object, tableAjaxURL, tableParametersURL, tableParameters, tableParametersBoth, languageText, rowPerPage, recreate);
            }
            else {
                datatable_initialize_notAjax(object, languageTextAux, rowPerPage);
            }
        });

        //Click in paginate, go top table
        $(document).on("click", ".dataTables_paginate a", function () {
            var topTable = $(".title_page").offset().top - 10;
            var scroll_top_duration = 500;

            event.preventDefault();
            $('body,html').animate({
                scrollTop: topTable,
            }, scroll_top_duration
            );
        });
    }
}

function populate_select(selector, name, data, translate, newCalendar) {

    if (data != undefined) {
        var listing = data.split('---');
        var listingFixed = new Array();
        var translation = window.translation;

        if (listing) {
            var selectField = $(selector);
            selectField.empty();

            listing = listing.sort(function (a, b) {
                if (a < b) return -1;
                if (a > b) return 1;
                return 0;
            });
            var option = $('<option></option>').text(window.translation.select_a_cause);
            selectField.append(option);
            listing.forEach(function (item) {
                if (item) {
                    //Fixes to & ,
                    var itemValue = item.replaceAll('&', '_and_');
                    itemValue = itemValue.replaceAll(',', '_comma_');
                    itemValue = itemValue.replaceAll('+', '_plus_');
                    itemValue = itemValue.replaceAll('"', '&ldquo;');

                    if (translation && translate) {
                        var key = item.toLowerCase().replaceAll('&', '').replaceAll('/', ' ').replaceAll(',', '').replaceAll('-', '_').replaceAll('  ', ' ').replaceAll('   ', ' ').replaceAll(' ', '_').replaceAll('__', '_').replaceAll('(', '').replaceAll(')', '').replaceAll(':', '');
                        if (translation[key] != null)
                            item = translation[key];
                    }
                    listingFixed.push(itemValue);
                    option = $('<option></option>').attr("value", itemValue).text(item);
                    selectField.append(option);
                }
            });

            //Populate field
            var parameter_name = find_parameter_for_new_calendar(name);
            var value = (getParameterByName(parameter_name, true, true)) ? getParameterByName(parameter_name, true, true) : '';
            if (value !== null && value !== undefined && value !== '')
                $(selector).val(value);
        }
    }

}

function populate_multiselect(selector, name, data, translate, newCalendar) {

    if (data != undefined) {
        var listing = data.split('---');
        var listingFixed = new Array();
        var translation = window.translation;

        if (listing) {
            var multiSelect = $(selector);
            multiSelect.empty();

            listing = listing.sort(function (a, b) {
                if (a < b) return -1;
                if (a > b) return 1;
                return 0;
            });
            listing.forEach(function (item) {
                if (item) {
                    //Fixes to & ,
                    var itemValue = item.replaceAll('&', '_and_');
                    itemValue = itemValue.replaceAll(',', '_comma_');
                    itemValue = itemValue.replaceAll('+', '_plus_');
                    itemValue = itemValue.replaceAll('"', '&ldquo;');

                    if (translation && translate) {
                        var key = item.toLowerCase().replaceAll('&', '').replaceAll('/', ' ').replaceAll(',', '').replaceAll('-', '_').replaceAll('  ', ' ').replaceAll('   ', ' ').replaceAll(' ', '_').replaceAll('__', '_').replaceAll('(', '').replaceAll(')', '').replaceAll(':', '');
                        if (name === 'searchvo_managed_by') {
                            if (item === 'Affiliate')
                                key = 'managed_by_us';
                            else if (item === 'Partner')
                                key = 'managed_by_partner';
                        }
                        if (translation[key] != null)
                            item = translation[key];
                    }
                    listingFixed.push(itemValue);
                    var option = $('<option></option>').attr("value", itemValue).text(item);
                    multiSelect.append(option);
                }
            });

            $(selector).multiselect('reload');

            //Populate field
            populate_field_search_form(selector, name, newCalendar);
        }
    }
}

function generate_checkboxes(selector, name, data, translate) {
    if ($(".appropriate-for-checkboxes").length == 0) {
        var listing = data.split('---');
        var listingFixed = new Array();
        var translation = window.translation;

        if (listing) {
            var checkboxes = $(selector).parents('.input-group');
            $(selector).hide();

            listing = listing.sort(function (a, b) {
                if (a < b) return -1;
                if (a > b) return 1;
                return 0;
            });
            var index = 0;
            listing.forEach(function (item) {
                if (item) {
                    //Fixes to & ,
                    var itemValue = item.replaceAll('&', '_and_');
                    itemValue = itemValue.replaceAll(',', '_comma_');
                    itemValue = itemValue.replaceAll('+', '_plus_');

                    if (translation && translate) {
                        var key = item.toLowerCase().replaceAll('&', '').replaceAll('/', ' ').replaceAll(',', '').replaceAll('-', '_').replaceAll('  ', ' ').replaceAll('   ', ' ').replaceAll(' ', '_').replaceAll('__', '_').replaceAll('(', '').replaceAll(')', '').replaceAll(':', '');
                        if (translation[key] != null)
                            item = translation[key];
                    }
                    listingFixed.push(itemValue);
                    var parameterValue = ((getParameterByName('searchvo_' + name, true, false)) ? getParameterByName('searchvo_' + name, true, false) : '').toString().replaceAll('&', '_and_');
                    var checked = "";
                    if (parameterValue.indexOf(itemValue) != -1)
                        checked = "checked = 'checked'";
                    var html = '<div class="fieldset-content hide-custom appropriate-for-checkboxes">' +
                        '<div class="small-12">' +
                        '<div class="input-group input-group-checkbox minimal-line">' +
                        '<div class="row">' +
                        '<div class="small-8 medium-9 large-8 columns no_pad_right">' +
                        '<span class="text">' + item + ':</span>' +
                        '</div>' +
                        '<div class="small-4 medium-3 large-4 columns no_pad_right">' +
                        '<input id="searchvo_appropriate_for_' + itemValue + '" name="searchvo_appropriate_for[]" type="checkbox" value="' + itemValue + '" ' + checked + ' />' +
                        '<label class="green_text" for="searchvo_appropriate_for_' + itemValue + '">' + translation['yes'] + '</label>' +
                        '</div>' +
                        '</div>' +
                        '</div>' +
                        '</div>' +
                        '</div>';
                    index++;
                    checkboxes.append(html);
                }
            });

            //$(selector).multiselect('reload');

            //Populate field
            populate_field_search_form(selector, name);
        }
    }
}

function datatable_parameters_ajax(objectTable, url, parameters, parametersInput, parametersBoth, language, rowPerPage, recreate) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    var parameterDatatable = new Array();
    var urlAPI = url;
    var dataAPI = {};
    var hasFilters = false;

    if ($('form#advanced-search-filters-form input[name="searchvo_include_location_name"]').length > 0) {
        dataAPI['searchvo_include_location_name'] = 'true';
    }

    // Get search constant parameters for filtered search check
    var constantParameters = [];
    if (window.SearchPagesConstantParameters != null) {
        var path = window.location.pathname.replace(/\//g, '');
        var result = window.SearchPagesConstantParameters.filter(function (obj) {
            return obj.url == path;
        });
        if (result.length > 0) {
            constantParameters = result[0].constantParameters;
        }
    }

    parameters.forEach(function (item) {
        var parameterKey = item;

        var parameterValue = ((getParameterByName(parameterKey, false, false)) ? getParameterByName(parameterKey, false, false) : '').toString().replaceAll('&', '_and_');

        parameterDatatable[parameterKey] = parameterValue;

        dataAPI[parameterKey] = parameterValue;

        if (parameterKey != "searchvo_zip" && parameterValue != null && parameterValue != "" && (constantParameters.indexOf(parameterKey) < 0) && (["page", "sort_o", "sort_c"].indexOf(parameterKey) < 0)) {
            hasFilters = true;
        }
    });

    parametersInput.forEach(function (item) {
        var parameterKey = item;

        var parameterValue = ((getParameterByName(parameterKey, true, false)) ? getParameterByName(parameterKey, true, false) : '').toString();
        if (parameterKey !== "searchvo_invitation_code")
            parameterValue = parameterValue.replaceAll('&', '_and_');
        else
            parameterValue = parameterValue.replaceAll('&', '&amp;');

        if (parameterKey === "searchvo_distance") {
            //Convert distance
            if (parameterValue !== "") {
                if (parameterValue === "Any") {
                    parameterValue = "100000000000";
                }
                else {
                    parameterValue = String(parseFloat(parameterValue));
                }
            }
        }
        else if (parameterKey === "searchvo_zip") {
            var address = null;
            var addressCookieInfo = getCookie('auto_address').split(',');
            if (addressCookieInfo.length == 3) {
                address = PrepareLocationFieldValue(addressCookieInfo[0], addressCookieInfo[1]);
            }

            parameterValue = (parameterValue !== "") ? parameterValue : (address != null ? address : window.DefaultSiteZipCode);

        }

        dataAPI[parameterKey] = encodeURIComponent(parameterValue);

        if ((parameterKey == "searchvo_date_from" && parameterValue != "" && moment(parameterValue, window.MomentDateFormat).isSame(moment(), 'day')) || (parameterKey == "searchvo_distance" && parameterValue == "100000000000")) {
            parameterValue = "";
        }
        if (parameterKey != "searchvo_zip" && parameterValue != null && parameterValue != "") {
            hasFilters = true;
        }
    });

    parametersBoth.forEach(function (item) {
        var parameterKey = item;

        var parameterValueURL = ((getParameterByName(parameterKey, false, false)) ? getParameterByName(parameterKey, false, false) : '').toString().replaceAll('&', '_and_');
        var parameterValueLocalS = ((getParameterByName(parameterKey, true, false)) ? getParameterByName(parameterKey, true, false) : '').toString().replaceAll('&', '_and_');

        var parameterValue = (parameterValueURL) ? decodeURIComponent(parameterValueURL) : parameterValueLocalS;

        if (parameterKey == "page" && window.location.href.indexOf('search?idSearch') > 0) {
            parameterDatatable[parameterKey] = parameterValue;
        }

        dataAPI[parameterKey] = parameterValue;

        if (parameterKey != "searchvo_zip" && parameterValue != null && parameterValue != "" && (constantParameters.indexOf(parameterKey) < 0) && (["page", "sort_o", "sort_c"].indexOf(parameterKey) < 0))
            hasFilters = true;
    });

    if (hasFilters) {
        $('#filtered-results-text').removeClass('hide');
        $('#info-filter-text').removeClass("hide");
    }
    else {

        $('#filtered-results-text').addClass('hide');
        $('#info-filter-text').addClass("hide");
    }

    var page = (parameterDatatable["page"] && parameterDatatable["page"] !== "0") ? parameterDatatable["page"] : "1";

    var perPage = rowPerPage;
    var pageLength = parseInt(page) * parseInt(rowPerPage);

    var displayStart = 0;
    var sortingColumn = (parameterDatatable["sort_c"]) ? parameterDatatable["sort_c"] : null;
    var sortingOrder = (parameterDatatable["sort_o"]) ? parameterDatatable["sort_o"] : null;
    var order = sortingColumn != null && sortingOrder != null ? [[parseInt(sortingColumn), sortingOrder]] : [];

    var qs = getQueryString();
    var NoSearchCaching = (qs['NoSearchCaching'] != null) ? (qs['NoSearchCaching'] == 'true') : false;

    var table = objectTable.on('xhr.dt', function (e, settings, json, xhr) {
        if (json !== null) {
            var totalVO = json.recordsTotal;
            var totalRows = json.recordsFiltered;
            var page = parseInt(Number((json.data.length / rowPerPage).toFixed(0)));
            var sortingColumn = (settings.aaSorting.length > 0 && settings.aaSorting[0][0] != null) ? settings.aaSorting[0][0] : "";
            var sortingOrder = (settings.aaSorting.length > 0 && settings.aaSorting[0][1] != null) ? settings.aaSorting[0][1] : "";

            if (window.location.href.indexOf('search?idSearch') > 0) {
                $('.load_more_link').attr('data-length', pageLength);
            }
            var newURL = window.location.pathname + "?";
            var newQueryString = "";
            var newURLForFormAction = urlSite + "/search?";

            //Validation when all the items are displayed
            if ((parseInt(totalRows) + 1) === json.data.length) {
                page = parseInt(Math.ceil(json.data.length / rowPerPage));
                $('.load_more_link').css('display', 'none');
            }
            else {
                $('.load_more_link').css('display', 'block');

            }

            parametersInput.forEach(function (item) {
                var parameterKey = item;
                var parameterValue = (getParameterByName(parameterKey, true, false)) ? getParameterByName(parameterKey, true, false) : '';

                if (parameterKey === "searchvo_distance") {
                    //Convert distance
                    if (parameterValue !== "") {
                        if (parameterValue === "Any") {
                            parameterValue = "100000000000";
                        }
                        else {
                            parameterValue = String(parseFloat(parameterValue));
                            newQueryString = newQueryString + parameterKey + '=' + encodeURIComponent(parameterValue) + '&';

                        }
                    }
                }
                else if (parameterKey === "searchvo_zip") {
                    newQueryString = newQueryString + parameterKey + '=' + encodeURIComponent(((parameterValue !== "") ? parameterValue : window.DefaultSiteZipCode)) + '&';

                }
                else if (parameterValue.constructor === Array) {
                    parameterValue.forEach(function (parameter) {
                        newQueryString = newQueryString + parameterKey + '=' + encodeURIComponent(parameter) + '&';

                    });
                }
                else {
                    newQueryString = newQueryString + parameterKey + '=' + encodeURIComponent(parameterValue) + '&';

                }
            });

            parameters.forEach(function (item) {
                var parameterKey = item;
                var parameterValue = ((getParameterByName(parameterKey, false, false)) ? getParameterByName(parameterKey, false, false) : '').toString().replaceAll('&', '_and_');

                if (parameterKey === "page") {
                    newURL = newURL + parameterKey + '=' + page + '&';
                    newQueryString = newQueryString + parameterKey + '=' + page + '&';
                    newURLForFormAction += parameterKey + '=' + page + '&';
                }
                else if (parameterKey === "sort_c") {
                    newURL = newURL + parameterKey + '=' + sortingColumn + '&';
                    newQueryString = newQueryString + parameterKey + '=' + sortingColumn + '&';
                    newURLForFormAction += parameterKey + '=' + sortingColumn + '&';
                }
                else if (parameterKey === "sort_o") {
                    newURL = newURL + parameterKey + '=' + sortingOrder + '&';
                    newQueryString = newQueryString + parameterKey + '=' + sortingOrder + '&';
                    newURLForFormAction += parameterKey + '=' + sortingOrder + '&';
                }
                else {
                    newURL = newURL + parameterKey + '=' + parameterValue + '&';
                    newQueryString = newQueryString + parameterKey + '=' + parameterValue + '&';
                }
            });

            parametersBoth.forEach(function (item) {
                var parameterKey = item;
                var parameterValue = (getParameterByName(parameterKey, true, false)) ? getParameterByName(parameterKey, true, false) : '';
                var parameterValueURL = ((getParameterByName(parameterKey, false, false)) ? getParameterByName(parameterKey, false, false) : '').toString().replaceAll('&', '_and_');

                if (parameterKey === "page") {
                    var internalPage;

                    if (parameterValue && window.location.href.indexOf('search?idSearch') > 0)
                        internalPage = parameterValue;
                    else
                        internalPage = page;

                    newURL = newURL + parameterKey + '=' + internalPage + '&';
                    newQueryString = newQueryString + parameterKey + '=' + internalPage + '&';

                } else if (parameterValueURL) {
                    newURL = newURL + parameterKey + '=' + parameterValueURL + '&';
                    newQueryString = newQueryString + parameterKey + '=' + parameterValueURL + '&';
                } else {
                    newQueryString = newQueryString + parameterKey + '=' + encodeURIComponent(parameterValue) + '&';
                }
            });

            $("label.total-rows span.search-amount").text(parseInt(totalRows) + 1);

            //Pre-populate fields "Serve with this organization" and "Participate in Events"
            if ($('#advanced-search-filters-form').length !== 0) {
                populate_multiselect('#advanced-search-filters-form select[name="searchvo_serve_with_this_org"]', "searchvo_serve_with_this_org", json.organizationsServed, false);
                populate_multiselect('#advanced-search-filters-form select[name="searchvo_participate_in_event"]', "searchvo_participate_in_event", json.events, false);
                populate_multiselect('#advanced-search-filters-form select[name="searchvo_population"]', "searchvo_population", json.populationsServed, true);
                populate_multiselect('#advanced-search-filters-form select[name="searchvo_use_these_skills"]', "searchvo_use_these_skills", json.skills, true);
                populate_multiselect('#advanced-search-filters-form select[name="searchvo_activity_type"]', "searchvo_activity_type", json.activityTypes, true);
                populate_multiselect('#advanced-search-filters-form select[name="searchvo_address_this_issue_areas"]', "searchvo_activity_type", json.impactAreas, true);

                populate_multiselect('.search_filter select[name="searchvo_schedule_type"]', "searchvo_schedule_type", json.scheduleType, true);
                populate_multiselect('.search_filter select[name="searchvo_managed_by"]', "searchvo_managed_by", json.managedBy, true);
                populate_multiselect('.search_filter select[name="searchvo_age_group"]', "searchvo_age_group", json.ageGroup, true);
                populate_multiselect('.search_filter select[name="searchvo_gender"]', "searchvo_gender", json.gender, true);
                generate_checkboxes('.search_filter input[name="searchvo_appropriate_for"]', "appropriate_for", json.appropriateFors, true);
                populate_multiselect('.search_filter select[name="searchvo_location_names"]', "searchvo_location_names", json.locationNames, false);

                // HOC3-9043
                if (json.appropriateFors == null || json.appropriateFors == '') {
                    $("#select-appropriate-for").hide();
                }
            }

            //Populate all field of search form
            populate_field_search_form('', '');

            //Update URL with page and sort
            newURL = newURL.substring(0, newURL.length - 1);
            window.history.pushState(null, null, newURL);

            if ($('#advanced-search-filters-form').length !== 0) {
                newURLForFormAction = newURLForFormAction.substring(0, newURLForFormAction.length - 1);
                $('#advanced-search-filters-form').prop('action', newURLForFormAction);

            }

            //Update query-string and save in hidden. Update localStorage

            newQueryString = newQueryString.substring(0, newQueryString.length - 1);

            if (!NoSearchCaching) update_input_query_string_local_storage(newQueryString, "1", false);

            //Validate processing-screen
            if ($(".dataTables_scroll .processing_screen").length === 0) {
                var divPageProcessing = "<div class='processing_screen'></div>";
                $(".dataTables_scroll").append(divPageProcessing);
            }
            $(".dataTables_scroll .processing_screen").css("display", "none");
            $(".load_more_link").removeAttr("disabled");

            //Remove/display paginator by quantity of pages
            if (json.data.length === parseInt(json.recordsTotal)) {
                $(".dataTables_paginate").hide();
            }
            else {
                $(".dataTables_paginate").show();
            }

            if ($('.dataTables_processing').hasClass('positioned-top')) {
                $('.dataTables_processing').removeClass('positioned-top');
            }
        }

        if ($('.load_more_link').length > 0) {
            $('.load_more_link').removeAttr('disabled');
        }
    }).on('preXhr.dt', function (e, settings, data) {

        //Add processing-screen
        if ($(".dataTables_scroll .processing_screen").length === 0) {
            var divPageProcessing = "<div class='processing_screen'></div>";
            $(".dataTables_scroll").append(divPageProcessing);
        }

        $(".dataTables_scroll .processing_screen").css("display", "block");
        $(".load_more_link").attr("disabled", "disabled");

        //Modify length
        var currentPage = (getParameterByName('page', false, false) && getParameterByName('page', false, false) !== "0") ? getParameterByName('page', false, false) : 1;

        if (page)
            currentPage = page;

        var dataLengthLink = parseInt($('.load_more_link').attr('data-length'));
        var currentLength = (dataLengthLink !== 0) ? dataLengthLink : currentPage * perPage;

        data.length = currentLength;
        settings._iDisplayLength = currentLength;

        //Modify hidden status of auto-reloading
        $("#statusAjaxTable").val("Processing");
    }).on('draw.dt', function (e, settings, json, xhr) {
        datatable_add_cells_data_for_mobile_headers(this);

        //Change appereance of grid in mobile version
        if ($(window).width() < 639) {
            assing_remove_labels_datatable_mobile(objectTable, true);
        }

        //Modify hidden status of auto-reloading
        $("#statusAjaxTable").val("Ready");

        translate_datatable_grid();
    }).DataTable({
        'processing': true,
        'serverSide': true,
        'ajax': {
            'type': 'POST',
            'url': urlAPI,
            'data': dataAPI
        },
        'dataType': 'jsonp',
        'scrollX': true,
        'bFilter': false,
        'bLengthChange': false,
        "paging": false,
        'displayStart': displayStart,
        'order': order,
        'language': language,
        initComplete: function () {
            //Validation in mobile resolutions
            if ($(window).width() < 639) {
                var inputHiddenStatus = '<input id="statusAjaxTable" type="hidden" value="Ready" />';
                $(this).append(inputHiddenStatus);
            }
        }
    });

    if (recreate) {
        $('.dataTables_processing').addClass('positioned-top');
    }

    //Load more link
    if ($(".load_more_link").length !== 0) {
        //Assign by URL
        var currentPage = (getParameterByName('page', false, false) && getParameterByName('page', false, false) !== "0") ? getParameterByName('page', false, false) : 1;
        var currentLength = currentPage * perPage;
        $('.load_more_link').attr('data-length', currentLength);

        $(document).on('click', '.load_more_link', function () {
            if (!($(this).attr("disabled"))) {
                var dataLength = $('.load_more_link').attr('data-length');
                var newLength = parseInt(($('.load_more_link').attr('data-length')) ? $('.load_more_link').attr('data-length') : 0) + rowPerPage;
                $('.load_more_link').attr('data-length', newLength);

                table.ajax.reload();
            }
            return false;
        });
    }

    //Auto-Reloading in mobile versions
    if ($(window).width() < 639) {
        assing_reloading_when_is_bottom(rowPerPage);
    };

    $(window).resize(function () {
        if ($(window).width() < 639) {
            assing_remove_labels_datatable_mobile(objectTable, true);
            assing_reloading_when_is_bottom(rowPerPage);
        }
        else {
            assing_remove_labels_datatable_mobile(objectTable, false);
            $(window).unbind("scroll");
        }
    });
}

function populate_field_search_form(selector, name, newCalendar) {
    if ($('#advanced-search-filters-form').length !== 0 || $('#opportunity-search-form').length !== 0 || $('#search_calendar').length !== 0 || $('#form-basic-search-filters-options').length !== 0) {
        var tableParameters = $("form.searchvo").data("parameters");
        var tableParametersBoth = $("form.searchvo").data("parameters-both");

        //Populate field with value passed by parameter
        if (selector !== "" && name !== "") {

            var value = (getParameterByName(name, true, true)) ? getParameterByName(name, true, true) : '';

            if ($(selector).length !== 0) {
                $(selector).val(value);
                if (name == 'searchvo_location_names') {
                    $(selector).multiselect('reload');
                }
            }
            else {
                $(selector).val(value);
                $(selector).multiselect('reload');
            }

            if (value !== "") {
                if ($(selector).parents(".fieldset-step").find('.fieldset-content').css('display') === 'none') {
                    $(selector).parents(".fieldset-step").find(".fieldset-title button").trigger("click");
                }
            }
        }
        else {
            if (tableParameters && tableParameters !== undefined && Array.isArray(tableParameters)) {
                tableParameters.forEach(function (item) {
                    var parameterKey = item;

                    if ($('form.searchvo select[name="' + parameterKey + '"]').length !== 0) {
                        var parameterValue = (getParameterByName(parameterKey, true, true)) ? getParameterByName(parameterKey, true, true) : '';
                    }
                    else {
                        var parameterValue = (getParameterByName(parameterKey, true, false)) ? getParameterByName(parameterKey, true, false) : '';
                    }

                    if (parameterValue !== "" && parameterValue.length > 0) {

                        if ($('#form-basic-search-filters-options').length == 0) {
                            //Open section of fieldset if is closed
                            if ($('form.searchvo input[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-content").css('display') === 'none' || $('form.searchvo input[name="' + parameterKey + '"]').parents(".additional-filters").css('display') === 'none') {
                                if ($('form.searchvo input[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-content").css('display') === 'none') $('form.searchvo input[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-title button").trigger("click");
                                $('form.searchvo input[name="' + parameterKey + '"]').parents(".additional-filters").css("display", "block").removeClass("hide-custom");
                            }
                            if ($('form.searchvo select[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-content").css('display') === 'none' || $('form.searchvo select[name="' + parameterKey + '"]').parents(".additional-filters").css('display') === 'none') {
                                if ($('form.searchvo select[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-content").css('display') === 'none') $('form.searchvo select[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-title button").trigger("click");
                                $('form.searchvo select[name="' + parameterKey + '"]').parents(".additional-filters").css("display", "block").removeClass("hide-custom");
                            }
                        }

                        if (parameterValue === "on") {
                            $('input[name="' + parameterKey + '"]').prop('checked', true);
                        }
                        else {
                            if ($('form.searchvo input[name="' + parameterKey + '"]').length !== 0) {
                                $('form.searchvo input[name="' + parameterKey + '"]').val(parameterValue);

                            }
                            else {
                                $('form.searchvo select[name="' + parameterKey + '"]').val(parameterValue);
                                $('form.searchvo select[name="' + parameterKey + '"]').multiselect('reload');
                                if (parameterKey == "searchvo_location_type" && parameterValue == "Virtual") {

                                    changesWhenIsVirtualLocation(getRelatedFieldsToVirtualInAdvancedSearchBox());
                                }
                            }
                        }
                    }
                });
            }

            if (tableParametersBoth && tableParametersBoth !== undefined && Array.isArray(tableParametersBoth)) {
                tableParametersBoth.forEach(function (item) {
                    var parameterKey = item;
                    var parameterValueURL = "";
                    var parameterValue = "";

                    if ($('form.searchvo select[name="' + parameterKey + '"]').length !== 0) {
                        parameterValueURL = (getParameterByName(parameterKey, false, false)) ? getParameterByName(parameterKey, false, false) : '';
                        parameterValue = (getParameterByName(parameterKey, true, true)) ? getParameterByName(parameterKey, true, true) : '';
                    }
                    else {
                        parameterValueURL = (getParameterByName(parameterKey, false, false)) ? getParameterByName(parameterKey, false, false) : '';
                        parameterValue = (getParameterByName(parameterKey, true, false)) ? getParameterByName(parameterKey, true, false) : '';
                    }

                    if (parameterValueURL) parameterValue = parameterValueURL;

                    if (parameterValue !== "" && parameterValue.length > 0) {

                        if (parameterValue === "on") {
                            $('input[name="' + parameterKey + '"]').prop('checked', true);
                        }
                        else {
                            if ($('form.searchvo input[name="' + parameterKey + '"]').length !== 0) {
                                $('form.searchvo input[name="' + parameterKey + '"]').val(parameterValue);

                            }
                            else {
                                $('form.searchvo select[name="' + parameterKey + '"]').val(parameterValue);
                                $('form.searchvo select[name="' + parameterKey + '"]').multiselect('reload');
                            }
                        }

                        //Open section of fieldset if is closed
                        if ($('form.searchvo input[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-content").css('display') === 'none') {
                            $('form.searchvo input[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-title button").trigger("click");
                        }
                        if ($('form.searchvo select[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-content").css('display') === 'none') {
                            $('form.searchvo select[name="' + parameterKey + '"]').parents(".fieldset-step").find(".fieldset-title button").trigger("click");
                        }
                    }
                });
            }
        }
    } else if (newCalendar === true) {
        if (selector !== "" && name !== "") {

            var parameter_name = find_parameter_for_new_calendar(name);

            var value = (getParameterByName(parameter_name, true, true)) ? getParameterByName(parameter_name, true, true) : '';
            $(selector).val(value);
            $(selector).multiselect('reload');
            if (value !== "") {
                if ($(selector).parents(".fieldset-step").find('.fieldset-content').css('display') === 'none') {
                    $(selector).parents(".fieldset-step").find(".fieldset-title button").trigger("click");
                }
            }

        }
    }
}

function find_parameter_for_new_calendar(name) {
    var parameter_name = '';
    switch (name) {
        case 'keyword': parameter_name = 'searchvo_keyword'; break;
        case 'location-type': parameter_name = 'searchvo_location_type'; break;
        case 'location': parameter_name = 'searchvo_zip'; break;
        case 'distance': parameter_name = 'searchvo_distance'; break;
        case 'managed-by': parameter_name = 'searchvo_managed_by'; break;
        case 'issue-areas': parameter_name = 'searchvo_issue_area'; break;
        case 'organization-serve': parameter_name = 'searchvo_serve_this_organization'; break;
        case 'population': parameter_name = 'searchvo_population_served'; break;
        case 'duration': parameter_name = 'searchvo_duration'; break;
        case 'skills-use': parameter_name = 'searchvo_skills'; break;
        case 'activity-type': parameter_name = 'searchvo_activity_type'; break;
        case 'participate-event': parameter_name = 'searchvo_participate_in_event'; break;
        case 'age-group': parameter_name = 'searchvo_age_group'; break;
        case 'gender': parameter_name = 'searchvo_gender'; break;
        case 'view_by': parameter_name = 'searchvo_view_by'; break;

    }
    return parameter_name;
}

function assing_reloading_when_is_bottom(rowPerPage) {
    $(window).scroll(function () {
        var topLoadMore = $(".load_more").offset().top;
        var topWindow = $(window).scrollTop();

        if ((topWindow + 500) > topLoadMore) {
            var statusGrid = $("#statusAjaxTable").val();
            var loadMoreVisible = $(".load_more_link").css("display");

            if (statusGrid === "Ready" && loadMoreVisible !== "none") {

                var dataLength = $('.load_more_link').attr('data-length');
                var newLength = parseInt(($('.load_more_link').attr('data-length')) ? $('.load_more_link').attr('data-length') : 0) + rowPerPage;

                $('.load_more_link').attr('data-length', newLength);
                $('.load_more_link').trigger('click');
                $('.load_more_link').attr('disabled', 'disabled');
            }
        }
    });
}

function assing_remove_labels_datatable_mobile(objectTable, addLabel) {

    if (addLabel) {
        var listingProperties = new Array;
        var propertiesCount = 0;

        objectTable.find(".dataTables_scrollHead table thead tr th").each(function (index) {
            listingProperties.push($(this).text());
        });

        //Add labels to table
        objectTable.find(".dataTables_scrollBody table tbody tr").each(function (index) {
            propertiesCount = 0;
            $(this).find("td").each(function (indexTd) {
                if ($(this).find("label").length === 0) {
                    var textColumn = $(this).html();

                    $(this).html('<label>' + listingProperties[propertiesCount] + ':</label><span>' + textColumn + '</span>');
                    propertiesCount = propertiesCount + 1;
                }
            });
        });
    }
    else {
        //Remove labels of table
        objectTable.find(".dataTables_scrollBody table tbody tr").each(function (index) {
            propertiesCount = 0;
            $(this).find("td").each(function (indexTd) {
                $(this).find("label").remove();
            });
        });
    }
}

function datatable_initialize_notAjax(objectTable, language, rowPerPage) {
    var columnSort = objectTable.data('column-sort');
    var columnHidden = (objectTable.data('columns-hidden')) ? objectTable.data('columns-hidden').toString().split(',') : '';

    var defaultParams = {
        'bFilter': false,
        'bLengthChange': false,
        'pageLength': parseInt(rowPerPage),
        'language': language,
        autoWidth: false
    };

    if (columnSort) {
        defaultParams['order'] = [[parseInt(columnSort), "asc"]];
    }

    if (objectTable.hasClass('search-opportunities-in-search-block')) {
        defaultParams['order'] = [];
    }

    if (columnHidden) {
        var columnsHidden = [];

        columnHidden.forEach(function (column) {
            columnsHidden.push({ "targets": [parseInt(column)], "visible": false });
        });

        defaultParams['columnDefs'] = columnsHidden;
    }

    objectTable.DataTable(defaultParams);
}

function save_search_parameters() {
    if ($('#advanced-search-filters-form').length !== 0 || $('#search_calendar').length !== 0 || $('#form-basic-search-filters-options').length !== 0) {
        $('a.get-share-link').click(function () {
            //Get if site is sharingPortalPlus
            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

            var localStorageInfo = ($('#advanced-search-filters-form').length !== 0) ? $("#query-string-form").val() : $("#query-string-form-calendar").val();
            localStorageInfo = ($('#form-basic-search-filters-options').length !== 0) ? $('#query-string-form').val() : localStorageInfo;
            var isCalendar = !($('#advanced-search-filters-form').length !== 0);

            $.ajax({
                method: "POST",
                url: urlSite + "search/getShareSearchLink",
                data: {
                    parameters: localStorageInfo
                },
                beforeSend: function () {
                    $('.save-search.green-version div').show();
                }
            }).done(function (data) {
                data = JSON.parse(data);

                if ($('.shareable-container').css('display') === 'none') {
                    $('.shareable-container').show();
                }
                $('.save-search.green-version div').hide();

                //Assign new url to input share link
                urlSite = (urlSite) ? urlSite : "/";
                var sourcePath = "search";
                if (isCalendar)
                    sourcePath = "calendar";
                var shareLink = window.location.origin + urlSite + sourcePath + "/share/" + data.idURL;
                $("input[name='search_result_link']").val(shareLink);
            });

            return false;
        });
    }
}

function custom_methods_advanced_search_widget() {
    if ($('#advanced-search-filters-form').length !== 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $(document).on('click', 'a.new-search', function () {
            localStorage.setItem("query-string-searchvo", "");
            window.location.replace(urlSite + 'search');

            return false;
        });
    }
}



function build_multisignup_view_filter_data_from_list(registerTypeMode) {
    let dataFilter = {};
    let mainSelector = null;
    let groupOccurrenceSelector = null;
    if (registerTypeMode == 0) {
        mainSelector = 'div.opportunity-list-section #sign-up-container div.sign-up-block';
        groupOccurrenceSelector = '.grouped-occurrence-box';
    }
    else if (registerTypeMode == 1) {
        mainSelector = 'div.opportunity-list-section div.express-interest-container div.express-interest-block';
        groupOccurrenceSelector = '.grouped-occurrence-box-express-interest';
    }

    if (mainSelector !== null) {
        let days = [];
        let months = [];
        let locations = [];
        let times = [];
        $(mainSelector).each(function () {
            let day = $(this).find('input[name="occurrence-day-name"]').val();
            let month = $(this).find('input[name="occurrence-month-name"]').val();
            let location = $(this).find('input[name="occurrence-location-name"]').val();
            let time = $(this).find('input[name="occurrence-time-name"]').val();

            if (days.indexOf(day) === -1) {
                days.push(day);
            }
            if (months.indexOf(month) === -1) {
                months.push(month);
            } 
            if (locations.indexOf(location) === -1) {
                locations.push(location);
            }
            if (times.indexOf(time) === -1) {
                times.push(time);
            } 
        });

        days.sort();
        months.sort();
        times.sort();
        locations.sort();
        dataFilter = {
            days: days,
            months: months,
            times: times,
            locations: locations
        };
    }

    return dataFilter;
}

function build_multisignup_view_data_from_list(registerTypeMode) {
    let contChilds = 0;
    let records = [];
    let showOccName = false; // default behavior
    let occNameValue = $('input[name="showOccName"]').val();
    let mainSelector = null;
    let groupOccurrenceSelector = null;

    if (registerTypeMode == 0) {
        mainSelector = 'div.opportunity-list-section #sign-up-container div.sign-up-block';
        groupOccurrenceSelector = '.grouped-occurrence-box';
    }
    else if (registerTypeMode == 1) {
        mainSelector = 'div.opportunity-list-section div.express-interest-container div.express-interest-block';
        groupOccurrenceSelector = '.grouped-occurrence-box-express-interest';
    }

    if (mainSelector !== null) {
        if (occNameValue !== undefined && occNameValue !== '')
            showOccName = true;

        let multiTimeZone = $('.opportunity-detail-content input[name="multitimezone"]').val();
        let timezone = window.translation['time_zone'];
        let isMultiTimeZone = (multiTimeZone !== undefined && (multiTimeZone === 'true' || multiTimeZone === 'True'));

        $(mainSelector).each(function () {

            let dateTimeInfo = $(this).find('legend.title-block span.oc-date').text();
            let locationInfo = $(this).find('div.location-data span.location').text();
            let occurrenceId = $(this).find('div.fieldset-title input.occurrence-id').val();
            let waitListAllowed = $(this).find('div.fieldset-title input.waitlistAllowed').val();
            let isAvailableToSignup = $(this).find('div.buttons-section a.signup-individual').length > 0;
            let isAvailableToExpressInterest = $(this).find('div.buttons-section a.waitlist-button').length > 0;
            let utcStartDateTime = $(this).data('occStartDateTime');
            let occTimeZone = $(this).find('.fieldset-title input.occtimezone').val();
            let groupOccFirstDateTime = undefined;
            let groupOccRegisterForAll = false;
            let friendlyStarTime = '';
            let allowGORegistration = true;

            if (isMultiTimeZone === false || occTimeZone === undefined || occTimeZone !== '')
                occTimeZone = timezone;

            let gocItem = $(this).find('input.group-occ-code');

            let GOCode = (gocItem !== undefined && gocItem.length > 0) ? gocItem.val() : '';

            if (showOccName === true) {
                // try to get the occName
                let occName = $(this).find('legend.title-block span.oc-name').text();
                if (occName !== '')
                    dateTimeInfo += " | " + occName;
            }

            if (GOCode != '') {
                toTimeZone(utcStartDateTime, occTimeZone, 'MMMM DD, YYYY')
                friendlyStarTime = toTimeZone(utcStartDateTime, occTimeZone, "LLLL");
                groupOccRegisterForAll = $(this).find(groupOccurrenceSelector + ' input.go-register-for-all').val() === 'true';
                let firstGOOccAvailable = $(this).find(groupOccurrenceSelector + ' input.go-first-oc-available').val() == 'true';

                if (groupOccRegisterForAll === true && firstGOOccAvailable == false) {
                    allowGORegistration = false;
                }
            }

            let record = [occurrenceId + '#' + waitListAllowed, dateTimeInfo, locationInfo, allowGORegistration && (isAvailableToSignup || isAvailableToExpressInterest), GOCode, friendlyStarTime, groupOccRegisterForAll, groupOccFirstDateTime];
            records.push(record);

            contChilds++;
        });
    }

    return records;
}

function process_filter_datatable(datatable, value, indexCol) {
    datatable.api().columns().every(function () {
        var column = this;
        if (column.index() == indexCol) {
            column.search(value).draw();
        }
    });
}

function process_dropdowns_filter(datatable) {
    let day = $('select[name="filter-by-day"]').val();
    let month = $('select[name="filter-by-month"]').val();
    let time = $('select[name="filter-by-time"]').val();
    let value = '';
    if (day === '' && month === '' && time === '') {
        process_filter_datatable(datatable, value, 1);
    } else {
        if (day !== '' && month !== '' && time !== '') {
            //all the 
            value = day + ' ' + month + ' ' + time;
        } else if (day !== '' && month !== '') {
            //day and month
            value = day + ' ' + month;
        } else if (day !== '' && time !== '') {
            //day and time
            value = day + ' ' + time;
        } else if (month !== '' && time !== '') {
            //month and time
            value = month + ' ' + time;
        } else if (day !== '') {
            //only day
            value = day;
        } else if (month !== '') {
            //only month
            value = month;
        } else if (time !== '') {
            //only time
            value = time;
        }
        process_filter_datatable(datatable, value, 1);
    }
}

function validate_filters_for_search_list(datatable, dataforFilter) {
    //Adding filters
    let selectDay = $('select[name="filter-by-day"]');
    if (selectDay !== undefined && selectDay !== null) {
        dataforFilter.days.forEach(function (it) {
            selectDay.append('<option value="' + it + '" >' + it + '</option>');
        });
    }

    let selectMonth = $('select[name="filter-by-month"]');
    if (selectMonth !== undefined && selectMonth !== null) {
        dataforFilter.months.forEach(function (it) {
            selectMonth.append('<option value="' + it + '">' + it + '</option>');
        });
    }

    let selectTime = $('select[name="filter-by-time"]');
    if (selectTime !== undefined && selectTime !== null) {
        dataforFilter.times.forEach(function (it) {
            selectTime.append('<option value="' + it + '">' + it + '</option>');
        });
    }

    let selectLocation = $('select[name="filter-by-location"]');
    if (selectLocation !== undefined && selectLocation !== null) {
        dataforFilter.locations.forEach(function (it) {
            selectLocation.append('<option value="' + it + '">' + it + '</option>');
        });
    }

    $('select[name="filter-by-day"], select[name="filter-by-month"], select[name="filter-by-time"]').on('change', function () {
        process_dropdowns_filter(datatable);
    });

    $('select[name="filter-by-location"]').on('change', function () {
        let value = $(this).val();
        process_filter_datatable(datatable, value, 2);
    });

}

function prepare_multi_sign_up_view(registerTypeMode) {
    let data = [];
    data = build_multisignup_view_data_from_list(registerTypeMode);
    dataforFilter = build_multisignup_view_filter_data_from_list(registerTypeMode);
    let groupCodes = [];
    let totalGroups = 0;

    var columns_def = [
        {
            "targets": "_all",
            "orderable": false,
            "searchable": true
        },
        {
            "targets": 0,
            "className": "multi-signup-check-row",
            render: function (data, type, row, meta) {
                let disabled = '';
                let groupCodeClass = '';
                if (row[3] === false)
                    disabled = "disabled";

                //This approahc is to avoid issue when the group catonains " 
                let groupCodeValue = '';
                if (row[4] != '') {
                    if (groupCodes[row[4]] !== undefined) {
                        groupCodeValue = groupCodes[row[4]];
                    } else {
                        groupCodes[row[4]] = totalGroups;
                        groupCodeValue = totalGroups;
                        totalGroups++;
                    }

                    groupCodeClass = 'groupcode-' + groupCodes[row[4]];
                }

                return '<input type="checkbox" class="check-connection ' + groupCodeClass + '" value="' + row[0] + '" ' + disabled + ' id="check-connection-' + meta.row + '" data-item="' + meta.row + '" data-groupcode="' + groupCodeValue + '" data-friendly-start-time="' + row[5] + '" data-register-all="' + row[6] + '"  data-first-oc="' + row[7] + '"/>';
            }
        },
        {
            "targets": 1,
            render: function (data, type, row, meta) {
                return '<label for="check-connection-' + meta.row + '">' + row[1] + '</label>';
            }
        }
    ];

    let datatable = $('#multi-sign-up-table').DataTable({
        data: data,
        columnDefs: columns_def,
        "bPaginate": false,
        "bLengthChange": false,
        "Processing": true,
        "searching": true,
        "ordering": false,
        initComplete: function (settings, json) {
            validate_filters_for_search_list(this, dataforFilter);
        }
    });




    //event to evaluate groupOccurrences
    $('#multi-sign-up-table  .multi-signup-check-row input.check-connection').change(function (event) {
        let hasGOCode = $(this).data('groupcode');
        let elementId = $(this).attr('id');
        let registerForALLValue = '';
        let registerForALL = false;

        let counterItems = 0;
        let currentItemId = -1;

        if (hasGOCode !== '') {

            registerForALLValue = $(this).data('register-all')

            if (registerForALLValue == 'true' || registerForALLValue == 'True' || registerForALLValue == true) {
                registerForALL = true;
            } else
                currentItemId = parseInt($(this).data('item'));

            if ($(this).prop("checked")) {

                if ($('#multi-sign-up-table  .multi-signup-check-row input.check-connection.groupcode-' + hasGOCode).length > 1) {
                    //If there are only one then it is the default behavior

                    let otherDates = '';
                    $('#multi-sign-up-table  .multi-signup-check-row input.check-connection.groupcode-' + hasGOCode).each(function () {
                        let iterationItemId = parseInt($(this).data('item'));

                        if (registerForALL == false && iterationItemId > currentItemId && $(this).attr('id') !== elementId) {
                            otherDates += $(this).data('friendlyStartTime') + '; ';
                            counterItems++;
                        } else if (registerForALL == true && $(this).attr('id') !== elementId) {
                            otherDates += $(this).data('friendlyStartTime') + '; ';
                            counterItems++;
                        }
                    });

                    if (counterItems > 0) {
                        Swal.fire({
                            title: window.translation.are_you_sure,
                            html: window.translation.grouped_occurrences_message_false + otherDates,
                            icon: "question",
                            showCancelButton: true,
                            confirmButtonText: window.translation.continue_text,
                            cancelButtonText: window.translation.cancel,
                            closeOnConfirm: false,
                            showLoaderOnConfirm: true,
                            closeOnCancel: true,
                            customClass: "Custom_Cancel"

                        }).then(function (result) {
                            if (result.isConfirmed) {
                                modify_selection_of_groupoccurrences_item(true, hasGOCode, currentItemId);
                                Swal.close();
                            } else {
                                event.preventDefault();
                                $('#' + elementId).prop("checked", false);
                            }
                        });
                    }
                }
            } else {
                modify_selection_of_groupoccurrences_item(false, hasGOCode, currentItemId);
            }
        }
    })

    $('#multi-sign-up-table').on('click', "[name='select-all-visibles']", function () {
        // Get all rows with search applied
        var rows = datatable.rows({ search: 'applied' }).nodes();
        // Check/uncheck checkboxes for all rows in the table
        $('input[type="checkbox"]:not(:disabled)', rows).prop('checked', this.checked);
    });
}

function modify_selection_of_groupoccurrences_item(check, hasGOCode, fromItem) {

    if (fromItem > -1 && check === true) {
        $('#multi-sign-up-table  .multi-signup-check-row input.check-connection.groupcode-' + hasGOCode).each(function () {
            let itItemId = parseInt($(this).data("item"));
            if (itItemId >= fromItem)
                $(this).prop("checked", check);
        });
    } else {
        $('#multi-sign-up-table  .multi-signup-check-row input.check-connection.groupcode-' + hasGOCode).prop("checked", check);
    }

}

function activate_multi_signup_section(activate, registerType) {

    //registerType: 0 - signup , 1 - express interest
    let itemsContainer = null;
    let titleElement = null;
    if (registerType == 0) {
        itemsContainer = '.sign-up-container';
        titleElement = '.sign-up-title';
    }
    else if (registerType == 1) {
        itemsContainer = '.express-interest-container';
        titleElement = '.title-group';
    }

    if (itemsContainer !== null) {
        if (activate === true) {
            if ($('.dropdown-section').length > 0) {
                $('.dropdown-section').hide();
                $(titleElement).hide();
            }

            if ($('body.volunteer-opportunity-detail-page-v3').length > 0) {
                $('#opportunity-list-detail .opportunity-list-section').hide();
            }

            $(itemsContainer).hide();
            $('.multi-sign-up-mode-grid').show();
        } else {
            $(itemsContainer).show();
            if ($('.dropdown-section').length > 0) {
                $('.dropdown-section').show();
                $(titleElement).show();
            }

            if ($('body.volunteer-opportunity-detail-page-v3').length > 0) {
                $('#opportunity-list-detail .opportunity-list-section').show();
            }

            $('.multi-sign-up-mode-grid').hide();
        }
    }
}

function retrieve_opportuniy_detail() {
    if ($('.opportunity-detail-content').length > 0) {

        var sanitizetitle = $("#sanitizetitle").val();
        var locale = $("#opportunity_locale").val();
        var opportunityId = $("#opportunityId").val();
        var description = $("#opportunity-detail-description");
        var volunteer_needed_info = ($("#volunteer_needed_days").val()) ? $("#volunteer_needed_days").val() : '';
        var salesforceDomain = $("#salesforceDomain").val();
        var occurrenceId = (window.location.pathname.split('/').length > 2) ? window.location.pathname.split('/')[2] : '';
        var multiTimeZone = $('.opportunity-detail-content input[name="multitimezone"]').val();

        var paramns = (window.location.search.substr(1)) ? '?' + window.location.search.substr(1) : '';
        var all_path = location.pathname.split('/opportunity/');
        var oppid = all_path[1].split('/');

        if (oppid.length > 1) {
            var opp_slug_url_title = (all_path[0]) ? all_path[0] + '/opportunity/' + oppid[0] + '/' + sanitizetitle + paramns : sanitizetitle + paramns;
        } else {
            var opp_slug_url_title = (all_path[0]) ? all_path[0] + '/opportunity/' + oppid[0] + '/' + sanitizetitle + paramns : oppid[0] + '/' + sanitizetitle + paramns;
        }
        history.replaceState(null, "", opp_slug_url_title);

        //Volunteer Needed widget
        if (volunteer_needed_info !== "") {
            volunteer_needed_info.split(',').forEach(function (day) {
                var dayText = day.split(' ')[0].toLowerCase();
                var conector = day.split(' ')[0].substring(0, 1);
                if (dayText === 'saturday')
                    conector = 'sa';
                if (dayText === 'thursday')
                    conector = 'th';
                var nameToCheckbox = (day.split(' ')[1] + '_' + conector).toLowerCase();
                $('.volunteers-needed input[type="checkbox"][name="' + nameToCheckbox + '"]').prop('checked', true);
            });
        }

        //Fix to description images and links
        description.find('img').each(function () {
            if ($(this).attr('src') !== undefined && $(this).attr('src').match(/^www/) == null &&
                $(this).attr('src').match(/^http/) == null) {
                $(this).attr('src', salesforceDomain + '/' + $(this).attr('src'));
            }
        });
        description.find('a').each(function () {
            var text = $(this).attr('href');
            if (text !== undefined && text != null && text.indexOf('mailto') === -1 &&
                text.match(/^www/) == null &&
                text.match(/^http/) == null) {
                $(this).attr('href', salesforceDomain + '/' + $(this).attr('href'));
            }
        });
        //Fix to dates of ocurrences widget
        //var currentLocale = locale.split('-')[1].toLowerCase();
        var currentLanguage = window.translation['language_iso'];
        var currentLocale = window.translation['locale_iso'];
        moment.locale(currentLanguage);


        if ($('.express-interest-container').length !== 0) {
            $('.express-interest-block').each(function () {
                var startDate = $(this).find('.fieldset-title legend input.startDate').val();
                var endDate = $(this).find('.fieldset-title legend input.endDate').val();
                var ocTitle = $(this).find('.fieldset-title legend span.oc-title').html();
                var occIDInTitle = $(this).find('.fieldset-title input.occurrence-id').val();

                var additionalInfoForLabel = '';
                if ($(this).find('input[name="additionalInfoForLabel"]').length > 0)
                    additionalInfoForLabel = $(this).find('input[name="additionalInfoForLabel"]').val();

                if (ocTitle == null || ocTitle == undefined)
                    ocTitle = '';
                var timezoneUser = window.translation['time_zone'];
                var multiTimeZone = $('.opportunity-detail-content input[name="multitimezone"]').val();
                var occTimeZone = $(this).find('.fieldset-title input.occtimezone').val();
                if (multiTimeZone !== undefined && (multiTimeZone === 'true' || multiTimeZone === 'True') && occTimeZone !== undefined && occTimeZone !== '')
                    timezoneUser = occTimeZone;
                //Generate datetime in the opp detail for express interest
                if (startDate !== undefined && endDate !== undefined) {
                    if (toTimeZone(startDate, timezoneUser, 'MMMM DD, YYYY') === toTimeZone(endDate, timezoneUser, 'MMMM DD, YYYY')) {

                        moment.locale(currentLocale);// to set the time to the site locale
                        var dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, LL");
                        if (MomentDateFormat.indexOf("D-M") !== -1 || MomentDateFormat.indexOf("D/M") !== -1) {
                            dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, DD MMMM, YYYY");
                        }
                        dayOpportunity = capitalize_opportunity_day_name(dayOpportunity, currentLanguage);

                        var timezoneInformation = $(this).find('input[name="timezoneInformation"]').val();
                        var hourStart = toTimeZone(startDate, timezoneUser, MomentTimeFormat) + " " + timezoneInformation + " - ";
                        var hourEnd = toTimeZone(endDate, timezoneUser, MomentTimeFormat);
                        moment.locale(currentLanguage); // to set the moment librtary to the locale acording to the selected language


                        var titleToDisplay = dayOpportunity + '\xa0\xa0' + window.translation.date_from_label + '\xa0' + hourStart + hourEnd + '\xa0' + timezoneInformation;
                        //traditional chinese format
                        var titleInChinesse = traditional_chinese_format(dayOpportunity, hourStart, hourEnd, startDate);
                        if (titleInChinesse != '') {
                            titleToDisplay = titleInChinesse;
                        }

                        let dayText = toTimeZone(startDate, timezoneUser, "dddd");
                        let monthText = toTimeZone(startDate, timezoneUser, "MMMM")
                        $(this).find('.fieldset-title input[name="occurrence-day-name"]').val(dayText);
                        $(this).find('.fieldset-title input[name="occurrence-month-name"]').val(monthText);
                        let timeText = hourStart + hourEnd;
                        $(this).find('.fieldset-title input[name="occurrence-time-name"]').val(timeText);


                        $(this).find('.fieldset-title legend').text('');
                        if (ocTitle != '') {
                            $(this).find('.fieldset-title legend').append('<span class="oc-date">' + titleToDisplay + '</span>');
                            $(this).find('.fieldset-title legend').append('\u000A<span class="oc-name">' + ocTitle + '</span>');
                            if (additionalInfoForLabel != '' && !$('.opportunity-detail-content').hasClass("dropdown-mode-view")) {
                                $(this).find('.fieldset-title legend').append(additionalInfoForLabel);
                                titleToDisplay += additionalInfoForLabel;
                            }
                        } else {
                            if (additionalInfoForLabel != '' && !$('.opportunity-detail-content').hasClass("dropdown-mode-view")) {
                                titleToDisplay += additionalInfoForLabel;
                            }
                            $(this).find('.fieldset-title legend').append('<span class="oc-date">' + titleToDisplay + '</span>');

                        }

                        var iconOccUrl = $(this).find('input[name="additionalImageURL"]').val();
                        if (iconOccUrl !== null && iconOccUrl !== undefined && iconOccUrl !== '') {
                            $(this).find('.fieldset-title legend').append('<span class="icon-image-occ"><img src="' + iconOccUrl + '" title="Occurrence Icon Image" /></span>');
                        }


                        if ($('.opportunity-detail-content').hasClass("dropdown-mode-view")) {
                            if (additionalInfoForLabel != '') {
                                titleToDisplay += additionalInfoForLabel;
                            }

                            $('select#dropdown-select-date option[value="' + occIDInTitle + '"]').text(titleToDisplay);
                        }


                        if ($(this).find('.fieldset-title .expandable-button-section button').length > 0) {
                            var ariaLabelText = $(this).find('.fieldset-title .expandable-button-section button').attr('aria-label');
                            ariaLabelText = ariaLabelText.replace('{0}', titleToDisplay);
                            $(this).find('.fieldset-title .expandable-button-section button').attr('aria-label', ariaLabelText);
                        }

                    }
                    else {
                        var dayStartOpportunity = toTimeZone(startDate, timezoneUser, "LLLL");
                        var dayEndOpportunity = toTimeZone(endDate, timezoneUser, "LLLL");
                        if (MomentDateFormat.indexOf("D-M") !== -1 || MomentDateFormat.indexOf("D/M") !== -1) {
                            dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, DD MMMM, YYYY " + MomentTimeFormat);
                            dayEndOpportunity = toTimeZone(endDate, timezoneUser, "dddd, DD MMMM, YYYY " + MomentTimeFormat);
                        }
                        var titleToDisplay = dayStartOpportunity + '\xa0\xa0' + window.translation.date_to_label + '\xa0\xa0' + dayEndOpportunity;
                        if (additionalInfoForLabel != '' && !$('.opportunity-detail-content').hasClass("dropdown-mode-view")) {
                            titleToDisplay += additionalInfoForLabel;
                        }
                        $(this).find('.fieldset-title legend').text(titleToDisplay);
                        if ($('.opportunity-detail-content').hasClass("dropdown-mode-view")) {
                            if (additionalInfoForLabel != '') {
                                titleToDisplay += additionalInfoForLabel;
                            }

                            $('select#dropdown-select-date option[value="' + occIDInTitle + '"]').text(titleToDisplay);
                        }


                        if ($(this).find('.fieldset-title .expandable-button-section button').length > 0) {
                            var ariaLabelText = $(this).find('.fieldset-title .expandable-button-section button').attr('aria-label');
                            ariaLabelText = ariaLabelText.replace('{0}', titleToDisplay);
                            $(this).find('.fieldset-title .expandable-button-section button').attr('aria-label', ariaLabelText);
                        }
                    }

                }
            });
        }

        var registerTypeMode = get_register_type_mode();

        if (registerTypeMode != -1) {
            if ($('input#multisignupmode').length > 0) {

                $('input#multisignupmode').change(function () {
                    // this will contain a reference to the checkbox   
                    //$('div.opportunity-detail-content-API').removeClass("hide-custom");
                    if (this.checked) {
                        // the checkbox is now checked 
                        let isAlreadyInitializated = $.fn.DataTable.isDataTable('#multi-sign-up-table');

                        if (isAlreadyInitializated === false) {
                            prepare_multi_sign_up_view(registerTypeMode);
                        }
                        activate_multi_signup_section(true, registerTypeMode);
                    } else {
                        // the checkbox is now no longer checked
                        $(this).removeClass("onestep");
                        activate_multi_signup_section(false, registerTypeMode);
                    }
                });

                // $('div.opportunity-detail-content-API').addClass("hide-custom");
            }
        }

        $('.sign-up-block').each(function () {
            var startDate = $(this).find('.fieldset-title legend input.startDate').val();
            var endDate = $(this).find('.fieldset-title legend input.endDate').val();
            var ocTitle = $(this).find('.fieldset-title legend span.oc-title').html();

            var occIDInTitle = $(this).find('.fieldset-title input.occurrence-id').val();
            var occTimeZone = $(this).find('.fieldset-title input.occtimezone').val();
            var additionalInfoForLabel = '';
            if ($(this).find('input[name="additionalInfoForLabel"]').length > 0)
                additionalInfoForLabel = $(this).find('input[name="additionalInfoForLabel"]').val();
            var timezoneUser = window.translation['time_zone'];

            if (multiTimeZone !== undefined && (multiTimeZone === 'true' || multiTimeZone === 'True') && occTimeZone !== undefined && occTimeZone !== '')
                timezoneUser = occTimeZone;

            moment.locale(currentLocale);
            //Generate datetime in the opp detail for sign up
            var titleToDisplay = '';
            var titleInChinesse = '';
            var timezoneInformation = $(this).find('input[name="timezoneInformation"]').val();
            if (toTimeZone(startDate, timezoneUser, 'MMMM DD, YYYY') === toTimeZone(endDate, timezoneUser, 'MMMM DD, YYYY')) {
                moment.locale(currentLanguage);// to set the moment librtary to the locale acording to the selected language
                var dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, LL");

                if (MomentDateFormat.indexOf("D-M") !== -1 || MomentDateFormat.indexOf("D/M") !== -1) {
                    dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, DD MMMM, YYYY");
                }
                dayOpportunity = capitalize_opportunity_day_name(dayOpportunity, currentLanguage);
                
                moment.locale(currentLocale);// to set the time to the site locale
                var hourStart = toTimeZone(startDate, timezoneUser, MomentTimeFormat) + " " + timezoneInformation + " - ";
                var hourEnd = toTimeZone(endDate, timezoneUser, MomentTimeFormat);

                /* New detail info for dropdown */
                let dayText = toTimeZone(startDate, timezoneUser, "dddd");
                let monthText = toTimeZone(startDate, timezoneUser, "MMMM")
                $(this).find('.fieldset-title input[name="occurrence-day-name"]').val(dayText);
                $(this).find('.fieldset-title input[name="occurrence-month-name"]').val(monthText);
                let timeText = hourStart + hourEnd;
                $(this).find('.fieldset-title input[name="occurrence-time-name"]').val(timeText);
                /** End of change**/
                moment.locale(currentLanguage);// to set the moment librtary to the locale acording to the selected language
                titleToDisplay = dayOpportunity + '\xa0\xa0' + window.translation.date_from_label + '\xa0' + hourStart + hourEnd + '\xa0' + timezoneInformation;

                //traditional chinese format
                var titleInChinesse = traditional_chinese_format(dayOpportunity, hourStart, hourEnd, startDate);
                if (titleInChinesse != '') {
                    titleToDisplay = titleInChinesse;
                }


            } else {
                var dayStartOpportunity = toTimeZone(startDate, timezoneUser, "LLLL");
                var dayEndOpportunity = toTimeZone(endDate, timezoneUser, "LLLL");
                if (MomentDateFormat.indexOf("D-M") !== -1 || MomentDateFormat.indexOf("D/M") !== -1) {
                    dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, DD MMMM, YYYY " + MomentTimeFormat);
                    dayEndOpportunity = toTimeZone(endDate, timezoneUser, "dddd, DD MMMM, YYYY " + MomentTimeFormat);
                }
                titleToDisplay = dayStartOpportunity + '\xa0\xa0' + window.translation.date_to_label + '\xa0\xa0' + dayEndOpportunity + timezoneInformation;

                titleInChinesse = traditional_chinese_format(dayOpportunity, hourStart, hourEnd, startDate);
            }


            $(this).find('.fieldset-title legend').text('');
            if (ocTitle != '') {
                $(this).find('.fieldset-title legend').append('<span class="oc-date">' + titleToDisplay + '</span>');
                $(this).find('.fieldset-title legend').append('\u000A<span class="oc-name">' + ocTitle + '</span>');
                if (additionalInfoForLabel != '' && !$('.opportunity-detail-content').hasClass("dropdown-mode-view")) {

                    $(this).find('.fieldset-title legend').append(additionalInfoForLabel);
                    titleToDisplay += additionalInfoForLabel;
                }

            } else {
                if (additionalInfoForLabel != '' && !$('.opportunity-detail-content').hasClass("dropdown-mode-view")) {
                    titleToDisplay += additionalInfoForLabel;
                }
                $(this).find('.fieldset-title legend').append('<span class="oc-date">' + titleToDisplay + '</span>');

            }

            var iconOccUrl = $(this).find('input[name="additionalImageURL"]').val();
            if (iconOccUrl !== null && iconOccUrl !== undefined && iconOccUrl !== '') {
                $(this).find('.fieldset-title legend').append('<span class="icon-image-occ"><img src="' + iconOccUrl + '" title="Occurrence Icon Image" /></span>');
            }

            if ($('.opportunity-detail-content').hasClass("dropdown-mode-view")) {
                if (additionalInfoForLabel != '') {
                    titleToDisplay += additionalInfoForLabel;
                }

                $('select#dropdown-select-date option[value="' + occIDInTitle + '"]').text(titleToDisplay);
            }

            if ($(this).find('.fieldset-title .expandable-button-section button').length > 0) {
                var ariaLabelText = $(this).find('.fieldset-title .expandable-button-section button').attr('aria-label');
                ariaLabelText = ariaLabelText.replace('{0}', titleToDisplay);
                $(this).find('.fieldset-title .expandable-button-section button').attr('aria-label', ariaLabelText);
            }
        });

        //Hide fieldsets of occurrences when exists more than 3
        if ($('.opportunity-detail-content-API .block').length > 0) {
            var currentOccurrenceId = $('.opportunity-detail-content').find('input#occurrence_id').val();

            var shouldClose = true;
            if ($('body .opportunity-detail-content').hasClass('dropdown-mode-view')) {
                if ($('.opportunity-detail-content-API .block').length == 1) {
                    shouldClose = false;
                }
            }

            $('.opportunity-detail-content-API .block').each(function () {
                var self = $(this);
                var occurrencyNumber = self.find('.occurrence-id').val();

                if (occurrencyNumber !== currentOccurrenceId && shouldClose === true) {
                    $(this).find('.fieldset-title button').trigger('click');
                }
            });
        }

        var qs = getQueryString();
        if (qs['prerequisitesuccess']) { // Display confirmation message after prerequisite signup
            if ($('input#prerequisiteOpportunityName').length > 0) {
                var prerequisiteoppname = $('input#prerequisiteOpportunityName').val();
                var success_message = window.translation.opportunity_prerequisite_success.replace('{0}', prerequisiteoppname).replace('{1}', $('h2.title-opportunity').first().text());

                Swal.fire({
                    title: "",
                    text: success_message,
                    icon: "success"
                }).then(function (result) {
                    var currentOccId = $('.opportunity-detail-content > #occurrence_id').val();
                    $('html,body').animate({
                        scrollTop: $('.occurrence-id[value="' + currentOccId + '"]').closest('.row.fieldset-step').offset().top
                    }, 'fast');
                    var registeringWithTeam = qs['registeringWithTeam'] ? (qs['registeringWithTeam'] == 'true') : false;
                    if (registeringWithTeam) {
                        $('.occurrence-id[value="' + currentOccId + '"]').closest('.row.fieldset-step').find('a.signup-team').click();
                    }
                    else {
                        $('.occurrence-id[value="' + currentOccId + '"]').closest('.row.fieldset-step').find('a.signup-individual').click();
                    }

                });

            }
        }

        // Hide buttons in the prerequisite opportunity according to selection in the opportunity with prerequisite
        if ($('#prerequisite-notice').length > 0) {
            var registeringWithTeam = $('#prerequisite-notice').data('registeringwithteam');
            if (registeringWithTeam) {
                var button_text = $('.sign-up-container').length > 0 ? window.translation.sign_up_with_a_team : window.translation.express_interest_w_team;
                $('a.signup-individual').hide();
                $("a.signup-team").removeClass("border-left");
                $("a.signup-team").html(button_text);
            }
            else {
                $("a.signup-team").hide();
                $("a.signup-team").next("a.help").hide();
            }
        }

        var isFromMultiSingUp = false;

        if (qs["isMultiSignUp"] == 'true')
            isFromMultiSingUp = true;


        if (isFromMultiSingUp === true) {
            // click checkbox and set the occs selected previously
            $('input[name="multisignupmode"].multi-sign-up-flag').prop("checked", true).trigger("change");

            let itemsId = qs["itemsId"];
            if (itemsId !== undefined) {
                let items = itemsId.split(',');
                items.forEach(function (item) {
                    //$('#follow').prop('disabled')
                    let checkbox = $('table#multi-sign-up-table tr input.check-connection[data-item="' + item + '"]');
                    if (checkbox !== undefined && !checkbox.prop('disabled')) {
                        $('table#multi-sign-up-table tr input.check-connection[data-item="' + item + '"]').prop("checked", true);
                    }
                });
            }
        }

        if (qs['OneStepSignUp']) {
            if (isFromMultiSingUp === true) {
                $('a#multi-sign-up-action').trigger('click');

            } else {
               
                var occId = $('#occurrence_id').val();
                $('input.occurrence-id[value="' + occId + '"]').closest('.row.fieldset-step').find('a.signup-individual').click();

            }
        }
        else if (qs['OneStepSignUpWTeam']) {
            var occId = $('#occurrence_id').val();
            $('input.occurrence-id[value="' + occId + '"]').closest('.row.fieldset-step').find('a.signup-team').click();
        }

        validate_view_in_dropdown();
    }
}
// to create widegt multislect for formbuilder
function add_multi_select_widget() {
    if ($('select:not(.no-custom-multiple)[multiple]').length > 0) {
        //Set events and styles to multi-selects
        $('select:not(.no-custom-multiple)[multiple]').multiselect({
            'selectAll': true,
            'columns': 1,
            'showCheckbox': true,
            'texts': {
                placeholder: window.translation.select_options,
                search: window.translation.search,
                selectedOptions: ' ' + window.translation.selected,
                selectAll: window.translation.select_all,
                unselectAll: window.translation.unselect_all
            }
        });

    }
}

function apply_drag_image_option() {

    if ($('body form input[type="file"]:not(.custom-file)').length > 0) {
        $('body form input[type="file"]:not(.custom-file)').each(function () {
            var translation = window.translation;
            var self = this;

            if (!translation) {
                $.get('/translation', function (data) {
                    window.translation = data;
                    input_file_constructor(self, true, window.translation);
                });
            }
            else {
                input_file_constructor(self, true, translation);
            }
        });

    }


    init_multi_file_form_builder();

    if ($('body form input[type="file"].custom-file:not(.custom-file-multiple)').length > 0) {
        $('body form input[type="file"].custom-file:not(.custom-file-multiple)').each(function () {
            var self = $(this);
            var mimeTypes = self.attr('accept').split(',');
            self.checkFileType({
                allowedExtensions: mimeTypes,
                error: function () {

                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok",
                        didOpen: () => {
                            $('.swal2-popup .swal2-icon-show').attr('tabindex', '0').focus();
                            $('.swal2-popup .swal2-html-container').attr('tabindex', '0');
                        }
                    });
                }
            });
        });

    }

}

$.fn.checkFileType = function (options) {
    var defaults = {
        allowedExtensions: [],
        success: function () { },
        error: function () { }
    };
    options = $.extend(defaults, options);

    return this.each(function () {
        $(this).on('change', function () {
            var value = $(this).val(),
                file = value.toLowerCase(),
                extension = file.substring(file.lastIndexOf('.') + 1);

            if ($.inArray(extension, options.allowedExtensions) == -1) {
                options.error();
                $(this).val('');
                $(this).focus();
            } else {
                options.success();
            }
        });
    });
};

function init_multi_file_form_builder() {

    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    if ($('body form .multi-file-drag-drop').length > 0) {
        $('body form .multi-file-drag-drop').each(
            function () {
                var labelToDisplay = '';
                if ($(this).parents('.internal-field-content').find('.label-section label').length > 0) {
                    labelToDisplay = $.trim($(this).parents('.internal-field-content').find('.label-section label').text());
                }
                var sfRelatedToAssociate = "";
                var fieldId = $(this).data('id');
                var extFilterStr = $(this).find('input[name="accept-' + fieldId + '"]').val();
                var extFilter = new Array();
                extFilter = JSON.parse(extFilterStr);
                $(this).dmUploader({ //
                    url: urlSite + "/ARS/UploadFile",
                    maxFileSize: (window.maxFileLengthMBForm * 1024 * 1024),
                    extFilter: extFilter,
                    extraData: function () {

                        var id = $(this).data('id');
                        var form = $(this).parents('form').first();
                        var private = $(this).find('input[name="private-' + id + '"]').val();
                        var formId = $(this).find('input[name="form-id-' + id + '"]').val();
                        var requiresLogin = $(this).find('input[name="requires-login-' + id + '"]').val();
                        var libraryId = $(this).find('input[name="library-id-' + id + '"]').val();
                        var saveToSalesforce = $(this).find('input[name="save-to-salesforce-' + id + '"]').val();
                        var relatedRecordId = $(this).find('input[name="sf-record-to-relate-' + id + '"]').val();
                        var contactIdToUpdate = form.find('input[name="contact_id_to_update"]').val();
                        var objectToSaveSF = form.find('input[name="object_sf_to_map"]').val();
                        var salesforceId = form.find('input[name="salesforce_id_to_update"]').val();
                        var secondRelatedRecordId = $(this).find('input[name="sf-second-record-to-relate-' + id + '"]').val();
                        var saveToSalesforce = $(this).find('input[name="save-to-salesforce-' + id + '"]').val();
                        //$('#form-custom-' + formId).find('.processing_screen').show();

                        $('#form-custom-' + formId).find('.submit-button').attr('disabled', 'disabled');

                        if ((objectToSaveSF == 'Both_User' || objectToSaveSF == 'Both_Organization') && contactIdToUpdate && contactIdToUpdate != '' && mappedField == 'Contact') {
                            relatedRecordId = contactIdToUpdate;
                        }
                        else if (contactIdToUpdate && contactIdToUpdate != '' && objectToSaveSF == 'Contact') {
                            relatedRecordId = contactIdToUpdate;
                        }
                        else if (salesforceId && salesforceId != '') {
                            relatedRecordId = salesforceId;
                        }
                        sfRelatedToAssociate = relatedRecordId;
                        return {
                            private: private,
                            formId: formId,
                            requiresLogin: requiresLogin,
                            libraryId: libraryId,
                            saveToSalesforce: saveToSalesforce,
                            relatedRecordId: relatedRecordId,
                            sfRecordToRelate: secondRelatedRecordId,
                            inputSource: id
                        };
                    },
                    onInit: function () {

                    },
                    onNewFile: function (id, file) {

                        var fieldId = $(this).data('id');
                        var timezone = $('input[name="timezone-' + fieldId + '"]').val();
                        ui_new_file(id, file, fieldId, window.translation.waiting, getFormattedDate(timezone), file.name, "");

                    },
                    onUploadError: function (id, xhr, status, errorThrown) {
                        var fieldId = $(this).data('id');
                        Swal.fire({
                            title: window.translation.error,
                            icon: "error",
                            text: window.translation.file_was_not_uploaded,
                            confirmButtonText: "Ok"
                        });
                        ui_fail_file(id, fieldId);
                    },
                    onUploadSuccess: function (id, data) {

                        var form = $(this).parents('form').first();
                        var fieldId = $(this).data('id');
                        var timezone = $(this).find('input[name="timezone-' + fieldId + '"]').val();
                        var formId = $(this).find('input[name="form-id-' + fieldId + '"]').val();
                        var jsonResult = JSON.parse(data);
                        var mappedField = $(this).find('input[name="mapped-field-' + fieldId + '"]').val();
                        var objectToSaveSF = form.find('input[name="object_sf_to_map"]').val();
                        var multipleAzFiles = $(this).find('input[name="multiple-azure-files-' + fieldId + '"]').val();
                        var fileUrl = "";

                        var objectFileToSave = (objectToSaveSF == 'Both_User' || objectToSaveSF == 'Both_Organization') ? mappedField : objectToSaveSF;

                        if (jsonResult.status == '200') {
                            if (jsonResult.Urls != "" && jsonResult.Urls != null) {
                                jsonResult.Urls.forEach(function (item) {
                                    if (item.fileUrl != '' && item.fileUrl != null) {
                                        if (fileUrl == '') {
                                            fileUrl = item.fileUrl;
                                        }
                                        else {
                                            fileUrl = fileUrl + ',' + item.fileUrl;
                                        }
                                    }
                                });
                            }

                            if (multipleAzFiles == 'true') {

                                var currentValue = form.find('input[name="az-' + fieldId + '[value]"]').val();
                                if (currentValue != '') {
                                    currentValue += ';';
                                }
                                form.find('input[name="az-' + fieldId + '[value]"]').val(currentValue + fileUrl);
                            }
                            else if (sfRelatedToAssociate == '' && form.find('input[name="sf_files_rel_added"]').length > 0) {
                                var listFileId = form.find('input[name="sf_files_rel_added"]').val();
                                form.find('input[name="sf_files_rel_added"]').val(listFileId + (objectFileToSave + '-' + getSFFileIdFromURL(fileUrl)) + ",");
                            }

                            //var table1 = $('#files-details-' + fieldId).DataTable();
                            //table1.row.add([
                            //    '<a = href="' + fileUrl + '" target="_blank">' + getSFFileNameFromURL(fileUrl) + '</a>' + " <b>" + window.translation.new_value + "</b>",
                            //    getFormattedDate(timezone),
                            //    '<a class="remove-file-option new-added" data-file-id="' + getSFFileIdFromURL(fileUrl) + '" data-form-id="' + formId + '">Remove</a>'
                            //]).draw(false);

                            ui_success_file(id, fieldId, '<a = href="' + fileUrl + '" target="_blank">' + getSFFileNameFromURL(fileUrl) + '</a>', getSFFileIdFromURL(fileUrl));
                        }
                        else {
                            Swal.fire({
                                title: window.translation.error,
                                icon: "error",
                                text: window.translation.file_was_not_uploaded + '. File: ' + $('div#related-files-container-' + fieldId + ' li#' + id + ' span.name-info').text() + ', for ' + labelToDisplay + '.',
                                confirmButtonText: "Ok"
                            });

                            
                            ui_fail_file(id, fieldId);
                        }
                        //if ($('#form-custom-' + formId).find('.processing_screen').length > 0) {
                        //    $('#form-custom-' + formId).find('.processing_screen').hide();
                        //}
                        //else if ($('[data-form-id="' + formId + '"].formBlock').length > 0) {
                        //    $('[data-form-id="' + formId + '"].formBlock').find('.processing_screen').hide();
                        //}
                        $('#form-custom-' + formId).find('.submit-button').removeAttr('disabled', 'disabled');
                    },
                    onFileExtError: function (file) {

                        var fieldId = $(this).data('id');
                        var mimeTypes = $(this).find('input[name="allowed-ext-' + fieldId + '"]').val();
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: translation.file_extension_not_accepted + ': ' + mimeTypes + '. File: ' + file.name + ', for ' + labelToDisplay + '.',
                            confirmButtonText: "Ok",
                        });
                    },
                    onFileSizeError: function (file) {

                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: translation.file_exceeds_size_detail.replaceAll("{FileLength}", window.maxFileLengthMBForm).replaceAll("{FileName}", file.name).replaceAll("{FieldName}", labelToDisplay),
                            confirmButtonText: "Ok",
                        });
                    },
                    onDragEnter: function () {
                        this.addClass('active');
                    },
                    onDragLeave: function () {
                        this.removeClass('active');
                    },
                    onBeforeUpload: function (id) {
                        var fieldId = $(this).data('id');
                        ui_start_upload_file(id, fieldId);
                    }
                });
            }
        );

    }

}

function ui_fail_file(id, idField) {
    var liFile = $('#list-files-details-' + idField).find('#' + id);
    liFile.remove();
}

function ui_success_file(id, idField, fileUrl, salesforceId) {
    var liFile = $('#list-files-details-' + idField).find('#' + id);
    liFile.find('span.status-info').html("<b>" + window.translation.success + "!</b>");
    liFile.find('span.name-info').html(fileUrl);
    liFile.find('.progress-file .fill').removeClass('a');
    liFile.find('.progress-file').addClass('completed');
    liFile.find('.action-file i').addClass('icon-remove');
    liFile.find('input.salesforce-id').val(salesforceId);
}

function ui_start_upload_file(id, idField) {
    var liFile = $('#list-files-details-' + idField).find('#' + id);
    liFile.find('span.status-info').html("<b>" + window.translation.uploading + "...</b>");
    liFile.find('.progress-file .fill').addClass('a');
}

function ui_new_file(id, file, idField, status, modified, name, salesforceId) {
    var template = $('#file-card-template-' + idField).html();

    var sizeToDisplay = ' Bytes';
    var sizeFile = file.size;
    if (sizeFile > 1024) {
        sizeToDisplay = ' Kb';
        sizeFile = sizeFile / 1024;
        if (sizeFile > 1024) {
            sizeToDisplay = ' Mb';
            sizeFile = sizeFile / 1024;
        }
    }
    sizeToDisplay = Math.round((sizeFile + Number.EPSILON) * 100) / 100 + sizeToDisplay;

    template = $(template);
    template = template.clone();
    template.prop('id', id);
    template.find('input.salesforce-id').val(salesforceId);
    template.find('span.name-info').html(name);
    template.find('span.status-info').text(status);
    template.find('span.date-modified').text(modified);
    template.find('span.size-file').text(sizeToDisplay);
    if (status == '') {
        template.find('.action-file i').addClass('icon-remove');
        template.find('.progress-file .fill').removeClass('a');
        template.find('.progress-file').addClass('completed');
    }
    $('#list-files-details-' + idField).prepend(template);
    if (sizeFile == 0) {
        $('#list-files-details-' + idField + ' li#' + id + ' .file-body-infor .details').html('');
    }
    if ($('#list-files-details-' + idField).parent().find('label.error').length > 0) {
        $('#list-files-details-' + idField).parent().find('label.error').remove()
    }
}

function input_file_constructor(selector, minimal, translation) {
    var type = $(selector).attr('data-filetype');
    var mimeTypes = $(selector).attr('accept');
    var textCustom = (type == 'image') ? translation.add_picture_drop_picture : translation.add_file_drop_file;
    if ($(selector).length > 0) {
        $(selector).ezdz({
            text: textCustom,
            previewImage: true,
            validators: {
                maxSize: 3145728, //3MB
            },
            enter: function () {
                if ($(selector).parent().hasClass('ezdz-reject')) {
                    $(selector).parent().removeClass('ezdz-reject');
                }
            },
            accept: function (file) {
                //Get width and height of image loaded
                if (type == 'image') {
                    if ($(selector).parent().find('img')[0]) {
                        var height = $(selector).parent().find('img')[0].naturalHeight;
                        var width = $(selector).parent().find('img')[0].naturalWidth;

                        if (height >= width) {
                            //Fix the height image
                            $(selector).parent().find('img').css('width', 'auto');
                            $(selector).parent().find('img').css('height', '100%');
                            $(selector).parent().find('img').css('max-height', '200px');
                        }
                    }
                }
                if ($(selector).attr("id") == "logo") {
                    upload_profile_image();
                }
                if ($(selector).attr("id") == "image_opp_file") {
                    upload_opp_image();
                }
            },
            reject: function (file, errors) {
                if (errors.mimeType) {
                    var currentUrl = window.location.href;
                    var message = translation.file_extension_not_accepted + ': ' + mimeTypes;
                    if (currentUrl.indexOf('/partner-portal') !== -1) {
                        message += "(350x350 or less)";
                    }

                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: message,
                        confirmButtonText: "Ok",
                    });
                    //$.growl.error({ duration: 10000, message: translation.file_extension_not_accepted + ': ' + mimeTypes });
                }


                if (errors.maxSize) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: translation.max_size,
                        confirmButtonText: "Ok",
                    });
                    // $.growl.error({ duration: 10000, message: translation.max_size });
                }
            }
        });

        //Add class to identify is minimal widget
        if (minimal) {
            $(selector).parent().addClass('minimal');
        }
    }
}

function input_file_constructor_form_builder(selector, minimal, translation) {
    var type = $(selector).attr('data-filetype');
    var mimeTypes = $(selector).attr('data-custom-accept');
    var textCustom = (type == 'image') ? translation.add_picture_drop_picture : translation.add_file_drop_file;
    if ($(selector).length > 0) {

        $(selector).ezdz({
            text: textCustom,
            previewImage: false,
            validators: {
                maxSize: 52428800,
            },
            enter: function () {
                if ($(selector).parent().hasClass('ezdz-reject')) {
                    $(selector).parent().removeClass('ezdz-reject');
                }
            },
            accept: function (file) {
                //Get width and height of image loaded
                if (type == 'image') {
                    if ($(selector).parent().find('img')[0]) {
                        var height = $(selector).parent().find('img')[0].naturalHeight;
                        var width = $(selector).parent().find('img')[0].naturalWidth;

                        if (height >= width) {
                            //Fix the height image
                            $(selector).parent().find('img').css('width', 'auto');
                            $(selector).parent().find('img').css('height', '100%');
                            $(selector).parent().find('img').css('max-height', '200px');
                        }
                    }
                }

                var filename = window.translation.file_selected;
                filename += ' ' + file.name + '';


                var sectionFile = $(selector);
                sectionFile.find('.confirm-file-section').remove();
                sectionFile.after('<div class="confirm-file-section" style="display:none;"> <span class="file-upload-name">' + filename + '</span> <a class="load-multi-file-button">' + window.translation.add_selected_file + '</a> </div>');
                sectionFile.parent().find('.load-multi-file-button').trigger('click');

            },
            reject: function (file, errors) {

                if (errors.mimeType) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: translation.file_extension_not_accepted + ': ' + mimeTypes,
                        confirmButtonText: "Ok",
                    });
                }


                if (errors.maxSize) {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: translation.max_size,
                        confirmButtonText: "Ok",
                    });
                    // $.growl.error({ duration: 10000, message: translation.max_size });
                }
            }
        });

        //Add class to identify is minimal widget
        if (minimal) {
            $(selector).parent().addClass('minimal');
        }
    }

}

function change_responsive_class() {
    //Default properties

    // 2 - Opportunity detail page
    if ($(window).width() < 641) {
        //Change class to minimal-space
        $('.volunteers_needed .input-group.input-group-checkbox').removeClass('reduced-space');
        $('.volunteers_needed .input-group.input-group-checkbox').addClass('minimal-space');
    }
    else {
        $('.volunteers_needed .input-group.input-group-checkbox').removeClass('minimal-space');
        $('.volunteers_needed .input-group.input-group-checkbox').addClass('reduced-space');
    }

    //Resize properties
    $(window).resize(function () {
        // 1 - Opportunity detail page, change class to volunteer needed widget
        if ($('.opportunity-detail-content').length > 0) {
            if ($(window).width() < 641) {
                //Change class to minimal-space
                $('.volunteers_needed .input-group.input-group-checkbox').removeClass('reduced-space');
                $('.volunteers_needed .input-group.input-group-checkbox').addClass('minimal-space');
            }
            else {
                $('.volunteers_needed .input-group.input-group-checkbox').removeClass('minimal-space');
                $('.volunteers_needed .input-group.input-group-checkbox').addClass('reduced-space');
            }
        }
    });
}

function reset_input_form() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $('a.clear').on('click', this, function () {
        var hasCalendar = $(this).hasClass('clear-filter-option');
        var section = $(this).attr('data-section');

        if ($('body').hasClass('corporate-partners-page'))
            $('form .' + section + ' input[type="text"]').not('input[name="searchvo_invitation_code"]').val('');
        else
            $('form .' + section + ' input[type="text"]').val('');

        $('form .' + section + ' select').val('');
        $('form .' + section + ' input[type="checkbox"]').prop('checked', false);
        $('form .' + section + ' input[type="radio"]').prop('checked', false);
        $('form .' + section + ' textarea').val('');
        $('form .' + section + ' label.error, form .' + section + ' label.error-custom').css('display', 'none');

        //Remove img of input file if exists
        if ($(this).parents('form').find('.ezdz-dropzone').length !== 0) {
            $(this).parents('form').find('input[type="file"]').each(function () {
                //Remove img of ezdz
                var type = $(this).attr('data-filetype');
                var defaultText = (type == 'image') ? 'Add a picture / Drop a picture' : 'Add a file / Drop a file';
                var object = $(this).parent('.ezdz-dropzone.ezdz-accept');

                //Reset input file
                $(this).val('');

                if (object) {
                    object.removeClass('ezdz-enter');
                    object.removeClass('ezdz-accept');
                    object.find('img').remove();
                    object.find('span').remove();
                    object.find('div').first().append(defaultText);
                }
            });
        }

        //Validation to input checkbox inside multiselect
        $('form .' + section + ' .input-group-select select').each(function () {
            var optionsWrap = $(this).parent().find('.ms-options-wrap');
            var placeholder = $(this).next('.ms-options-wrap').find('> button:first-child');

            placeholder.text(window.translation.select_options);
            optionsWrap.find('li.selected').toggleClass('selected');
        });

        if ($("#advanced-search-filters-form").length !== 0) {
            localStorage.setItem("query-string-searchvo", "");
        }

        if (hasCalendar == true) {
            $("#query-string-form-calendar").val('');
            localStorage.setItem('query-string-searchvo-calendar', '');
            sessionStorage.setItem('calendar-search-last-date', '');
        }

        autocompleted_city_state_field();

        if ($("#advanced-search-filters-form").length > 0 && $('select[name="searchvo_distance"]').length !== 0) {
            $('select[name="searchvo_distance"]').val("Any");
        }

        if ($("form#advanced-search-filters-form").length > 0 || $("form#search_calendar").length > 0 || $("form#form-basic-search-filters-options").length > 0) {
            if ($("form#advanced-search-filters-form").length > 0)
                $('input[name="searchvo_date_from"]').val(moment().format(window.MomentDateFormat));
            $(this).closest('form').submit();
        }
        return false;
    });

    //  Clear Data of all form.
    $('a.new_search').on('click', this, function () {

        var section = "#advanced-search-filters-form";

        $(section + ' input[type="text"]').val('');
        $(section + ' select').val('');
        $(section + ' input[type="checkbox"]').prop('checked', false);
        $(section + ' input[type="radio"]').prop('checked', false);
        $(section + ' textarea').val('');
        $(section + ' label.error,' + section + ' label.error-custom').css('display', 'none');

        //Remove img of input file if exists
        if ($(section).find('.ezdz-dropzone').length !== 0) {
            $(section).find('input[type="file"]').each(function () {
                //Remove img of ezdz
                var type = $(this).attr('data-filetype');
                var defaultText = (type == 'image') ? 'Add a picture / Drop a picture' : 'Add a file / Drop a file';
                var object = $(this).parent('.ezdz-dropzone.ezdz-accept');

                //Reset input file
                $(this).val('');

                if (object) {
                    object.removeClass('ezdz-enter');
                    object.removeClass('ezdz-accept');
                    object.find('img').remove();
                    object.find('span').remove();
                    object.find('div').first().append(defaultText);
                }
            });
        }

        //Validation to input checkbox inside multiselect
        $(section + ' .input-group-select select').each(function () {
            var optionsWrap = $(this).parent().find('.ms-options-wrap');
            var placeholder = $(this).next('.ms-options-wrap').find('> button:first-child');

            placeholder.text(window.translation.select_options);
            optionsWrap.find('li.selected').toggleClass('selected');
        });

        if ($("#advanced-search-filters-form").length !== 0) {
            localStorage.setItem("query-string-searchvo", "");
        }
        autocompleted_city_state_field();

        if ($('select[name="searchvo_distance"]').length !== 0) {
            $('select[name="searchvo_distance"]').val("Any");
        }

        $('input[name="searchvo_date_from"]').val(moment().format(window.MomentDateFormat));
        $('#advanced-search-filters-form').prop('action', urlSite + 'search');
        $('form#advanced-search-filters-form').submit();
        return false;
    });
}

function save_city_state_info(force, setForBasicSearch) {
    var addressCookie = getCookie("auto_address");
    var geolocationActive = window.geolocationActive != null ? window.geolocationActive : true;
    var existsSearchForm = $('.basicsearchblock').length > 0 || $('.basic-search-block').length > 0 || $('.advanced-search-block').length > 0;
    if ((addressCookie === "" || force !== false) && geolocationActive && existsSearchForm) {
        if (navigator.geolocation) {
            var optionsGeo = {
                enableHighAccuracy: false,
                timeout: 10000,
                maximumAge: 120000
            };
            navigator.geolocation.getCurrentPosition(function (position) {
                var pos = {
                    lat: position.coords.latitude,
                    lng: position.coords.longitude
                };

                var city = '';
                var state = '';
                var setDefaultValue = false;
                //Call the GeoLocation API get the address  s
                $.get(get_geo_url("reversegeo") + "?latitude=" + pos.lat + "&longitude=" + pos.lng, function (data) {

                    if (typeof (data) == "string") {
                        data = JSON.parse(data);
                    }

                    if (data.status == 1 || data.code == 200) {
                        if (typeof (data.city) !== 'undefined' && typeof (data.regioncode1) !== 'undefined') {
                            if (data.city != '') {
                                city = data.city;
                            }

                            if (data.regioncode1 != '') {
                                state = data.regioncode1;
                            }

                            if (city == '' && state == '') {
                                city = window.DefaultSiteZipCode;
                                setDefaultValue = true;
                            }

                            addressCompleted = ((city !== '' && state !== '') || (setDefaultValue === true));

                            if ((city !== '' && state !== '') || (setDefaultValue === true)) {
                                var domain = window.location.origin;
                                var infoCookie = city + ', ' + state + ',' + domain;
                                setCookie('auto_address', infoCookie, 5);
                                if (($('#advanced-search-filters-form').length > 0 && $('body.shareable-link-search').length == 0) || setForBasicSearch === true) {
                                    $('form input[name="searchvo_zip"]').val(PrepareLocationFieldValue(city, state));

                                    if (setForBasicSearch !== true)
                                        $('form#advanced-search-filters-form').submit();
                                }
                            }
                            if (!force) {
                                autocompleted_city_state_field();
                            }
                        } else {
                            city = window.DefaultSiteZipCode;
                            setDefaultValue = true;
                        }
                    }
                    else {
                        window.GeoLocationAPIRetries--;
                        if (window.GeoLocationAPIRetries > 0) {

                            setTimeout(function () {
                                if (window.GeoLocationAPIRetries > 0) {
                                    save_city_state_info(force, setForBasicSearch);
                                }
                            }, 3000);
                        }
                        else {
                            var domain = window.location.origin;
                            var infoCookie = window.DefaultSiteZipCode + ', ,' + domain;
                            setCookie('auto_address', infoCookie, 5);
                            if ($('#advanced-search-filters-form').length > 0 && $('body.shareable-link-search').length == 0) {
                                $('form input[name="searchvo_zip"]').val(PrepareLocationFieldValue(city, state));
                                $('form#advanced-search-filters-form').submit();
                            }
                            if (!force) {
                                autocompleted_city_state_field();
                            }
                        }
                    }
                });
            }, function () {
                console.log("getCurrentPosition is not supported");
                var infoCookie = window.DefaultSiteZipCode + ',';
                setCookie('auto_address', infoCookie, 5);
                $('form input[name="searchvo_zip"]').val(window.DefaultSiteZipCode)
            }, optionsGeo);
        } else {
            console.log("location not supported");
            var infoCookie = window.DefaultSiteZipCode + ',';
            setCookie('auto_address', infoCookie, 5);
            $('form input[name="searchvo_zip"]').val(window.DefaultSiteZipCode)
        }
    }
}

function PrepareLocationFieldValue(city, state) {
    val = city;
    if ($.trim(state) != "")
        val += ", " + state;
    return val;
}

function now() {
    var currentdate = new Date();
    return currentdate.getHours() + ":"
        + currentdate.getMinutes() + ":"
        + currentdate.getSeconds() + "." + currentdate.getMilliseconds();

    // return  now.format("dd/MM/yyyy hh:mm TT");
}

function autocompleted_city_state_field() {
    if ($("#opportunity-search-form").length !== 0 || $("#advanced-search-filters-form").length !== 0 || $("#search_calendar").length !== 0 || $('#form-basic-search-filters-options').length !== 0) {

        var cookieInfo = getCookie('auto_address');

        if (cookieInfo != "") {
            var addressCookieInfo = cookieInfo.split(',');
            if (addressCookieInfo && $('form input[name="searchvo_zip"]').val() === "") {
                //Validate domain
                /*if (addressCookieInfo[2] !== window.location.origin) {
                     save_city_state_info(true, $("#opportunity-search-form").length !== 0);
                 }
                 else {*/
                var address = PrepareLocationFieldValue(addressCookieInfo[0], addressCookieInfo[1]);

                $('form input[name="searchvo_zip"]').val(address);
                // }
            }
        } else if ($('form input[name="searchvo_zip"]').val() === "") {
            save_city_state_info(true, $("#opportunity-search-form").length !== 0);
        }
    }
}


function getParameterByName(name, localS, select) {
    // This function is anonymous, is executed immediately and
    // the return value is assigned to QueryString!
    var query_string = {};
    var query_string_form = ($("#query-string-form").length !== 0) ? $("#query-string-form").val() : $("#query-string-form-calendar").val();


    var query = (localS) ? query_string_form : window.location.search.substring(1);

    var value = null;

    //Fixes with characters +
    if (query) {
        query = query.replaceAll('+', '%20');
        query = query.replaceAll('%5b%5d', '');
        var vars = query.split("&");



        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split("=");

            // If first entry with this name
            if (typeof query_string[pair[0]] === "undefined") {
                query_string[pair[0]] = decodeURIComponent(pair[1]);
                // If second entry with this name
            } else if (typeof query_string[pair[0]] === "string") {
                var arr = [query_string[pair[0]], decodeURIComponent(pair[1])];
                query_string[pair[0]] = arr;
                // If third or later entry with this name
            } else {
                query_string[pair[0]].push(decodeURIComponent(pair[1]));
            }
        }

        //Fix string before return
        if (query_string[name] && select) {
            query_string[name] = query_string[name].split(',');
        }

        value = query_string[name];
    }

    return value;
}

function _assign_value_json_local_storage(localStorageName, value) {
    //Assign again value to localStorage
    if (value != null && value["user_response"] != undefined && value["user_response"] != "") {
        var oldValue = value["user_response"];
        if ($('body input[name="user_response_ars"]').length > 0) {
            var newvalue = $('body input[name="user_response_ars"]').val();
            if (oldValue != newvalue) {
                value["user_response"] = newvalue;
            }
        }
    }

    if (value == null) {
        value = {};
    }
    var dataSetLocalStorage = JSON.stringify(value);
    localStorage.setItem(localStorageName, dataSetLocalStorage);
}

function _assign_value_json_session_storage(sessionStorageName, value) {
    //Assign again value to sessionStorage
    var dataSetSessionStorage = JSON.stringify(value);
    sessionStorage.setItem(sessionStorageName, dataSetSessionStorage);
}

function update_input_query_string_local_storage(queryString, widget, isCorporateBlock) {
    switch (widget) {
        case "1":
            queryString += '&local_storage_creation_timestamp=' + new Date().getTime();
            $("#query-string-form").val(queryString);

            localStorage.setItem("query-string-searchvo", queryString);
            break;
        case "2":
            queryString = handleQueryStringCalendar(queryString);
            $("#query-string-form-calendar").val(queryString);
            if (isCorporateBlock !== true)
                localStorage.setItem("query-string-searchvo-calendar", queryString);
            break;
    }
}

function read_local_storage() {
    if ($("#query-string-form").length !== 0) {
        var queryString = localStorage.getItem("query-string-searchvo");
        var local_storage_creation_timestamp = get_parameter_from_query_string('local_storage_creation_timestamp', queryString);
        var hours = 0;
        if (local_storage_creation_timestamp) {
            var creation_date_milliseconds = parseInt(local_storage_creation_timestamp);
            var diff = new Date() - new Date(creation_date_milliseconds);
            hours = Math.abs(diff) / 36e5;
        }

        if (hours > 24) {
            localStorage.setItem("query-string-searchvo", '');
            queryString = '';
        }
        var isBackEvent = false;
        if (window.performance && window.performance.navigation && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) {
            isBackEvent = true;
        }


        if (!($("#query-string-form").val()) || isBackEvent) {
            $("#query-string-form").val(queryString);
        }

        populate_field_search_form('', '');
    }
    else if ($("#query-string-form-calendar").length !== 0) {

        var queryString = handleQueryStringCalendar(localStorage.getItem("query-string-searchvo-calendar"));

        if (!($("#query-string-form-calendar").val())) {
            $("#query-string-form-calendar").val(queryString);
        }
    }
}

// Remove from url to be saved in local storage the values elated to calendar view, they are handled in session storage
function handleQueryStringCalendar(currentValuesUrl) {
    var queryString = '';
    var queries = {};

    if (currentValuesUrl != null && currentValuesUrl.length > 0 && currentValuesUrl[0] == '?') {
        currentValuesUrl = currentValuesUrl.substr(1);
    }
    if (currentValuesUrl != null && currentValuesUrl.length > 0) {
        $.each(currentValuesUrl.split('&'), function (c, q) {
            var i = q.split('=');
            if (i[0] != 'year' && i[0] != 'month' && i[0] != 'day' && i[0] != 'week')
                queries[i[0]] = (i[1] == null || i[1] == undefined) ? '' : i[1];
        });

        $.each(queries, function (c, q) {
            queryString = queryString + c + '=' + q + '&';

        });
        if (queryString.length > 0) {
            queryString = queryString.substr(0, queryString.length - 1);
        }
    }
    return queryString;
}

function setSavedSearches(name, parameters, date, widget) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var currentSavedSearches = getSavedSearches('', widget);

    var newSearch = {
        name: name,
        parameters: parameters,
        date: date
    };

    $.ajax({
        method: "POST",
        url: "search/SaveSearch",
        data: {
            name: name,
            query: parameters,
            widgetType: widget
        }
    }).done(function (data) {
        currentSavedSearches.push(newSearch);
        switch (widget) {
            case "1": localStorage.setItem('saved-searches-searchvo', JSON.stringify(currentSavedSearches)); break;
            case "2": localStorage.setItem('saved-searches-searchvo-calendar', JSON.stringify(currentSavedSearches)); break;
        }
    }).fail(function () {
        return false;
    });

    return true;
}

function getSavedSearches(titleSearch, widget) {
    var localStorageString = (widget === '1') ? 'saved-searches-searchvo' : 'saved-searches-searchvo-calendar';
    var searchesLocalStorage = (localStorage.getItem(localStorageString)) ? JSON.parse(localStorage.getItem(localStorageString)) : [];
    var searchItem = null;

    if (titleSearch !== '' && searchesLocalStorage.length > 0) {
        searchesLocalStorage.some(function (search) {
            if (search.name === titleSearch) {
                searchItem = search;
            }

            return search.name === titleSearch;
        });
    }

    return (searchItem) ? searchItem : searchesLocalStorage;
}

function getMeters(i) {
    return i * 1609.344;
}
function toTimeZoneOnly(time, zone) {
    // The option moment(time).tz(zone) is to works in safari to, due to the format moment.tz(time,zone) is not working issue HOC3-12988
    return moment(time).tz(zone);
}

function toTimeZone(time, zone, format) {
    // The option moment(time).tz(zone) is to works in safari to, due to the format moment.tz(time,zone) is not working issue HOC3-12988
    return moment(time).tz(zone).format(format);
}

function convertTimestamp(timestamp) {
    var d = new Date(timestamp * 1000),	// Convert the passed timestamp to milliseconds
        yyyy = d.getFullYear(),
        mm = ('0' + (d.getMonth() + 1)).slice(-2),	// Months are zero based. Add leading 0.
        dd = ('0' + d.getDate()).slice(-2),			// Add leading 0.
        hh = d.getHours(),
        h = hh,
        min = ('0' + d.getMinutes()).slice(-2),		// Add leading 0.
        ampm = 'AM',
        time;

    if (hh > 12) {
        h = hh - 12;
        ampm = 'PM';
    } else if (hh === 12) {
        h = 12;
        ampm = 'PM';
    } else if (hh == 0) {
        h = 12;
    }

    // ie: 2013-02-18, 8:35 AM	
    //time = yyyy + '-' + mm + '-' + dd + ', ' + h + ':' + min + ' ' + ampm;
    time = new Date(yyyy + '-' + mm + '-' + dd);

    return time;
}

function stringTimeTo24Hours(timeString) {
    parts = timeString.match(/(\d+)\:(\d+) (\w+)/);
    if (parts !== null) {
        if (parts[3] !== null)
            hours = parseInt(parts[1], 10);
        else
            hours = parseInt(parts[1], 10) + 12;
        minutes = parseInt(parts[2], 10);
    } else {
        parts = timeString.match(/(\d+)\:(\d+)/);
        hours = parseInt(parts[1], 10);
        minutes = parseInt(parts[2], 10);
    }

    if (hours < 10) {
        hours = '0' + hours;
    }

    if (minutes < 10) {
        minutes = '0' + minutes;
    }

    return hours + ':' + minutes + ':00';
}

function dateToStringCalendar(date, withHour) {
    var dd = date.getDate();
    var mm = date.getMonth() + 1; //January is 0!
    var yyyy = date.getFullYear();
    var hours = date.getHours();
    var minutes = date.getMinutes();
    var dateFinal = '';

    if (dd < 10) {
        dd = '0' + dd;
    }

    if (mm < 10) {
        mm = '0' + mm;
    }

    if (hours < 10) {
        hours = '0' + hours;
    }

    if (minutes < 10) {
        minutes = '0' + minutes;
    }

    dateFinal = yyyy + '-' + mm + '-' + dd;
    if (withHour) dateFinal = dateFinal + 'T' + hours + ':' + minutes + ':00';

    return dateFinal;
}

function fix_label_middle_in_forms() {
    if ($('form').length > 0) {
        $('form label.middle').each(function () {
            if ($(this).height() > 26) {
                $(this).removeClass('middle');
            }
        });
    }
}

function fix_label_button_calendar_page() {
    if ($('.opportunity-calendar-content').length > 0) {
        var fix_buttons = false;

        $('#search_calendar .calendar-search').each(function () {
            if ($(this).find('span').height() > 26) {
                fix_buttons = true;
            }
        });

        if (fix_buttons) {
            $('#search_calendar .calendar-search').css({ 'line-height': '15px', 'min-height': '42px' });
        }
        else {
            $('#search_calendar .calendar-search').css({ 'line-height': '25px', 'min-height': 'auto' });
        }
    }
}

function volunteer_signup_fixes() {
    if ($('form').length > 0 && $('#volunteer-register-form').length > 0) {
        var usedpfac = $('input#usedpfac').val();
        var countryRelated = $('input#relatedCountry').val();
        var countryValue = $('#home_country').val();
        var fieldStateMapped = $('#otherStateField').val();
        var fieldWStateMapped = $('#otherWStateField').val();
        if (countryValue == 'United States') {
            $("#div-state-text").hide();
            $("#div-state-australia").hide();
            $("#div-state").show();
            $('#div-state-other-field').hide();
        } else if (countryValue == "Australia" && usedpfac == "true" && fieldStateMapped == 'none') {
            $("#div-state-text").hide();
            $("#div-state-australia").show();
            $("#div-state").hide();
            $('#div-state-other-field').hide();
        } else if (countryRelated == countryValue && usedpfac == "true" && countryRelated != 'none' && fieldStateMapped != 'none') {
            $("#div-state-text").hide();
            $("#div-state-australia").hide();
            $("#div-state").hide();
            $('#div-state-other-field').show();
        } else {
            $("#div-state-text").show();
            $("#div-state-australia").hide();
            $("#div-state").hide();
            $('#div-state-other-field').hide();
        }

        var workCountry = $('#work_country').val();
        if (workCountry == 'United States') {
            $("#div-work-state-text").hide();
            $("#div-work-state-australia").hide();
            $("#div-work-state").show();
            $('#div-work-state-other-field').hide();
        } else if (workCountry == "Australia" && usedpfac == "true" && fieldWStateMapped == 'none') {
            $("#div-work-state-text").hide();
            $("#div-work-state-australia").show();
            $("#div-work-state").hide();
            $('#div-work-state-other-field').hide();
        } else if (countryRelated == workCountry && usedpfac == 'true' && countryRelated != 'none' && fieldWStateMapped != 'none') {
            $("#div-work-state-text").hide();
            $("#div-work-state-australia").hide();
            $("#div-work-state").hide();
            $('#div-work-state-other-field').show();

        } else {
            $("#div-work-state-text").show();
            $("#div-work-state-australia").hide();
            $("#div-work-state").hide();
            $('#div-work-state-other-field').hide();
        }

        //  Home Country dropdown
        $('#home_country').on('change', function () {
            if ($(this).val() == 'United States') {
                $("#div-state-text").hide();
                $("#div-state-australia").hide();
                $("#div-state").show();
                $('#div-state-other-field').hide();
            } else if ($(this).val() == 'Australia' && usedpfac == "true" && fieldStateMapped == 'none') {
                $("#div-state-text").hide();
                $("#div-state-australia").show();
                $("#div-state").hide();
                $('#div-state-other-field').hide();
            } else if ($(this).val() == countryRelated && usedpfac == 'true' && countryRelated != 'none' && fieldStateMapped != 'none') {
                $("#div-state-text").hide();
                $("#div-state-australia").hide();
                $("#div-state").hide();
                $('#div-state-other-field').show();
            } else {
                $("#div-state-text").show();
                $("#div-state-australia").hide();
                $("#div-state").hide();
                $('#div-state-other-field').hide();
            }
        });

        //  Work Country dropdown
        $('#work_country').on('change', function () {
            if ($(this).val() == 'United States') {
                $("#div-work-state-text").hide();
                $("#div-work-state-australia").hide();
                $("#div-work-state").show();
                $('#div-work-state-other-field').hide();
            } else if ($(this).val() == 'Australia' && usedpfac == "true" && fieldWStateMapped == 'none') {
                $("#div-work-state-text").hide();
                $("#div-work-state-australia").show();
                $("#div-work-state").hide();
                $('#div-work-state-other-field').hide();
            } else if ($(this).val() == countryRelated && usedpfac == 'true' && countryRelated != 'none' && fieldWStateMapped != 'none') {
                $("#div-work-state-text").hide();
                $("#div-work-state-australia").hide();
                $("#div-work-state").hide();
                $('#div-work-state-other-field').show();

            } else {
                $("#div-work-state-text").show();
                $("#div-work-state-australia").hide();
                $("#div-work-state").hide();
                $('#div-work-state-other-field').hide();
            }
        });

        localStorage.setItem("volunteer-register-previous-page", document.referrer);
    }
}

function organization_signup_fixes() {
    if ($('form').length > 0 && $('#organization-register-form').length > 0) {
        var countryValue = $('#country').val();
        var usedpfac = $('input#usedpfac').val();
        var fieldStateMapped = $('#otherStateField').val();
        var countryRelated = $('input#relatedCountry').val();
        //  Hide State input text 
        if (countryValue == 'United States') {
            $('#div-state').show();
            $('#div-state-text').hide();
            $('#div-state-australia').hide();
            $('#div-state-other-field').hide();
        } else if (countryValue == 'Australia' && usedpfac == "true" && fieldStateMapped == 'none') {
            $('#div-state').hide();
            $('#div-state-text').hide();
            $('#div-state-australia').show();
            $('#div-state-other-field').hide();
        } else if (countryRelated == countryValue && usedpfac == "true" && countryRelated != 'none' && fieldStateMapped != 'none') {
            $('#div-state').hide();
            $('#div-state-text').hide();
            $('#div-state-australia').hide();
            $('#div-state-other-field').show();
        } else {
            $('#div-state').hide();
            $('#div-state-text').show();
            $('#div-state-australia').hide();
            $('#div-state-other-field').hide();
        }


        //  Home Country dropdown
        $('#country').on('change', function () {
            if ($(this).val() == 'United States') {
                $('#div-state').show();
                $('#div-state-text').hide();
                $('#div-state-australia').hide();
                $('#div-state-other-field').hide();
            } else if ($(this).val() == 'Australia' && usedpfac == "true" && fieldStateMapped == 'none') {
                $('#div-state').hide();
                $('#div-state-text').hide();
                $('#div-state-australia').show();
                $('#div-state-other-field').hide();
            } else if ($(this).val() == countryRelated && usedpfac == 'true' && countryRelated != 'none' && fieldStateMapped != 'none') {
                $('#div-state').hide();
                $('#div-state-text').hide();
                $('#div-state-australia').hide();
                $('#div-state-other-field').show();
            } else {
                $('#div-state').hide();
                $('#div-state-text').show();
                $('#div-state-australia').hide();
                $('#div-state-other-field').hide();
            }
        });

    }
}
function retrieve_organization_detail() {
    if ($('.organization-detail-content').length >0) {
        var description = $(".organization-detail");
        var salesforceDomain = $("#salesforceDomain").val();
    }
}

function opportunity_signup() {
    if ($('#signup-questions-form').length > 0 && $('body').hasClass('logged')) {
        set_multi_signup_event();
        //var confirmButtonLabel = window.translation.sign_up;
        //if ($('div.grouped-occurrence-box-express-interest').length > 0)
        //    confirmButtonLabel = "Express Interest";

        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);

        var addedDaysAndTimes = new Array();

        $("#iso-form input.date-picker-iso").on('change', function () {
            calculate_express_interest_label_for_individual_schedule_opportunity($('#iso-form #iso-connection-type').val());
        });

        //  Display Custom questions if questions > 0
        $('a.signup-individual').removeAttr('data-open');
        var verifyAnswerGO = true;

        $('a.signup-individual').on('click', function () {
            $('.processing_screen').show();
            volunteer_opportunity_detail_populate_ars($(this));

            if ($('.signup-individual').hasClass('disabled')) {
                return false;
            }
            var button = $(this);
            var occId = $(this).closest('.row').find('.occurrence-id');
            var waitlistAllowed = $(this).closest('.row').find('.waitlistAllowed');
            if (!$(this).hasClass('waitlist-button')) {
                waitlistAllowed.val("No");
            }
            var oppdate = $(this).closest('.row').find('legend.title-block span.oc-date');
            var signupType = 'sign-up';
            var opportunityName = "";
            var isExpressInterestOnly = false;
            var occBasicData = $(this).closest('.row').find('input.occ-basic-data-confirmation').val();

            if ($(this).closest('.row').find('input[name="expressInterestOnly"]').length > 0 && $(this).closest('.row').find('input[name="expressInterestOnly"]').val() == 1)
                isExpressInterestOnly = true;

            if ($('div.opportunity-detail-content div.opportunity-details-section h2.title-opportunity').length > 0) {
                opportunityName = $('div.opportunity-detail-content div.opportunity-details-section h2.title-opportunity').html();
            }
            // Delete localstorage info of signup team if it applies
            //localStorage.removeItem('ars-signup-type');
            var arsData = { sid: null, wid: null, signupType: "Individual Only" };
            localStorage.setItem('ars-signup-type', JSON.stringify(arsData));
            var oppIdEvent = $('.opportunity-detail-content input#opportunityId').val();

            var isTimeOutEnable = is_signup_time_out_enabled();
            if (isTimeOutEnable === true) {
                var signupeventcookiename = "signupevent" + oppIdEvent;
                var signupeventvalue = getCookie(signupeventcookiename);
                var signupevent;
                var allowSignUpEvent = true;

                if (signupeventvalue !== "") {
                    signupevent = JSON.parse(signupeventvalue);

                    if (signupevent !== undefined) {

                        var imageUrlForAlert = "";
                        var isSpecialError = false;
                        if (window.sad_face_image != undefined) {
                            imageUrlForAlert = window.sad_face_image;
                        }

                        var custommessage = "";
                        var timeToWait = 30;

                        if (signupevent.action === 'wresponse' || signupevent.action === 'wtime') {

                            var currentTime = Date.now();
                            var seconds = Math.floor((currentTime - signupevent.t1) / 1000);

                            if (seconds < timeToWait) {
                                allowSignUpEvent = false;
                                var waitForSeconds = (timeToWait - seconds);

                                if (signupevent.action === 'wresponse')
                                    custommessage = "A request is already in progress. Please wait at least <span class='counter' style='font-weight:bold;'>" + waitForSeconds + "</span> seconds before trying again. Thank you for your patience.";
                                else
                                    custommessage = "We are experiencing an unusually high volume of requests. Please wait at least <span class='counter' style='font-weight:bold;'>" + waitForSeconds + "</span> seconds before trying again. Thank you for your patience.";

                                Swal.fire({
                                    title: "",
                                    type: "",
                                    html: custommessage,
                                    confirmButtonText: "Ok",
                                    imageUrl: imageUrlForAlert,
                                    customClass: 'server-full'

                                }).then(function (result) {
                                    swal.close();

                                });

                                timer_for_swal_timeout(waitForSeconds);
                            }
                        }
                    }

                }

                if (allowSignUpEvent === true) {
                    signupevent = { void: oppIdEvent, action: "wresponse", t1: Date.now() };
                    setCookie(signupeventcookiename, JSON.stringify(signupevent));
                } else {
                    $('.processing_screen').hide();
                    return;
                }
            }
            setCookie("occitem" + occId.val(), occBasicData, 0.007, true);

            if ($(this).closest('.row').find('p.grouped-occurrence-message').length > 0) {
                var dates = $(this).closest('.row').find('p.grouped-occurrence-message > span').html().split(';');
                var message = $(this).closest('.row').find('p.grouped-occurrence-message').html();

                var bullets = '';
                if (dates.length > 0) {
                    var bullets = '<ul class="text-left" style="overflow-y: scroll; max-height:150px;margin-left: 0;left: 0;padding-left: 31px;">';

                    for (var i = 0; i < dates.length; i++) {
                        bullets += '<li>' + dates[i] + '</li>';
                    }

                    bullets += '</ul>';
                    var wrapped = $('<div>' + message + '</div>');
                    wrapped.find("span").remove();
                    message = wrapped.html();
                    message += bullets;
                }
            }
            if (($('div.grouped-occurrence-box').length > 0 || $('div.grouped-occurrence-box-express-interest').length > 0) && verifyAnswerGO && typeof message != 'undefined' && message != null && message != "") {
                $('.processing_screen').hide();

                Swal.fire({
                    title: "",
                    html: message,
                    icon: "warning",

                    showCancelButton: true,
                    confirmButtonClass: 'btn-danger',
                    confirmButtonText: ($('div.grouped-occurrence-box').length > 0) ? window.translation.sign_up : window.translation.express_interest,
                    cancelButtonText: window.translation.cancel,
                    closeOnConfirm: true,
                    closeOnCancel: true
                }).then(function (result) {
                    if (result.isConfirmed) {
                        verifyAnswerGO = false;
                        button.click();

                    }
                });

                return false;
            }
            if ($(".iso-section").length > 0) {
                $("#iso-selector").show();
                $(".signup-individual").hide();
                $('.processing_screen').hide();
                return false;
            }

            // here validate if has overlapping
            var data = { occurrenceId: occId.val(), voName: opportunityName, isExpressInterestOnly: isExpressInterestOnly }
            $.ajax({
                type: "POST",
                url: urlSite + "/User/VerifyOverlapping",
                data: data,
                beforeSend: function () {
                    $('.processing_screen').show();
                    $('.signup-individual').addClass('disabled');
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                // If this step fails then continue normal
                // 403 means is not allowed the signup due to overlapping, 
                if (jsonResult.status != '200') {
                    var message = jsonResult.message;

                    Swal.fire({
                        title: "",
                        html: message,
                        icon: "warning",
                        showCancelButton: false,
                        confirmButtonClass: 'btn-danger',
                        confirmButtonText: "Ok",
                        closeOnConfirm: true,
                    });

                    return false;
                }

                if (!check_opportunity_prerequisite(button, occId, false)) {
                    $('.processing_screen').hide();
                    return false;
                }

                // Validate sign up type to modify urls of ARS
                if ($("div.grouped-occurrence-box-express-interest").length > 0) {
                    signupType = 'grouped-ocurrences-express-interest';
                }
                else if ($(".express-interest-block").length > 0 || $(".express-interest-only-block").length > 0) {
                    signupType = 'express-interest';
                }
                else if ($("div.grouped-occurrence-box").length > 0) {
                    signupType = 'grouped-ocurrences';
                }

                // Modify URL of ARS process to include type of sign up (Express Interest, Grouped Occurrence Express Interest, Grouped Ocurrence)
                $('input.branch-logic-info[type="hidden"]').each(function () {
                    var redirectTo = $(this).attr('data-redirectto');
                    var newRedirectTo = (redirectTo.indexOf('?') !== -1) ? (redirectTo + '&type=' + signupType) : (redirectTo + '?type=' + signupType);
                    $(this).attr('data-redirectto', newRedirectTo);
                });

                $('#signup-questions-form input[name="occId"]').val(occId.val());
                $('#signup-questions-form input[name="waitlistAllowed"]').val(waitlistAllowed.val());
                $('#signup-questions-form input[name="oppDate"]').val(oppdate.html());
                $('#signup-questions-form input[name="isMultiSignup"]').val("false");
                $('#signup-questions-form input[name="occIds"]').val("");

                var registerTypeMode = get_register_type_mode();
                $('#signup-questions-form input[name="registerTypeMode"]').val(registerTypeMode);


                var qs = $('#signup-questions').find('.question');
                if (qs.length > 0) {
                    //  Reload multiselect
                    $('#signup-questions select[multiple="multiple"]').multiselect();
                    $('.processing_screen').hide();
                    $('#signup-questions').foundation('open');
                } else {
                    //  Trigger button action in Sigunp questions
                    $('#signup-questions-form input[type="submit"]').trigger('click');

                }

            }).always(function () {
                $('.processing_screen').hide();
                $('.signup-individual').removeClass('disabled');
            });
            return false;
        });

        $('a.signup-team').on('click', function () {
            volunteer_opportunity_detail_populate_ars($(this));
            var button = $(this);
            var occId = $(this).closest('.row').find('.occurrence-id');
            var waitlistAllowed = $(this).closest('.row').find('.waitlistAllowed');
            var occBasicData = $(this).closest('.row').find('input.occ-basic-data-confirmation').val();

            // Setting initial value for signup data in localstorage 
            var arsData = { sid: null, wid: null, signupType: "Team Only" };
            localStorage.setItem('ars-signup-type', JSON.stringify(arsData));
            if ($(this).closest('.row').find('p.grouped-occurrence-message').length > 0) {
                var dates = $(this).closest('.row').find('p.grouped-occurrence-message > span').html().split(';');
                var message = $(this).closest('.row').find('p.grouped-occurrence-message').html();
                var bullets = '';
                if (dates.length > 0) {
                    var bullets = '<ul class="text-left" style="overflow-y: scroll; max-height:150px;margin-left: 0;left: 0;padding-left: 31px;">';

                    for (var i = 0; i < dates.length; i++) {
                        bullets += '<li>' + dates[i] + '</li>';
                    }

                    bullets += '</ul>';
                    var wrapped = $('<div style="overflow-y: scroll; max-height:150px;">' + message + '</div>');
                    wrapped.find("span").remove();
                    message = wrapped.html();
                    message += bullets;
                }
            }
            if (($('div.grouped-occurrence-box').length > 0 || $('grouped-occurrence-box-express-interest').length > 0) && verifyAnswerGO && typeof message != 'undefined' && message != null && message != "") {

                Swal.fire({
                    title: "",
                    html: message,
                    icon: "warning",
                    showCancelButton: true,
                    confirmButtonClass: 'btn-danger',
                    confirmButtonText: ($('div.grouped-occurrence-box').length > 0) ? window.translation.sign_up : window.translation.express_interest,
                    cancelButtonText: window.translation.cancel,
                    closeOnConfirm: true,
                    closeOnCancel: true

                }).then(function (result) {
                    if (result.isConfirmed) {
                        verifyAnswerGO = false;
                        button.click();

                    }
                });

                return false;
            }
            if (!check_opportunity_prerequisite(button, occId, true)) {
                return false;
            }
            setCookie("occitem" + occId.val(), occBasicData, 0.014, true);
            $('.processing_screen').show();

            if ($('.signup-team').hasClass('disabled')) {
                return false;
            }
            var finalUrl = "/opportunity-signup-team/" + occId.val() + "/" + waitlistAllowed.val();
            if ($('#prerequisite-notice').length > 0) {
                // Verify if the user is in the prerequisite opportunity to send the parameters to the signup-team page
                var occWithPrerequisite = $('#prerequisite-notice').data('occwithprerequisite');
                finalUrl += "?isOrientation=true" + "&occWithPrerequisite=" + occWithPrerequisite;
            }

            //  Execute ARS first before going to Team Signup page
            var dataTeam = {
                isTeamSignup: true,
                finalUrl: finalUrl
            };
            localStorage.setItem('signup-team', JSON.stringify(dataTeam));

            if ($('#signup-questions-form input[name="visitedOpportunitiesWithPrerequisite"]').val() != '') {
                localStorage.setItem('signup-team-prerequisites', $('#signup-questions-form input[name="visitedOpportunitiesWithPrerequisite"]').val());
            }

            //  Trigger button action in Sigunp questions
            $('#signup-questions-form input[name="occId"]').val(occId.val());
            $('#signup-questions-form').append('<input type="hidden" name="isTeamAction" id="isTeamAction" value="1" />')
            $('#signup-questions-form').submit();
        });

        $('a.signup-iso').on('click', function (e) {
            //iso-form iso-connection-type RRS
            e.preventDefault();
            
            let isoType = $('form#iso-form #iso-connection-type').val();
            let canContinue = true;

            if (isoType === "RRS") {
                let totalDaysAddes = $("#added-days-table .body div.dynamic-row").length;
                if (totalDaysAddes <= 0) {
                    canContinue = false;
                    $('.iso-date-times-custom-error').removeClass("hide");
                } else
                    $('.iso-date-times-custom-error').addClass("hide");
            }
            if ($("#iso-form").valid() && canContinue === true) {
                var dataForm = $("#iso-form").serializeObject();
                dataForm['schedulerSave.RRSDaysAndTimes'] = addedDaysAndTimes;
                dataForm['occurrenceId'] = $(".occurrence-id").val();
                dataForm['isISO'] = true;

                var opportunityName = $(this).parents('.opportunity-detail-content').first().find('h2.title-opportunity').text();
                var existOverlapping = false;

                localStorage.setItem('signup-iso', JSON.stringify(dataForm));

                // here validate if has overlapping
                var data = { occurrenceId: $(".occurrence-id").val(), voName: opportunityName, ISOData: JSON.stringify(dataForm) }
                $.ajax({
                    type: "POST",
                    url: urlSite + "/User/VerifyOverlapping",
                    data: data,
                    beforeSend: function () {
                        $('.processing_screen').show();
                        $('.signup-team').addClass('disabled');
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    // If this step fails then continue normal
                    // 403 means is not allowed the signup due to overlapping, 
                    if (jsonResult.status != '200') {
                        existOverlapping = true;
                        var message = jsonResult.message;

                        Swal.fire({
                            title: "",
                            html: message,
                            icon: "warning",
                            showCancelButton: false,
                            confirmButtonClass: 'btn-danger',
                            confirmButtonText: "Ok",
                            closeOnConfirm: true,
                        });

                        return false;
                    }

                    //  Trigger button action in Sigunp questions
                    $('#signup-questions-form input[type="submit"]').trigger('click');
                }).always(function () {
                    $('.signup-team').removeClass('disabled');
                    if (existOverlapping === true)
                        $('.processing_screen').hide();
                });
            }
        });

        if ($("#iso-form").length > 0) {
            var objValidate = {
                rules: {
                },
                messages: {
                }
            };

            var array_fields = ["schedulerSave.SDTDate", "schedulerSave.SDTStartDateTime", "schedulerSave.SDTEndDateTime", "schedulerSave.RRSStartDate", "schedulerSave.RRSEndDate", "rrsStartTime", "rrsEndTime", "dayOfWeek"];
            for (var i = 0; i < array_fields.length; i++) {

                var rules = {};
                var messages = {};
                var data = $("input[name='" + array_fields[i] + "']").data();

                if (["schedulerSave.SDTDate", "schedulerSave.SDTStartDateTime", "schedulerSave.SDTEndDateTime"].indexOf(array_fields[i]) > -1) {
                    rules['required'] = function (element) {
                        var dropdown = $("#iso-connection-type").val();
                        if (dropdown == "SDT") {
                            return true;
                        } else {
                            return false;
                        }
                    };
                    messages['required'] = data.valRequired;
                }

                if (["schedulerSave.RRSStartDate", "schedulerSave.RRSEndDate", "rrsStartTime", "rrsEndTime"].indexOf(array_fields[i]) > -1) {
                    rules['required'] = function (element) {
                        var dropdown = $("#iso-connection-type").val();
                        if (dropdown == "RRS") {
                            return true;
                        } else {
                            return false;
                        }
                    };
                    messages['required'] = data.valRequired;
                }

                if (["dayOfWeek"].indexOf(array_fields[i]) > -1) {
                    var data = $("select[name='" + array_fields[i] + "']").data();
                    rules['required'] = function (element) {
                        var dropdown = $("#iso-connection-type").val();
                        if (dropdown == "RRS") {
                            return true;
                        } else {
                            return false;
                        }
                    };
                    messages['required'] = data.valRequired;
                }

                rules['regex'] = new RegExp(data.valRegexPattern);
                messages['regex'] = data.valRegex;

                objValidate.rules[array_fields[i]] = rules;
                objValidate.messages[array_fields[i]] = messages;
            }

            $("#iso-form").validate(objValidate);
        }

        $('a#iSOAddDayAndTime').on('click', function (e) {
            e.preventDefault();
            if ($("select[name='dayOfWeek']").valid() && $('#rrsStartTime').valid() && $('#rrsEndTime').valid()) {
                let day = $("select[name='dayOfWeek']").val().split(";")[0];

                let startTime = $("input[name='rrsStartTime']").val();

                let endTime = $("input[name='rrsEndTime']").val();

                let frequencyValue = $("select[name='iso-frequency']").val();

                let frequencyLabel = $("select[name='iso-frequency'] option:selected").text();

                var row = { "DayOfWeek": day, "StartTime": startTime, "EndTime": endTime, "Frequency": frequencyValue};

                var markup = '<div class="row dynamic-row"><div class="small-2 column"><a name="addedDaysRemove" data-id="' + addedDaysAndTimes.length + '">' + window.translation.remove + '</a></div><div class="small-3 column"><span>' + $("select[name='dayOfWeek'] option:selected").text() + '</span></div><div class="small-2 column"><span>' + startTime + '</span></div><div class="small-2 column"><span>' + endTime + '</span></div><div class="small-3 column"><span>' + frequencyLabel + '</span></div></div>';
                $("#added-days-table .body").append(markup);
                $('.iso-date-times-custom-error').addClass("hide");
                $("#iso-regular-recurring-schedule").show();
                calculate_express_interest_label_for_individual_schedule_opportunity($('#iso-form #iso-connection-type').val());
                addedDaysAndTimes.push(row);
            }
        });

        $("body").on('click', "a[name='addedDaysRemove']", function () {
            $(this).parents("div.dynamic-row").remove();
            addedDaysAndTimes.splice($(this).attr('data-id'), 1);

            if ($("#added-days-table .body div.dynamic-row").length == 0) {
                calculate_express_interest_label_for_individual_schedule_opportunity($('#iso-form #iso-connection-type').val());
            }

        });
    }
    else if ($('#signup-questions-form').length > 0 && !$('body').hasClass('logged')) {
        $('.signup-individual, .signup-team2').on('click', function (e) {
            volunteer_opportunity_detail_populate_ars($(this));
            $('.occurrenceSelectedBeforeLogin').removeClass('occurrenceSelectedBeforeLogin');
            $(this).addClass('occurrenceSelectedBeforeLogin');
            var occId = $(this).closest('.row').find('.occurrence-id');
            var occBasicData = $(this).closest('.row').find('input.occ-basic-data-confirmation').val();
            let arsData = '';
            if ($(this).hasClass('signup-team2')) {
                arsData = { sid: null, wid: null, signupType: "Team Only" };
            } else {
                arsData = { sid: null, wid: null, signupType: "Individual Only" };
            }
            localStorage.setItem('ars-signup-type', JSON.stringify(arsData));
            setCookie("occitem" + occId.val(), occBasicData, 0.007, true);
        });
    }

}

function ajax_submit_signup_iso(dataForm, valueUrl, formData) {
    //Get if site is sharingPortalPlus

    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    var datatoSend = {
        infoConnection: dataForm,
        arsData: formData,
        occID: dataForm.occurrenceId,
    };

    $.ajax({
        url: urlSite + '/Search/SaveIsoConnections',
        data: datatoSend,
        type: 'POST',
        beforeSend: function () {
            $('.processing_screen').show();
        }
    }).done(function (data) {
        $('.processing_screen').hide();
        var jsonData = JSON.parse(data);
        if (jsonData.status != "ok") {

            Swal.fire({
                title: "Error",
                icon: "error",
                html: jsonData.message,
                confirmButtonText: "Ok",
            }).then(function (result) {
                var redirectTo = urlSite + "/opportunity/" + dataForm.occurrenceId;
                if (window.location.pathname !== redirectTo) {
                    window.location.href = redirectTo;
                }
            });

        } else {

            Swal.fire({
                title: "",
                text: jsonData.message,
                icon: "success"
            }).then(function (result) {
                if (valueUrl !== undefined && valueUrl !== null && valueUrl !== '') {
                    if (valueUrl === '/individual-signup-confirmation') {
                        valueUrl = '/express-interest-confirmation-page';
                    }

                    window.location.href = urlSite + valueUrl + "?occId=" + dataForm.occurrenceId;

                }
                else
                    window.location.href = urlSite + "/express-interest-confirmation-page?occId=" + dataForm.occurrenceId;
            });

        }
    });
}


/**
 * Events for branch and conditions
 */
function vol_page_branch_logic() {
    //validate if page is compliance
    var isCompliance = $("form:visible input[name='isCompliance']").val();

    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    if ($('input[name="isPageArs"][value="true"]').length > 0 && isCompliance != "True") {
        //Load next and back buttons
        $.ajax({
            type: "GET",
            url: urlSite + '/ARS/getSiteId',
            success: function (data) {
                var siteId = data;
                var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                var divContainer = '<div class="actions_branch_logic"></div>';
                var transactionId = getParameterByName("transactionId", false, false);
                var statusTransact = getParameterByName("stTran", false, false);
                var paymentMethod = getParameterByName("PaymentMethod", false, false);
                var paymentBillingName = getParameterByName("PaymentBillingName", false, false);
                var paymentSubscriptionInfo = getParameterByName("PaymentSubscriptionInfo", false, false);
                var paymentTotalFeeAmount = getParameterByName("PaymentTotalFeeAmount", false, false);
                var layoutContentPage = null;

                //Validation to append div container of ARS actions
                if ($('body').hasClass('new-template-system')) {
                    var regionContentPage = $('#content-page');

                    //Find content page region
                    if (regionContentPage.length > 0) {
                        if ($('body').hasClass('mobile') || $('body').hasClass('tablet')) {
                            if ($('#main_content .page-sizer .container-block-section[class*="ars-block"]').length >= 1) {
                                layoutContentPage = regionContentPage.first().parents('div[data-region-id]').first();
                            }else{
                                layoutContentPage = regionContentPage;
                            }
                        }
                        else {
                            layoutContentPage = regionContentPage.first().parents('div[data-region-id]').first();
                        }

                        layoutContentPage.append(divContainer);
                    }
                }
                else {
                    $('#main-content').append(divContainer);
                }

                var finishLabel = window.translation.finish;
                var nextLabel = window.translation.next;
                var backLabel = window.translation.back;
                var classNextButton = "";
                var IsterminatePage = $('input#branch-logic-is-current-page-terminate').val();
                if ($('.form-ars-info-buttons').length > 0) {
                    if ($('.form-ars-info-buttons').find('input[name="next-button-label"]').length > 0) {
                        if ($('.form-ars-info-buttons').find('input[name="next-button-label"]').val() !== '') {
                            nextLabel = $('.form-ars-info-buttons').find('input[name="next-button-label"]').val();

                        }
                    }
                    if ($('.form-ars-info-buttons').find('input[name="class-for-next-button"]').length > 0) {
                        if ($('.form-ars-info-buttons').find('input[name="class-for-next-button"]').val() !== '') {
                            classNextButton = $('.form-ars-info-buttons').find('input[name="class-for-next-button"]').val();

                        }
                    }

                    if ($('.form-ars-info-buttons').find('input[name="back-button-label"]').length > 0) {
                        if ($('.form-ars-info-buttons').find('input[name="back-button-label"]').val() !== '') {
                            backLabel = $('.form-ars-info-buttons').find('input[name="back-button-label"]').val();
                        }
                    }
                    if ($('.form-ars-info-buttons').find('input[name="submit-label"]').length > 0) {
                        if ($('.form-ars-info-buttons').find('input[name="submit-label"]').val() !== '') {
                            finishLabel = $('.form-ars-info-buttons').find('input[name="submit-label"]').val();
                        }
                    }
                }

                //Validate if exists info of branch-logics
                if ($('input.branch-logic-info').length > 0) {
                    var buttonNextHTML = '';


                    if ($('input.branch-logic-info').length > 1) {
                        var selfFirst = $('input.branch-logic-info').first();
                        var isSuccessPage = selfFirst.attr('data-issuccess');
                        var type = selfFirst.attr('data-type');
                        var workflowId = selfFirst.attr('data-workflow');
                        var textButton = (isSuccessPage === 'True') ? finishLabel : nextLabel;

                        if (type === 'SIGNUP') {
                            formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                        } else if (type === 'PARTNER_REGISTRATION') {
                            formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));
                        } else if (type === 'BASIC_LOG_IN') {
                            formData = JSON.parse(localStorage.getItem('login-branch-logic-form-data-' + siteId));
                        }

                        buttonNextHTML = '<div class="next_option">'
                            + '<a href="#" class="button primary-button ' + classNextButton +'">' + textButton + '</a>'
                            + '</div>';
                    }
                    else if ($('input.branch-logic-info').length == 1) {
                        var self = $('input.branch-logic-info');
                        var redirectTo = self.attr('data-redirectto');
                        redirectTo = (redirectTo) ? redirectTo.split('?')[0] : redirectTo;  //  Fix to compare path without params
                        var type = self.attr('data-type');
                        var workflowId = self.attr('data-workflow');
                        var isSuccessPage = self.attr('data-issuccess');
                        if (type === 'REGISTRATION') {
                            var textButton = (redirectTo === '/volunteer-confirmation-registration' || redirectTo === '/success-registration') ? finishLabel : nextLabel;
                        }
                        else if (type === 'PARTNER_REGISTRATION') {
                            formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));
                            var textButton = (redirectTo === '/organization-confirmation-registration') ? finishLabel : nextLabel;

                        } else if (type === 'BASIC_LOG_IN') {
                            formData = JSON.parse(localStorage.getItem('login-branch-logic-form-data-' + siteId));
                            var dataSuccess = self.attr('data-issuccess');
                            var textButton = (dataSuccess === 'True') ? finishLabel : nextLabel;
                        } else {
                            formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                            var textButton = (redirectTo === '/individual-signup-confirmation' || redirectTo === '/express-interest-confirmation-page' || isSuccessPage === 'True') ? finishLabel : nextLabel;
                        }
                        buttonNextHTML = '<div class="next_option">'
                            + '<a href="#" class="button primary-button ' + classNextButton +'">' + textButton + '</a>'
                            + '</div>';
                    }

                    //Is master template
                    if ($('body').hasClass('new-template-system')) {
                        var regionContentPage = $('#content-page');

                        //Find content page region
                        if (regionContentPage.length > 0) {

                            if (IsterminatePage != 'True') {
                                layoutContentPage.find('.actions_branch_logic').append(buttonNextHTML);
                            }
                            if ($('.signup-more-projects').length > 0) {
                                $('.signup-more-projects').remove();
                            }
                        }
                    }
                    else {
                        if (IsterminatePage != 'True') {
                            $('#main-content').find('.actions_branch_logic').append(buttonNextHTML);
                        }
                        if ($('.signup-more-projects').length > 0) {
                            $('.signup-more-projects').remove();
                        }
                    }
                }

                if (formData !== null && formData["back-branch-logic"] !== undefined && formData["back-branch-logic"] !== null && formData["back-branch-logic"].length > 0) {
                    if (formData["back-branch-logic"][formData["back-branch-logic"].length - 1]) {
                        var textButton = backLabel;
                        var urlCurrent = window.location.pathname + window.location.search;
                        var urlBack = '#';
                        //Find back of this urlCurrent
                        formData["back-branch-logic"].forEach(function (back) {
                            if (back.urlCurrent === urlCurrent) {
                                urlBack = back.urlBack
                            }
                        });
                        var buttonBackHTML = '';
                        if (urlBack !== '#') {
                            buttonBackHTML = '<div class="back_option">'
                                + '<a href="' + urlBack + '" class="button secondary-button">' + textButton + '</a>'
                                + '</div>';

                        }
                        //Is master template
                        if ($('body').hasClass('new-template-system')) {
                            var regionContentPage = $('#content-page');

                            //Find content page region
                            if (regionContentPage.length > 0) {
                                layoutContentPage.find('.actions_branch_logic').append(buttonBackHTML);
                            }
                        }
                        else {
                            $('#main-content').find('.actions_branch_logic').append(buttonBackHTML);
                        }
                    }
                }

                //Trigger click of next if exists transactionId of donationBlock
                if (transactionId && $('.actions_branch_logic').length > 0) {
                    //Display message success of donation

                    let payment_success = getParameterByName("payment_success", false, false);
                    if (payment_success != 'true') {
                        Swal.fire({
                            title: window.translation.success,
                            text: window.translation.donation_success_paypal,
                            icon: "success",
                            confirmButtonText: 'Ok',
                            closeOnConfirm: true
                        }).then(function (result) {
                            let current_url = new URL(window.location.href);
                            current_url.searchParams.set('payment_success', 'true');
                            window.history.pushState({ path: current_url.href }, '', current_url.href);
                            $('.actions_branch_logic').find('.next_option').find('a').trigger('click');
                        });
                    }

                }

                //logic to hide the next or finish button
                var displayButtonValue = $('body form.form-ars').find('input#status-button').val();
                if (displayButtonValue != undefined && displayButtonValue != null && displayButtonValue == 'none') {
                    $('.actions_branch_logic').find('.next_option').find('a.primary-button').addClass('is-hidden');
                }
            }
        }).always(function () {
            verify_actions_branch_logic_buttons();
            validate_next_back_button();

        });
    }
    //Events of next and back
    validate_next_back_button();
}




function validate_next_back_button() {
    if ($('.actions_branch_logic .next_option .button').length > 0 || $('.actions_branch_logic .back_option .button').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);
        $(document).on('click', '.actions_branch_logic .next_option .button, .actions_branch_logic .back_option .button', function () {
            var isMasterTemplate = $('body.new-template-system').length > 0 ? true : false;
            if($(this).parent('.next_option').length >0)
                backup_form_builders();

            processingHtml = '<div class="processing_screen hide-custom">'
                + '<div class="content">'
                + '<span>' + window.translation.please_wait + '</span>'
                + '<img src="/img/default/spinner.svg" alt="loading">'
                + '</div>'
                + '</div>';
            var selector = "";
            if (isMasterTemplate == true) {
                if ($("body.desktop").length > 0) {
                    selector = "body #main_content .formBlock.arsBlock form";
                    if ($("body #main_content .formBlock.arsBlock form .processing_screen").length < 1) {
                        $(selector).append(processingHtml);
                    }
                } else if ($("body.tablet").length > 0 || $("body.mobile").length > 0) {
                    selector = "body .formBlock.arsBlock form";
                    if ($("body .formBlock.arsBlock form .processing_screen").length < 1) {

                        $(selector).append(processingHtml);
                    }

                }
            } else {
                $selector = "body #main-content .formBlock.arsBlock form";
                if ($("body #main-content .formBlock.arsBlock form .processing_screen").length < 1) {
                    $("").append(processingHtml);
                }

            }
            var self = $(this);
            var isSubmit = $(this).hasClass('submit_button');
            var isBack = $(this).parent().hasClass('back_option');
            var isDisabled = $(this).is('[disabled=disabled]');
            var nextTypeButton = '';
            var urlFromClick = '';


            if ($('body').hasClass('llamapi-system')) {
                nextTypeButton = $(this).attr('data-next-type');
                urlFromClick = $(this).attr('data-current-url');

            }
            if (isDisabled == false) {
                //can be click
                if ($('#volunteer-register-form').length > 0) {
                    var registrationForm = $('#volunteer-register-form');

                    //Validate items custom
                    var customvalid = partial_validate_custom($('#volunteer-register-form'), 'volunteer-register-form', false);
                    if (isSubmit === true && $('#volunteer-register-form').valid() === true && (customvalid === true && $('label.error-custom:visible').length === 0)) {

                        //Disable buttons 
                        //Volunteer registration
                        $('.actions_branch_logic').find('.button').attr('disabled', 'disabled');
                        $("#volunteer-register-form .processing_screen").show();
                        var mode = "";
                        var contactConditionsPresent = false;

                        if ($('#volunteer-register-form input.branch-logic-info[value*="contact_email_exist"]').length > 0) {
                            mode = "contact_email_exist";
                            contactConditionsPresent = true;
                        }
                        if ($('#volunteer-register-form input.branch-logic-info[value*="contact_with_log_in_credentials_exists"]').length > 0) {
                            mode += "contact_with_log_in_credentials_exists";
                            contactConditionsPresent = true;
                        }

                        localStorage.setItem('ars-contact-email-contains', JSON.stringify($('#volunteer-register-form input[name="email"]').val()));

                        if (contactConditionsPresent === true) {
                            var contactExist = false;
                            var userAlreadyRegistered = false;

                            var dataToSend = { key: mode, email: $('#volunteer-register-form input[name="email"]').val() };
                            $.ajax({
                                type: "POST",
                                url: urlSite + '/ARS/VerifyContactConditions',
                                data: dataToSend,
                                beforeSend: function () {
                                    //Disable buttons
                                    $('.actions_branch_logic').find('.button').attr('disabled', 'disabled');
                                },
                                success: function (data) {

                                    if (data !== undefined && data !== null && data !== '') {
                                        var serviceResponse = JSON.parse(data);
                                        if (serviceResponse !== undefined && serviceResponse.code === 200) {
                                            contactExist = serviceResponse.contactExist !== undefined ? serviceResponse.contactExist : false;
                                            userAlreadyRegistered = serviceResponse.alreadyRegistered !== undefined ? serviceResponse.alreadyRegistered : false;
                                        }
                                    }

                                    // create localStorage with the value to be readed from the ARS logic
                                    var arsDataContactConditions = { contactExist: contactExist, userAlreadyRegistered: userAlreadyRegistered };
                                    localStorage.setItem('ars-contact-conditions', JSON.stringify(arsDataContactConditions));
                                    $('#volunteer-register-form').submit();
                                }
                            });
                        } else {
                            $('#volunteer-register-form').submit();
                        }
                    }
                }
                else if ($('body').hasClass('llamapi-system') && $('.formBlock.llamapi-registration-form').length > 0 && !$('body').hasClass('ars-page') && !$('body').hasClass('ars-volunteer-registration-step')) {
                    //registration form for llamapi
                    var __formId = $('.formBlock.llamapi-registration-form').data("form-id");
                    var currentForm = $('body').find('.formBlock.llamapi-registration-form form#form-custom-' + __formId).first();
                    if (currentForm !== undefined && currentForm !== null) {
                        
                        if (currentForm.valid()) {
                            updateDialCodeInFormBuilder(currentForm);
                            var formId = currentForm.attr('id');
                            if (validate_honeypot_security(formId)) {
                                var redirectUrl = currentForm.find('input[name="redirect_url"]').val();
                                var siteId = $(this).attr('data-connection');
                                volunteer_registration_branch_logic(formId);
                                //storing in the 
                                var branchLogicInputRedirect = $('.formBlock.llamapi-registration-form').find('input#branch-logic-redirect');
                                let isSocialNetwoorkRegistration = false;
                                let isSocialNetworkField = $('.formBlock.llamapi-registration-form').find('input#isSocialLoginSource')

                                if (isSocialNetworkField !== undefined && isSocialNetworkField !== null && isSocialNetworkField.length > 0)
                                    isSocialNetwoorkRegistration = true;


                                if (branchLogicInputRedirect.val() != '' && branchLogicInputRedirect.val() != null && branchLogicInputRedirect.val() != redirectUrl) {
                                    var requiredVerificationCode = is_necessary_ask_code(self, currentForm.serializeObject());
                                    if (requiredVerificationCode === true && is_needed_verification_code(self, currentForm.serializeJSON(), currentForm, false,true,false,urlFromClick) === true) {
                                        // to avoid the processing of the form
                                        self.hide();
                                        return;
                                    } else {

                                        var dataToStore = {};
                                        var postData = currentForm.serializeJSON();
                                        if (postData['last_code_verification'] !== null && postData['last_code_verification'] !== undefined && postData['last_code_verification'] !== '') {
                                            postData['verificationCode'] = postData['last_code_verification'];
                                        }

                                        if (postData['last_code_token'] !== null && postData['last_code_token'] !== undefined && postData['last_code_token'] !== '') {
                                            postData['verificationtoken'] = postData['last_code_token'];
                                        }

                                        var fid = currentForm.parents('.llamapi-registration-form').attr('data-form-id');
                                        postData['formId'] = fid;


                                        dataToStore["registrationData"] = postData;
                                        dataToStore['back-branch-logic'] = [];
                                        dataToStore["connection-id"] = siteId;
                                        var urlObject = {};
                                        urlObject.urlCurrent = urlSite + branchLogicInputRedirect.val();
                                        urlObject.urlBack = urlFromClick;
                                        dataToStore['back-branch-logic'].push(urlObject);
                                        _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, dataToStore);
                                        remove_form_restriction(currentForm, '1');
                                        window.location.href = urlSite + branchLogicInputRedirect.val();

                                    }
                                    return false;

                                } else {

                                    var requiredVerificationCode = is_necessary_ask_code(self, currentForm.serializeObject());
                                    var isFinalPage = ($('input#branch-logic-redirect').attr('data-isfinal') === 'true') ? true : false;


                                    //Tke into account it is posisble just if the login is using social
                                    let skip_natural_behavior =  isSocialNetwoorkRegistration && isFinalPage && branchLogicInputRedirect.val() != '' && branchLogicInputRedirect.val() != null && branchLogicInputRedirect.val() == redirectUrl;

                                    if (requiredVerificationCode === true && is_needed_verification_code(self, currentForm.serializeJSON(), currentForm, false, true, skip_natural_behavior) === true) {
                                        self.hide();
                                        return;
                                    } else {
                                        process_final_submmit_llama_ars_registration(currentForm, null, siteId, urlSite, urlFromClick);
                                    }

                                    return false;
                                }

                            }

                        }
                    }
                }
                else {
                    // Validating basic honeypot security 
                    //regiustration llamaPi without ARS 
                    var formBlock = null;
                    var formBlock = $('body #main-content .formBlock.arsBlock');
                    if (isMasterTemplate == true) {

                        if ($('body.desktop').length > 0) {
                            
                            if ($('body #main_content .formBlock.arsBlock').length > 0) 
                                formBlock = $('body #main_content .formBlock');
                            else if ($('body #main_content .donationBlock').length > 0)
                                formBlock = $('body #main_content .donationBlock');
                            if ($('body .formBlock.arsBlock').length > 0) {
                                formBlock = $('body .formBlock.arsBlock');
                                // it must be reviewed with Rick, for master it should not validate using #main_content LHH-19342
                            }

                        }
                        else if ($("body.tablet").length > 0 || $("body.mobile").length > 0) {
                            if ($("body .formBlock.arsBlock").length > 0) {
                                formBlock = $('body .formBlock.arsBlock');
                            } else if ($("body .donationBlock").length > 0) {
                                formBlock = $('body .donationBlock').first();
                            }
                        }

                    }

                    updateDialCodeInFormBuilder(formBlock);
                    var form_id = formBlock.find('form').attr('id');
                    var hasPaymentComponent = false;

                    //validating if there is a payment component
                    var paymentComponent = formBlock.find('.payment-component');
                    if (paymentComponent !== null && paymentComponent !== undefined && paymentComponent.length > 0 && isBack === false) {
                        if (paymentComponent.find('input[name="prefer_not_donate"]').length > 0) {
                            if (paymentComponent.find('input[name="prefer_not_donate"]').is(':checked') === false && paymentComponent.find('input[name="payment_processor"]:checked').length === 0) {

                                Swal.fire({
                                    title: '',
                                    icon: 'error',
                                    text: 'You should select a Payment processor or Sorry, I cannot donate at this time',
                                    confirmButtonText: 'Ok',
                                    closeOnConfirm: true
                                });
                                $(selector).find('.processing_screen').hide();
                                return false;
                            }

                            hasPaymentComponent = false;
                            if (paymentComponent.find('input[name="prefer_not_donate"]').is(':checked') === false) {
                                hasPaymentComponent = true;
                            }

                            if (paymentComponent.find('input[name="prefer_not_donate"]').is(':checked') === false && paymentComponent.find('input[name="isAllowSelectMultipleAmount"]').val() == "true" && paymentComponent.find('input[name="formAmountField"]').val() == 0) {
                                Swal.fire({
                                    title: '',
                                    icon: 'error',
                                    text: 'Sorry, you cannot continue at this time. You must select at least one amount.',
                                    confirmButtonText: 'Ok',
                                    closeOnConfirm: true
                                });
                                $(selector).find('.processing_screen').hide();
                                return false;
                            }
                        } else {
                            if (paymentComponent.find('.payment-executed').length > 0) {
                                hasPaymentComponent = false;
                            } else {
                                hasPaymentComponent = true;
                            }

                        }

                    }

                    if (validate_honeypot_security(form_id)) {

                        let currentForm = undefined;

                        if (form_id !== undefined) {
                            currentForm = $('#' + form_id);
                        }

                        //apply validation of address_suggestions

                        if (isBack == false && currentForm !== undefined && currentForm !== null && verify_address_suggestion_enable(currentForm) == true) {
                            let canContinueRelatedToAddress = false;
                            $('.processing_screen').first().show();
                            // exists at least one address component with address verification

                            //canContinueRelatedToAddress over the address components present in the form and that has the feature activated and the address is pending to validate
                            canContinueRelatedToAddress = iterate_over_address_component_address_suggestions(currentForm, form_id);

                            if (canContinueRelatedToAddress == false)
                                return false;

                        }
                        $('.processing_screen').first().hide();

                        var xhrsLatLongARS = calculate_latlong_for_address_components();
                        $.when.apply($, xhrsLatLongARS).done(function () {
                            $.ajax({
                                type: "GET",
                                url: urlSite + '/ARS/getSiteId',
                                beforeSend: function () {
                                    //Disable buttons
                                    $('.actions_branch_logic').find('.button').attr('disabled', 'disabled');
                                    formBlock.find('form .processing_screen').show();
                                },
                                success: function (data) {

                                    var siteId = data;
                                    var typeBranchLogic = $('input.branch-logic-info').first().attr('data-type');
                                    var workflowId = $('input.branch-logic-info').first().attr('data-workflow');
                                    var occurrenceId = null;
                                    var fieldsOccurrence = [];
                                    if (typeBranchLogic == 'SIGNUP') {
                                        var formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                                        occurrenceId = formData.occId;
                                        $('.occurrence-field-ars').each(function () {
                                            fieldsOccurrence.push($(this).prop('id'));
                                        });
                                    }
                                    var datatoSend = {
                                        occurrenceId: occurrenceId,
                                        fieldsOccurrence: fieldsOccurrence
                                    };

                                    $.ajax(
                                        {
                                            type: 'POST',
                                            data: datatoSend,
                                            url: urlSite + '/ARS/getSiteIdAndOccurrenceFields',
                                            beforeSend: function () {
                                                $('.processing_screen').first().show();
                                            },
                                            success: function (dataDetail) {
                                                dataDetail = JSON.parse(dataDetail);
                                                var siteId = dataDetail.SiteId;
                                                fieldsOccurrence.forEach(function (item) {
                                                    if (dataDetail.Record != undefined && dataDetail.Record[item.split('.')[1]] != null) {
                                                        $('input[name="' + item + '[value]"]').val(dataDetail.Record[item.split('.')[1]]);

                                                    }
                                                });
                                                var typeBranchLogic = $('input.branch-logic-info').first().attr('data-type');
                                                var workflowId = $('input.branch-logic-info').first().attr('data-workflow');
                                                var formData = null;
                                                switch (typeBranchLogic) {
                                                    case 'REGISTRATION':
                                                        var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                                                        break;
                                                    case 'SIGNUP':
                                                        var formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                                                        break;
                                                    case 'PARTNER_REGISTRATION':
                                                        var formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));
                                                        break;
                                                    case 'BASIC_LOG_IN':
                                                        var formData = JSON.parse(localStorage.getItem('login-branch-logic-form-data-' + siteId));
                                                        if (formData == null) {
                                                            formData = {};
                                                        }
                                                        break;
                                                    default:
                                                        var formData = null;
                                                }
                                                var valueHref = '';

                                                //Update localStorage and add/remove latest value of back-urls-values, redirect to next or page page
                                                if (isBack) {
                                                    valueHref = self.attr('href');

                                                    var formBlockToPRocessBack = $('.formBlock.blockContainer form');
                                                    remove_form_restriction(formBlockToPRocessBack, '80');

                                                    if (typeBranchLogic === 'REGISTRATION') {
                                                        _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, formData);
                                                    }
                                                    else if (typeBranchLogic === 'PARTNER_REGISTRATION') {
                                                        _assign_value_json_local_storage('partner-branch-logic-form-data-' + siteId, formData);
                                                    }
                                                    else if (typeBranchLogic === 'BASIC_LOG_IN') {
                                                        _assign_value_json_local_storage('login-branch-logic-form-data-' + siteId, formData);
                                                    }
                                                    //removeclass
                                                    var formBlockArs = $('body form.form-ars');
                                                    remove_form_restriction(formBlockArs, '2');
                                                    window.location.href = valueHref;
                                                }
                                                else {
                                                    var form_id = '';
                                                    //var form_id = $('body .formBlock input[name="is_ars_form"][value="True"]').parent('form').first().attr('id');

                                                    /*if (form_id === null || form_id === '' || typeof form_id === 'undefined') {
                                                        form_id = self.parents('body').first().find('.donationBlock form[name=donation-form]').attr('id');
                                                    }*/
                                                    var form_id = formBlock.find('form').attr('id');
                                                    volunteer_registration_branch_logic(form_id);
                                                    var isSuccessPage = ($('input#branch-logic-redirect').attr('data-issuccess') === 'true') ? true : false;
                                                    var isFinalPage = ($('input#branch-logic-redirect').attr('data-isfinal') === 'true') ? true : false;
                                                    valueHref = $('input#branch-logic-redirect').val();
                                                    valueHref = (valueHref) ? valueHref.split('?')[0] : valueHref;  //  Fix to compare path without params

                                                    //Validate if fields waiver are checked, if that is false stop redirect and show alert messages
                                                    if (_validate_check_waiver_blocks(siteId) === true &&
                                                        _validate_donation_block(siteId) === true &&
                                                        _validate_check_form_blocks(siteId, isMasterTemplate) === true) {

                                                        var formBlockToPRocessNext = $('.formBlock.blockContainer form');
                                                        remove_form_restriction(formBlockToPRocessNext, '81');
                                                        var formData = null;

                                                        switch (typeBranchLogic) {
                                                            case 'REGISTRATION':
                                                                var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                                                                break;
                                                            case 'SIGNUP':
                                                                var formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                                                                break;
                                                            case 'PARTNER_REGISTRATION':
                                                                var formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));
                                                                if (formData["waiverFields"] !== null)
                                                                    formData["waiverFields"] = JSON.stringify(formData["waiverFields"]);
                                                                break;
                                                            case 'BASIC_LOG_IN':
                                                                formData = JSON.parse(localStorage.getItem('login-branch-logic-form-data-' + siteId));

                                                                break;
                                                            default:
                                                                var formData = null;
                                                        }


                                                        if (hasPaymentComponent === true && paymentComponent !== null && paymentComponent != undefined && paymentComponent.length > 0) {


                                                            var securityKey = getClientSecurityKey();
                                                            var recalculateToken = false;
                                                            var formInBlock = formBlock.find('form');
                                                            let includeUserResponse = false;

                                                            if (securityKey != undefined) {
                                                                // compare the current time vs the time when the token eas generated
                                                                var initialTime = formInBlock.find('input[name="user_response_time"]').val();
                                                                var currentTime = new Date().getTime();

                                                                var diff = currentTime - initialTime;

                                                                if (diff > 90000)
                                                                    recalculateToken = true;

                                                            }
                                                            if (formInBlock.find('input[name="user_response"]').length === 0) {
                                                                recalculateToken = true;
                                                                includeUserResponse = true;
                                                            } 

                                                            if (recalculateToken === true) {
                                                                var actionName = 'forms'
                                                                grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {

                                                                    var currentTime = new Date().getTime();
                                                                    currentTime = currentTime + (24 * 60 * 60 * 1000);
                                                                    if (includeUserResponse === true) {
                                                                        formInBlock.append('<input type="hidden" name="user_response" id="user_response" value="' + token + '" />');
                                                                        formInBlock.append('<input type="hidden" name="user_response_time" id="user_response_time" value="' + currentTime + '" />');
                                                                    } else {
                                                                        formInBlock.find('input[name="user_response"]').val(token)
                                                                        formInBlock.find('input[name="user_response_time"]').val(currentTime)
                                                                    }
                                                                    process_payment_component_in_ars(paymentComponent, formBlock, self)
                                                                });
                                                            } else {
                                                                process_payment_component_in_ars(paymentComponent, formBlock, self)
                                                            }

                                                            return false;
                                                        }

                                                        if ($('body').hasClass('llamapi-system') && typeBranchLogic == 'REGISTRATION' && isFinalPage) {
                                                            var urlToRedirect = urlSite + valueHref
                                                            //remove class
                                                            var formBlockArs = $('body form.form-ars');
                                                            remove_form_restriction(formBlockArs, '6');
                                                            ajax_submit_registration_ars_llamapi(self, formData, urlToRedirect);
                                                        } else if (typeBranchLogic === 'REGISTRATION' && (valueHref === '/volunteer-confirmation-registration' || isSuccessPage)) {
                                                            //Submit of form
                                                            //remove class
                                                            var formBlockArs = $('body form.form-ars');
                                                            remove_form_restriction(formBlockArs, '5');

                                                            var securityKey = getClientSecurityKey();
                                                            var recalculateToken = false;
                                                            if (securityKey != undefined) {
                                                                // compare the current time vs the time when the token eas generated
                                                                var initialTime = formData["user_response_time"];
                                                                var currentTime = new Date().getTime();

                                                                var diff = currentTime - initialTime;

                                                                if (diff > 90000)
                                                                    recalculateToken = true;

                                                            }

                                                            if (recalculateToken === true) {
                                                                // $('#volunteer-register-form').find(".submit-button").attr("disabled", true);
                                                                var actionName = 'volunteer_registration'

                                                                grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {

                                                                    var currentTime = new Date().getTime();
                                                                    currentTime = currentTime + (24 * 60 * 60 * 1000);
                                                                    formData["user_response"] = token;
                                                                    formData["user_response_time"] = currentTime;
                                                                    ajax_submit_event(null, formData, valueHref);
                                                                });
                                                            } else {
                                                                ajax_submit_event(null, formData, valueHref);
                                                            }


                                                        }
                                                        else if (typeBranchLogic === 'SIGNUP' && (valueHref === '/individual-signup-confirmation' || valueHref === '/express-interest-confirmation-page' || isSuccessPage)) {
                                                            //  Submit of form
                                                            //  verify if is ISO opp
                                                            var isoData = localStorage.getItem('signup-iso');
                                                            var dataFormIso = isoData ? JSON.parse(isoData) : null;
                                                            //  Verify team signup
                                                            var teamData = localStorage.getItem('signup-team');
                                                            var teamDataParsed = teamData ? JSON.parse(teamData) : null;

                                                            if (dataFormIso && dataFormIso.isISO) {
                                                                ajax_submit_signup_iso(dataFormIso, valueHref, formData);
                                                                localStorage.removeItem('signup-iso');
                                                            } else if (teamDataParsed && teamDataParsed.isTeamSignup) {
                                                                var arsData = { sid: siteId, wid: workflowId, signupType: "Team Only" };
                                                                localStorage.setItem('ars-signup-type', JSON.stringify(arsData));
                                                                localStorage.removeItem('signup-team');
                                                                window.location.href = urlSite + teamDataParsed.finalUrl;
                                                            } else {

                                                                let isMultiSignup = formData["isMultiSignup"] == 'true';
                                                                let urlSuccessPage = (isMultiSignup) ? "/opportunity-multi-signup-confirmation" : valueHref;
                                                                ajax_submit_sign_up(formData, urlSuccessPage);
                                                            }
                                                        }
                                                        else if (typeBranchLogic === 'PARTNER_REGISTRATION' && valueHref === '/organization-confirmation-registration') {
                                                            //Submit of form
                                                            var securityKey = getClientSecurityKey();
                                                            var recalculateToken = false;

                                                            if (securityKey != undefined) {
                                                                // compare the current time vs the time when the token eas generated
                                                                var initialTime = formData["user_response_time"];
                                                                var currentTime = new Date().getTime();

                                                                var diff = currentTime - initialTime;

                                                                if (diff > 90000)
                                                                    recalculateToken = true;

                                                            }
                                                            if (recalculateToken === true) {
                                                                var actionName = 'organization_registration';
                                                                grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {
                                                                    var currentTime = new Date().getTime();
                                                                    currentTime = currentTime + (24 * 60 * 60 * 1000);
                                                                    formData["user_response"] = token;
                                                                    formData["user_response_time"] = currentTime;
                                                                    ajax_submit_partner_registration(formData, valueHref, siteId);
                                                                });
                                                            } else {

                                                                ajax_submit_partner_registration(formData, valueHref, siteId);
                                                            }



                                                        } else if (typeBranchLogic === 'PARTNER_REGISTRATION' && valueHref !== '/organization-confirmation-registration') {
                                                            if (isSuccessPage) {

                                                                var securityKey = getClientSecurityKey();
                                                                var recalculateToken = false;

                                                                if (securityKey != undefined) {
                                                                    // compare the current time vs the time when the token eas generated
                                                                    var initialTime = formData["user_response_time"];
                                                                    var currentTime = new Date().getTime();

                                                                    var diff = currentTime - initialTime;

                                                                    if (diff > 90000)
                                                                        recalculateToken = true;

                                                                }
                                                                if (recalculateToken === true) {
                                                                    var actionName = 'organization_registration';
                                                                    grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {
                                                                        var currentTime = new Date().getTime();
                                                                        currentTime = currentTime + (24 * 60 * 60 * 1000);
                                                                        formData["user_response"] = token;
                                                                        formData["user_response_time"] = currentTime;
                                                                        ajax_submit_partner_registration(formData, valueHref, siteId);
                                                                    });
                                                                } else {
                                                                    ajax_submit_partner_registration(formData, valueHref, siteId);
                                                                }

                                                            } else {
                                                                var urlObject = {};
                                                                urlObject.urlCurrent = urlSite + valueHref;
                                                                urlObject.urlBack = window.location.pathname;

                                                                formData['back-branch-logic'].push(urlObject);
                                                                _assign_value_json_local_storage('partner-branch-logic-form-data-' + siteId, formData);
                                                                window.location.href = urlSite + valueHref;
                                                            }
                                                        } else if (typeBranchLogic === 'BASIC_LOG_IN' && (isSuccessPage || valueHref === '/volunteer-account-overview')) {

                                                            ajax_submit_login_ars(formData, valueHref, siteId);
                                                        }
                                                        else {
                                                            var urlObject = {};
                                                            urlObject.urlCurrent = urlSite + valueHref + window.location.search;
                                                            urlObject.urlBack = window.location.pathname + window.location.search;


                                                            if (formData != null) {
                                                                if (formData['back-branch-logic'] !== null && formData['back-branch-logic'] !== undefined)
                                                                    formData['back-branch-logic'].push(urlObject);
                                                                else
                                                                    formData['back-branch-logic'] = [urlObject];
                                                            } else if (typeBranchLogic === 'BASIC_LOG_IN') {
                                                                formData = {};
                                                                formData['back-branch-logic'] = [urlObject];


                                                            }


                                                            if (typeBranchLogic === 'REGISTRATION') {
                                                                _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, formData);
                                                            }
                                                            else if (typeBranchLogic === 'PARTNER_REGISTRATION') {
                                                                _assign_value_json_local_storage('partner-branch-logic-form-data-' + siteId, formData);
                                                            }
                                                            else if (typeBranchLogic === 'BASIC_LOG_IN') {
                                                                _assign_value_json_local_storage('login-branch-logic-form-data-' + siteId, formData);

                                                            }
                                                            else {
                                                                _assign_value_json_local_storage('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId, formData);
                                                            }
                                                            //remove class
                                                            var formBlockArs = $('body form.form-ars');
                                                            remove_form_restriction(formBlockArs, '3');
                                                            window.location.href = urlSite + valueHref + window.location.search;;
                                                        }
                                                    }
                                                    else {
                                                        $('.actions_branch_logic').find('.button').removeAttr('disabled');
                                                        $(".processing_screen").hide();
                                                    }
                                                }
                                            }
                                        });
                                }
                            });
                        });

                    }
                }
            }
            return false;
        });

    }


}

function remove_form_restriction(currentForm, fromF) {
    var alert_missing_changes = (window.alert_missing_changes != undefined) ? window.alert_missing_changes : false;
    if (alert_missing_changes && currentForm != undefined) {
        if (currentForm.data('evaluate-changes') == true) {
            currentForm.data('evaluate-changes', false);
        }
        if (currentForm.hasClass('alert-changes')) {
            currentForm.removeClass('alert-changes');
        }
        if (currentForm.hasClass('prevent-changes')) {
            currentForm.removeClass('prevent-changes');
        }
    }
}

/**
 * @param {any} currentForm : The form without serialization
 * @param {any} dataSerialized: the form already serialized

 */
function process_final_submmit_llama_ars_registration(currentForm, dataSerialized, siteId, urlSite, urlFromClick)
{
    var dataToStore = {};
    var postData = (dataSerialized == null || dataSerialized === undefined) ? currentForm.serializeJSON() : dataSerialized;
    if (postData['last_code_verification'] !== null && postData['last_code_verification'] !== undefined && postData['last_code_verification'] !== '') {
        postData['verificationCode'] = postData['last_code_verification'];
    }

    if (postData['last_code_token'] !== null && postData['last_code_token'] !== undefined && postData['last_code_token'] !== '') {
        postData['verificationtoken'] = postData['last_code_token'];
    }

    var fid = currentForm.parents('.llamapi-registration-form').attr('data-form-id');
    postData['formId'] = fid;

    if (urlFromClick == undefined)
        urlFromClick = '';
    var branchLogicInputRedirect = $('.formBlock.llamapi-registration-form').find('input#branch-logic-redirect');
    var isFinalPage = (branchLogicInputRedirect.attr('data-isfinal') === 'true') ? true : false;
    dataToStore["registrationData"] = postData;
    dataToStore['back-branch-logic'] = [];
    dataToStore["connection-id"] = siteId;
    var urlObject = {};
    urlObject.urlCurrent = urlSite + branchLogicInputRedirect.val();
    urlObject.urlBack = urlFromClick;
    dataToStore['back-branch-logic'].push(urlObject);


    var valueHref = $('input#branch-logic-redirect').val();
    valueHref = (valueHref) ? valueHref.split('?')[0] : valueHref;  //  Fix to compare path without params
    var urlToRedirect = urlSite + valueHref
    var typeBranchLogic = $('input.branch-logic-info').first().attr('data-type');

    if ($('body').hasClass('llamapi-system') && typeBranchLogic == 'REGISTRATION' && isFinalPage) {
        var urlToRedirect = urlSite + valueHref
        //remove class
        var formBlockArs = $('body form.form-ars');
        remove_form_restriction(formBlockArs, '6');

        ajax_submit_registration_ars_llamapi(self, dataToStore, urlToRedirect);
    }
}

function partner_page_branch_logic() {
    //Events of next and back
    if ($('.actions_partner_branch_logic a.next_option').length > 0) {
        $(document).on('click', '.actions_partner_branch_logic a.next_option', function () {
            var customValidForOrg = partial_validate_custom($('#organization-register-form'), 'organization-register-form', false);
            localStorage.setItem('ars-contact-email-contains', JSON.stringify($('#organization-register-form input[name="email"]').val()));
            var self = $(this);
            // var isSubmit = $(this).hasClass('submit_button');
            // var isBack = $(this).parent().hasClass('back_option');

            if ($('#organization-register-form').length > 0) {
                if (/*isSubmit === true &&*/ $('#organization-register-form').valid() === true && customValidForOrg === true && $('label.error-custom:visible').length === 0) {
                    //Disable buttons
                    $('.actions_partner_branch_logic').find('.button').attr('disabled', 'disabled');
                    $('#organization-register-form').find('.processing_screen').show();
                    $('#organization-register-form').submit();
                }
                else {
                    var topLabelError = 0;

                    if ($('label.error-custom:visible').length > 0) {
                        topLabelError = $('label.error-custom:visible').first().offset().top;
                    }
                    else if ($('label.error').length > 0) {
                        topLabelError = $('label.error').first().offset().top;
                    }

                    //Enable buttons
                    $('.actions_partner_branch_logic').find('.button').removeAttr('disabled');
                    $('body,html').animate({
                        scrollTop: (topLabelError > 70) ? topLabelError - 70 : topLabelError,
                    }, 500
                    );
                }
            }
        });

    }

}

function volunteer_registration_branch_logic(formId) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var currentLocale = window.translation['locale_iso'];
    var branchLogicRules = $('.branch-logic-info');
    var branchLogicInputRedirect = $('input#branch-logic-redirect');
    var meetConditions = false;
    //Set moment locale
    moment.locale(currentLocale);

    //Initialize redirect to field
    branchLogicInputRedirect.val('');



    var formImputFormat = formId && formId.indexOf('form-custom-');
    var runInServer = $('.branch-logic-info[data-server="true"]').length > 0;

    if (runInServer) {

        var isArsLogin = false;
        var dataSerialized = $('form#' + formId).serialize();
        var ruleId = '';
        branchLogicRules.each(function () {
            ruleId += $(this).attr('data-page-rule') + ',';
            isArsLogin = isArsLogin || $(this).attr('data-page-rule-type') && $(this).attr('data-page-rule-type') === "4";
        });

        var arrayInputs = [];
        $('form#' + formId).find('input:not([type="hidden"]),select').each(function () {
            var thisControl = $(this);
            var objectControl = {};
            objectControl.label = thisControl.attr('name');
            objectControl.isHidden = thisControl.hasClass('is-hidden');
            arrayInputs.push(objectControl);
        });


        var arsSignUpTypePar = localStorage.getItem('ars-signup-type');
        var ruleSignupTypePar = "";
        if (arsSignUpTypePar !== null && arsSignUpTypePar !== '') {
            var objJsonPar = JSON.parse(arsSignUpTypePar);
            ruleSignupTypePar = objJsonPar.signupType;
        }


        var contactExistPar = undefined;
        var alreadyRegisteredPar = undefined;
        var contactConditionsPar = localStorage.getItem('ars-contact-conditions');
        if (contactConditionsPar !== null && contactConditionsPar !== '' && contactConditionsPar !== undefined) {
            var objJsonPar = JSON.parse(contactConditionsPar);
            if (objJsonPar !== undefined) {
                contactExistPar = objJsonPar.contactExist + "";
                alreadyRegisteredPar = objJsonPar.userAlreadyRegistered + "";
            }
        }

        var currentWRSCodePar = localStorage.getItem('wrscode');

        var contactConditionsPar = localStorage.getItem('ars-contact-email-contains');

        $.ajax({
            method: "POST",
            url: urlSite + "ARS/EvaluateRule",
            data: { dataSerialized: dataSerialized, ruleId: ruleId, isArsLogin: isArsLogin, formImputFormat: formImputFormat, arrayInputs: JSON.stringify(arrayInputs), ruleSignupType: ruleSignupTypePar, contactExist: contactExistPar, alreadyRegistered: alreadyRegisteredPar, currentWRSCode: currentWRSCodePar, contactConditions: contactConditionsPar },
            beforeSend: function () {

            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $('.processing_screen').hide();
                Swal.fire({
                    title: textStatus,
                    icon: "error",
                    html: errorThrown,
                    confirmButtonText: "Ok",

                });
                window.alert('Error');
            }
        }).done(function (data) {
            var dataResult = JSON.parse(data);
            if (dataResult.status == 200) {
                if (dataResult.meetConditions) {
                    branchLogicInputRedirect.val(dataResult.pageRedirect);
                    meetConditions = dataResult.meetConditions;
                }
                else {
                    meetConditions = false;
                }
            }
            else {
            }
        });

    }
    else {
        branchLogicRules.each(function () {

            var self = $(this);
            var redirectTo = self.attr('data-redirectTo');
            var isArsLogin = self.attr('data-page-rule-type') && self.attr('data-page-rule-type') === "4";
            
            if (meetConditions === false) {
                var conditions = self.val();
                var isDefault = self.attr('data-isDefault');
                var isSuccessPage = self.attr('data-issuccess');

                //Add variable to validate redirectTo is to a success page
                branchLogicInputRedirect.attr('data-isfinal', false);
                if (isSuccessPage === 'True') {
                    branchLogicInputRedirect.attr('data-issuccess', true);
                    branchLogicInputRedirect.attr('data-isfinal', true);
                }
                else {
                    branchLogicInputRedirect.attr('data-issuccess', false);
                }

                if (isDefault === 'True') {
                    if (branchLogicInputRedirect.val() == '') {
                        branchLogicInputRedirect.val(redirectTo);
                        branchLogicInputRedirect.attr('data-isfinal', true);
                        meetConditions = true;
                    }
                }
                else {
                    
                    if (conditions != "" && conditions != null && redirectTo != null && redirectTo != "") {
                        var arrayConditions = [];
                        var countConditions = 0;
                        var conditionsFulfilled = 0;
                        var typeConditions = '';
                        if (conditions.indexOf('&&') != -1) {
                            arrayConditions = conditions.split('&&');
                            typeConditions = 'ALL';
                        }
                        else {
                            arrayConditions = conditions.split('||');
                            typeConditions = 'OR';
                        }
                        countConditions = arrayConditions.length;
                        arrayConditions.forEach(function (condition) {
                            var conditionType;
                            var inputName;
                            var value;
                            if (condition.indexOf('==') != -1 || condition.indexOf('!=') != -1) { //Is equal or is not equal options
                                conditionType = (condition.indexOf('==') != -1) ? 'EQUAL' : 'NOT EQUAL';
                                inputName = (conditionType === 'EQUAL') ? condition.split('==')[0] : condition.split('!=')[0];
                                value = (conditionType === 'EQUAL') ? condition.split('==')[1] : condition.split('!=')[1];
                            }
                            else if (condition.indexOf("_not_equal_empty_") != -1) {
                                inputName = condition.split('_not_equal_empty_')[0];
                                value = condition.split('_not_equal_empty_')[1];
                                conditionType = "NOT EQUAL EMPTY";
                            }
                            else if (condition.indexOf("_equal_empty_") != -1) {
                                inputName = condition.split('_equal_empty_')[0];
                                value = condition.split('_equal_empty_')[1];
                                conditionType = "EQUAL EMPTY";
                            }
                            else if (condition.indexOf("_multicheck_include_") != -1) {
                                inputName = condition.split('_multicheck_include_')[0];
                                value = condition.split('_multicheck_include_')[1];
                                conditionType = "MULTICHECK INCLUDE";
                            }
                            else if (condition.indexOf("_multicheck_notinclude_") != -1) {
                                inputName = condition.split('_multicheck_notinclude_')[0];
                                value = condition.split('_multicheck_notinclude_')[1];
                                conditionType = "MULTICHECK NOT INCLUDE";
                            }
                            else if (condition.indexOf('>=') != -1 || condition.indexOf('<=') != -1) { //Is major than or  equals OR  less than or equals option
                                conditionType = (condition.indexOf('>') != -1) ? 'MORE THAN OR EQUALS' : 'LESS THAN OR EQUALS';
                                inputName = (conditionType === 'MORE THAN OR EQUALS') ? condition.split('>=')[0] : condition.split('<=')[0];
                                value = (conditionType === 'MORE THAN OR EQUALS') ? condition.split('>=')[1] : condition.split('<=')[1];
                            } else if (condition.indexOf('>') != -1 || condition.indexOf('<') != -1) { //Is major than or less than option
                                conditionType = (condition.indexOf('>') != -1) ? 'MORE THAN' : 'LESS THAN';
                                inputName = (conditionType === 'MORE THAN') ? condition.split('>')[0] : condition.split('<')[0];
                                value = (conditionType === 'MORE THAN') ? condition.split('>')[1] : condition.split('<')[1];
                            } else if (condition.indexOf('like') != -1) {
                                conditionType = 'LIKE';
                                inputName = condition.split('like')[0];
                                value = condition.split('like')[1];
                            } else if (condition.indexOf('_not_contain_') != -1 || condition.indexOf('_contain_') != -1) {
                                conditionType = (condition.indexOf('_not_contain_') != -1) ? 'NOT CONTAIN' : 'CONTAIN';
                                inputName = (conditionType === 'NOT CONTAIN') ? condition.split('_not_contain_')[0] : condition.split('_contain_')[0];
                                value = (conditionType === 'NOT CONTAIN') ? condition.split('_not_contain_')[1] : condition.split('_contain_')[1];
                            }
                            var isValueFromSF = inputName.indexOf('.') != -1 || isArsLogin;
                            var multicheckboxClass = "input-checkbox-" + inputName;
                            if (formId && formId.indexOf('form-custom-') == 0 || isValueFromSF) {
                                inputName = inputName + "[value]";                               
                            }
                            var valueFormInput = $('form#' + formId).find('input[name="' + inputName + '"]:not([type=radio],[type=checkbox])').val();
                            if ($('form#' + formId).find('input[name="' + inputName + '"]:not([type=radio],[type=checkbox])').length > 0) {
                                isValueFromSF = false;
                            }
                            if (valueFormInput === undefined || valueFormInput === null || $('form#' + formId).find('input[name="' + inputName + '"]:not([type=radio],[type=checkbox])').length === 0) {
                                valueFormInput = $('input[name="' + inputName + '"]:not([type=radio],[type=checkbox])').val();
                            }
                            var isTypeInputDate = $('form#' + formId).find('input[name="' + inputName + '"]').hasClass('date-picker-form-builder');
                            var valueFormatDate = '';
                            if (isTypeInputDate === true) {
                                valueFormatDate = $('form#' + formId).find('input[name="' + inputName + '"]').attr('data-short-date-pattern');
                            }
                            
                            var valueFormMultiSelect = $('form#' + formId).find('select[name="' + inputName + '[]"]').val();
                            var isMultiCheckBox = false;
                            var valueFormMultiCheckbox = null;
                            if ($('form#' + formId).find('input[type="checkbox"].' + multicheckboxClass).length > 0) {
                                isMultiCheckBox = true;
                                valueFormMultiCheckbox = $('form#' + formId).find('input[type="checkbox"].' + multicheckboxClass + ':checked');
                            }


                            
                            var valueFormSelect = $('form#' + formId).find('select[name="' + inputName + '"]').val();
                            var valueFormRC = $('form#' + formId).find('input[name="' + inputName + '"]:checked').val();
                            var checkboxProd = $('form#' + formId).find('input[name="' + inputName + '"]').prop('checked');
                            var valueFormCheckbox = checkboxProd !== null && typeof checkboxProd !== 'undefined' ? checkboxProd.toString() : '';
                            var valueFromSF = null;
                            var fieldIsNotVisible = $('form#' + formId).find('input[name="' + inputName + '"]').length > 0 && $('form#' + formId).find('input[name="' + inputName + '"]').hasClass('is-hidden') ||
                                $('form#' + formId).find('select[name="' + inputName + '"]').length > 0 && $('form#' + formId).find('select[name="' + inputName + '"]').hasClass('is-hidden') ||
                                $('form#' + formId).find('select[name="' + inputName + '[]"]').length > 0 && $('form#' + formId).find('select[name="' + inputName + '[]"]').hasClass('is-hidden');


                            if (isValueFromSF) {
                                valueFromSF = $('input[name="' + inputName + '"]:not([type=radio],[type=checkbox])').val();
                            }

                            var isValueSessionVariable = value.indexOf('s:') != -1;
                            if (isValueSessionVariable && $('input[name="' + value + '[value]"]:not([type=radio],[type=checkbox])').length > 0) {
                                value = $('input[name="' + value + '[value]"]:not([type=radio],[type=checkbox])').val();
                            }

                            var isRadioButtonList = false;
                            if ($('form#' + formId).find('input[name="' + inputName + '"][type="radio"]').length > 0) {
                                isRadioButtonList = true;
                            }

                            if (isRadioButtonList === true) {
                                valueFromSF = $('form#' + formId).find('input[name="' + inputName + '"][type="radio"]:checked').val();
                            }
                            if (!fieldIsNotVisible) {
                                if (conditionType === 'EQUAL') {
                                    if (isValueFromSF && valueFromSF != null) {
                                        var valueFromSFArray = valueFromSF.toLowerCase().split(';');
                                        if (value.toLowerCase() === valueFromSF.toLowerCase()) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        } else if (valueFromSFArray.length > 0) { // Validate when value from SF is multipicklist
                                            if (valueFromSFArray.indexOf(value.toLowerCase()) !== -1) {
                                                conditionsFulfilled = conditionsFulfilled + 1;
                                            }
                                        }
                                    } else if (inputName === 'subsite_path') {
                                        var subsiteCookie = getSubsiteDataCookie();
                                        if (subsiteCookie && subsiteCookie.enable === true && subsiteCookie.data) {
                                            if (subsiteCookie.data.Path === value) {
                                                conditionsFulfilled = conditionsFulfilled + 1;
                                            }
                                        }
                                    } else if (inputName === 'type_of_signup') {
                                        var arsSignUpType = localStorage.getItem('ars-signup-type');
                                        var ruleSignupType = "";

                                        if (arsSignUpType !== null && arsSignUpType !== '') {
                                            var objJson = JSON.parse(arsSignUpType);
                                            ruleSignupType = objJson.signupType;
                                        }

                                        if (value === ruleSignupType || value === "Both") {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }
                                    } else if (inputName == 'contact_email_exist') {

                                        var contactExist = undefined;
                                        var contactConditions = localStorage.getItem('ars-contact-conditions');

                                        if (contactConditions !== null && contactConditions !== '' && contactConditions !== undefined) {
                                            var objJson = JSON.parse(contactConditions);
                                            if (objJson !== undefined) {
                                                contactExist = objJson.contactExist + "";
                                            }
                                        }

                                        if (value === contactExist) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }

                                    } else if (inputName == 'contact_with_log_in_credentials_exists') {

                                        var alreadyRegistered = undefined;
                                        var contactConditions = localStorage.getItem('ars-contact-conditions');

                                        if (contactConditions !== null && contactConditions !== '' && contactConditions !== undefined) {
                                            var objJson = JSON.parse(contactConditions);
                                            if (objJson !== undefined) {
                                                alreadyRegistered = objJson.userAlreadyRegistered + "";
                                            }
                                        }

                                        if (value === alreadyRegistered) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }

                                    } else if (inputName === 'wrs_code' || inputName === 'wrs_code[value]') {
                                        var currentWRSCode = localStorage.getItem('wrscode');
                                        if (value === currentWRSCode) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }
                                    } else if (valueFormMultiSelect && valueFormMultiSelect.constructor === Array && valueFormMultiSelect.indexOf(value) !== -1) { //Validation for multiselect
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    }
                                    else if (isMultiCheckBox === true && valueFormMultiCheckbox !== null && valueFormMultiCheckbox !== undefined  && valueFormMultiCheckbox.length == 1) {
                                        valueFormMultiCheckbox.each(function () {
                                            let currentValue = $(this).val();
                                            if (value === currentValue) {
                                                conditionsFulfilled = conditionsFulfilled + 1;
                                            }
                                        });

                                    }
                                    else if (value === valueFormInput || value === valueFormSelect || value === valueFormRC || value === valueFormCheckbox) {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    }
                                }
                                else if (conditionType === 'NOT EQUAL EMPTY') {
                                    if (isValueFromSF && valueFromSF !== undefined && valueFromSF !== null && valueFromSF !== '') {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    }

                                    else if (inputName == 'contact_email_exist') {
                                        var contactExist = undefined;
                                        var contactConditions = localStorage.getItem('ars-contact-conditions');

                                        if (contactConditions !== null && contactConditions !== '' && contactConditions !== undefined) {
                                            var objJson = JSON.parse(contactConditions);
                                            if (objJson !== undefined) {
                                                contactExist = objJson.contactExist + "";
                                            }
                                        }

                                        if (contactExist !== undefined && contactExist !== null && contactExist !== '') {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }


                                    } else if (inputName === 'wrs_code' || inputName === 'wrs_code[value]') {
                                        var currentWRSCode = localStorage.getItem('wrscode');
                                        if (currentWRSCode !== null && currentWRSCode !== undefined && currentWRSCode !== '') {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }

                                    } else if (valueFormMultiSelect !== undefined && valueFormMultiSelect !== null && valueFormMultiSelect.constructor === Array && valueFormMultiSelect.length > 0) {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    } else if (isMultiCheckBox === true && valueFormMultiCheckbox !== null && valueFormMultiCheckbox !== undefined && valueFormMultiCheckbox.constructor === Array && valueFormMultiCheckbox.length > 0) {
                                        conditionsFulfilled = conditionsFulfilled + 1;

                                    } else if ((valueFormInput !== undefined && valueFormInput !== null && valueFormInput !== '') ||
                                        (valueFormSelect !== undefined && valueFormSelect !== null && valueFormSelect !== '')) {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    }
                                }
                                else if (conditionType === 'EQUAL EMPTY') {
                                    if (isValueFromSF && (valueFromSF === undefined || valueFromSF === null || valueFromSF === '')) {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    }
                                    else if (inputName == 'contact_email_exist') {
                                        var contactExist = undefined;
                                        var contactConditions = localStorage.getItem('ars-contact-conditions');

                                        if (contactConditions !== null && contactConditions !== '' && contactConditions !== undefined) {
                                            var objJson = JSON.parse(contactConditions);
                                            if (objJson !== undefined) {
                                                contactExist = objJson.contactExist + "";
                                            }
                                        }

                                        if (contactExist === undefined || contactExist === null || contactExist === '') {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }


                                    } else if (inputName === 'wrs_code' || inputName === 'wrs_code[value]') {
                                        var currentWRSCode = localStorage.getItem('wrscode');
                                        if (currentWRSCode === null || currentWRSCode === undefined || currentWRSCode === '') {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }

                                    } else if (valueFormMultiSelect !== undefined && valueFormMultiSelect !== null && valueFormMultiSelect.constructor === Array && valueFormMultiSelect.length == 0) {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    } else if (isMultiCheckBox === true && valueFormMultiCheckbox !== null && valueFormMultiCheckbox !== undefined && valueFormMultiCheckbox.constructor === Array && valueFormMultiCheckbox.length == 0) {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    } else if (!isValueFromSF && ((valueFormInput === undefined || valueFormInput === null || valueFormInput === '') ||
                                        (valueFormSelect === undefined || valueFormSelect === null || valueFormSelect === ''))) {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    }

                                }
                                else if (conditionType === 'NOT EQUAL') {
                                    if (isValueFromSF && valueFromSF != null) {
                                        var valueFromSFArray = valueFromSF.toLowerCase().split(';');
                                        if (value.toLowerCase() !== valueFromSF.toLowerCase()) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        } else if (valueFromSFArray.length > 0) { // Validate when value from SF is multipicklist
                                            if (valueFromSFArray.indexOf(value.toLowerCase()) === -1) {
                                                conditionsFulfilled = conditionsFulfilled + 1;
                                            }
                                        }
                                    } else if (inputName === 'subsite_path') {
                                        var subsiteCookie = getSubsiteDataCookie();
                                        if (subsiteCookie && subsiteCookie.enable === true && subsiteCookie.data) {
                                            if (subsiteCookie.data.Path !== value) {
                                                conditionsFulfilled = conditionsFulfilled + 1;
                                            }
                                        }
                                    } else if (inputName === 'type_of_signup') {
                                        var arsSignUpType = localStorage.getItem('ars-signup-type');
                                        var ruleSignupType = "";

                                        if (arsSignUpType !== null && arsSignUpType !== '') {
                                            var objJson = JSON.parse(arsSignUpType);
                                            ruleSignupType = objJson.signupType;
                                        }
                                        if (value !== ruleSignupType || value === "Both") {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }
                                    } else if (inputName == 'contact_email_exist') {

                                        var contactExist = undefined;
                                        var contactConditions = localStorage.getItem('ars-contact-conditions');

                                        if (contactConditions !== null && contactConditions !== '' && contactConditions !== undefined) {
                                            var objJson = JSON.parse(contactConditions);
                                            if (objJson !== undefined) {
                                                contactExist = objJson.contactExist + "";
                                            }
                                        }

                                        if (value !== contactExist) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }

                                    } else if (inputName == 'contact_with_log_in_credentials_exists') {

                                        var alreadyRegistered = undefined;
                                        var contactConditions = localStorage.getItem('ars-contact-conditions');

                                        if (contactConditions !== null && contactConditions !== '' && contactConditions !== undefined) {
                                            var objJson = JSON.parse(contactConditions);
                                            if (objJson !== undefined) {
                                                alreadyRegistered = objJson.userAlreadyRegistered + "";
                                            }
                                        }

                                        if (value !== alreadyRegistered) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }

                                    } else if (inputName === 'wrs_code') {
                                        var currentWRSCode = localStorage.getItem('wrscode');
                                        if (value !== currentWRSCode) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }
                                    } else if (valueFormMultiSelect && valueFormMultiSelect.constructor === Array && valueFormMultiSelect.indexOf(value) === -1) { //Validation for multiselect
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    }
                                    else if (isMultiCheckBox === true && valueFormMultiCheckbox !== null && valueFormMultiCheckbox !== undefined && valueFormMultiCheckbox.length > 0) {
                                        let found = false;
                                        valueFormMultiCheckbox.each(function () {
                                            let currentValue = $(this).val();
                                            if (value === currentValue) {
                                                
                                                found = true;
                                            }
                                        });
                                        if (found === false) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }
                                    }
                                    else if (value !== valueFormInput && value !== valueFormSelect && value !== valueFormRC && value !== valueFormCheckbox) {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    }

                                }
                                else if (conditionType === 'MULTICHECK INCLUDE' || conditionType === 'MULTICHECK NOT INCLUDE') {
                                    if (isValueFromSF && valueFromSF != null) {
                                        let valuesToEvaluate = value.split(',');
                                        let valuesFromSalesforce = valueFromSF.split(';');
                                        let found = false;
                                        for (let ie = 0; ie < valuesToEvaluate.length; ie++) {
                                            if (valuesFromSalesforce.includes(valuesToEvaluate[ie]))
                                                found = true;
                                        }
                                        if (conditionType === 'MULTICHECK INCLUDE') {
                                            if (found === true)
                                                conditionsFulfilled = conditionsFulfilled + 1;
                                        } else if (conditionType === 'MULTICHECK NOT INCLUDE') {
                                            if (found === false)
                                                conditionsFulfilled = conditionsFulfilled + 1;
                                        }
                                    }
                                }
                                else if (conditionType === 'MORE THAN' || conditionType === 'LESS THAN' || conditionType === 'MORE THAN OR EQUALS' || conditionType === 'LESS THAN OR EQUALS') {

                                    if (isValueFromSF && valueFromSF != null) {
                                        valueFormInput = valueFromSF;
                                    }

                                    var isDateValue = ((valueFormInput !== null && valueFormInput !== undefined && valueFormInput.indexOf('-') != -1) || isTypeInputDate === true);
                                    var valCompare = null;
                                    if (valueFormatDate === '')
                                        valueFormatDate = 'YYYY-M-D';
                                    if (isDateValue) {
                                        //Parse value of date to int years
                                        valueFormatDate = valueFormatDate.toUpperCase();
                                        var convertedDate = moment(valueFormInput, valueFormatDate, true);
                                        var yearsAgo = moment().diff(convertedDate, "years");
                                        valCompare = parseInt(yearsAgo);
                                    } else {
                                        if (valueFormInput !== null && valueFormInput !== null && valueFormInput !== '')
                                            valCompare = parseInt(valueFormInput);
                                    }
                                    if (valCompare !== null) {
                                        var valueInt = parseInt(value);

                                        if (conditionType.indexOf('MORE THAN') > -1) {

                                            if (conditionType === 'MORE THAN') {
                                                if (valCompare > valueInt) {
                                                    conditionsFulfilled = conditionsFulfilled + 1;
                                                }
                                            } else {
                                                if (valCompare >= valueInt) {
                                                    conditionsFulfilled = conditionsFulfilled + 1;
                                                }
                                            }

                                        } else {
                                            if (conditionType === "LESS THAN") {
                                                if (valCompare < valueInt) {
                                                    conditionsFulfilled = conditionsFulfilled + 1;
                                                }
                                            } else {
                                                if (valCompare <= valueInt) {
                                                    conditionsFulfilled = conditionsFulfilled + 1;
                                                }
                                            }
                                        }

                                    }
                                }
                                else if (conditionType === 'LIKE') {

                                    var contactConditions = localStorage.getItem('ars-contact-email-contains');
                                    if (contactConditions) {
                                        var n = contactConditions.includes(value);
                                        if (n) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }
                                    }
                                }
                                else if (conditionType === 'NOT CONTAIN') {
                                    var contactConditions = localStorage.getItem('ars-contact-email-contains');
                                    if (contactConditions) {
                                        var n = contactConditions.includes(value);
                                        if (!n) {
                                            conditionsFulfilled = conditionsFulfilled + 1;
                                        }
                                    }

                                }
                                else if (conditionType === 'CONTAIN') {
                                    if (valueFormInput !== null && valueFormInput !== undefined && valueFormInput.includes(value)) {
                                        conditionsFulfilled = conditionsFulfilled + 1;
                                    } else {
                                        var contactConditions = localStorage.getItem('ars-contact-email-contains');
                                        if (contactConditions) {
                                            var n = contactConditions.includes(value);
                                            if (n) {
                                                conditionsFulfilled = conditionsFulfilled + 1;
                                            }
                                        }

                                    }
                                }
                            }
                        });


                        //Meet condition depending of type and redirect to page of redirect to
                        if (typeConditions === 'ALL') {
                            if (countConditions === conditionsFulfilled) {
                                branchLogicInputRedirect.val(redirectTo);
                                meetConditions = true;
                            }
                        }
                        else if (typeConditions === 'OR') {
                            if (conditionsFulfilled > 0) {
                                branchLogicInputRedirect.val(redirectTo);
                                meetConditions = true;
                            }
                        }
                    }
                    else if ((conditions == "" || conditions == null) && redirectTo != null && redirectTo != "") {
                        branchLogicInputRedirect.val(redirectTo);
                        meetConditions = true;

                    }
                }

            }

        });
    }
}

function volunteer_registration_populate_form() {
    if ($('#volunteer-register-form').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);

        //Populate form if exists values of branch logic local storage
        var path = window.location.pathname;

        //Validation if is sharingPortalPlus
        if (urlSite !== '') {
            path = path.replaceAll(urlSite, '');
        }

        var parameters = path.split("/");
        //validate if url page have id and form load via facebook or SSO
        var isExternalRegistration = parameters.length > 2;

        $.ajax({
            type: 'GET',
            url: urlSite + '/ARS/getSiteId',
            beforeSend: function () {
                $('.processing_screen').show();
            },
            success: function (data) {
                var siteId = data;
                var valuesForm = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                var useStorageValues = true;


                if (valuesForm) {

                    var isRelatedToSocialLogin = valuesForm.isSocialLoginSource !== undefined && valuesForm.isSocialLoginSource == "1";
                    var isRelatedToSSO = valuesForm.isSSOSource !== undefined && valuesForm.isSSOSource == "1";

                    if (isExternalRegistration === true) {
                        if (isRelatedToSocialLogin === false && isRelatedToSSO === false)
                            useStorageValues = false;
                    } else {
                        if (isRelatedToSSO === true || isRelatedToSocialLogin === true)
                            useStorageValues = false;
                    }

                    if (useStorageValues) {
                        //Iterate all values and assign values
                        jQuery.each(valuesForm, function (key, value) {
                            if (value != '') {
                                var valueIsArray = value.constructor === Array;
                                var formVolunteer = $('#volunteer-register-form');

                                if (key === 'date_of_birth') {
                                    //Fix value to format MM-DD-YYYY
                                    var birthFormat = moment(value).format('YYYY-M-D');
                                    var input = formVolunteer.find('input[name="' + key + '"]');
                                    input.val(birthFormat);
                                    _validate_parental_consent();
                                }
                                else if (key === 'state_text') {
                                    var input = formVolunteer.find('input[name="' + key + '"]');
                                    input.parents('.row').first().css('display', 'block');
                                    input.val(value);

                                    //Hide state field
                                    var inputState = formVolunteer.find('select[name="state"]');
                                    inputState.parents('.row').first().css('display', 'none');
                                }
                                else if (key === 'phone' || key === 'work_phone' || key === 'mobile_phone' || key === 'other_phone') {
                                    value = valuesForm['international_' + key];
                                    var nameInput = key;
                                    formVolunteer.find('input[name="' + key + '"]').val(value);
                                    var telInput = formVolunteer.find('input[name="' + key + '"]').get(0);
                                    var field = formVolunteer.find('input[name="' + key + '"]');
                                    window.intlTelInput(telInput, {
                                        allowDropdown: true,
                                        initialCountry: window.IsoPhone,
                                        preferredCountries: [window.IsoPhone],
                                        utilsScript: "/js/vendors/intl-tel-utils.js"
                                    });
                                    //var iti = window.intlTelInputGlobals.getInstance(telInput);

                                    if (formVolunteer.find('input[name="international_' + nameInput + '"]').length > 0) {
                                        formVolunteer.find('input[name="international_' + nameInput + '"]').val(value);
                                        //iti.setNumber(value);
                                    }

                                    fix_validate_phone_field_after_country_change(telInput, field, false, false, formVolunteer, nameInput);

                                    //formVolunteer.find('input[name="' + key + '"]').intlTelInput('setNumber', value);

                                }
                                else if (formVolunteer.find('input[name="' + key + '"]').length > 0) {
                                    var input = formVolunteer.find('input[name="' + key + '"]');
                                    var type = input.attr('type');

                                    if (type === 'text' || type === 'hidden' || type === 'number') {
                                        input.val(value);

                                        if (key == "email" && value != '')
                                            input.data('original-value', value);
                                    }
                                    else if (type === 'radio' || type === 'checkbox') {
                                        if (valueIsArray) {
                                            value.forEach(function (val) {
                                                input = formVolunteer.find('input[name="' + key + '"][value="' + val + '"]');
                                                input.prop('checked', true);
                                            });
                                        }
                                        else {
                                            input = formVolunteer.find('input[name="' + key + '"][value="' + value + '"]');
                                            input.prop('checked', true);
                                        }
                                    }
                                }
                                else if (formVolunteer.find('select[name="' + key + '"]').length > 0) {
                                    var select = formVolunteer.find('select[name="' + key + '"]');

                                    select.val(value);

                                    if (select.attr('multiple') === 'multiple') {
                                        select.multiselect('reload');
                                    }
                                }
                                else if (formVolunteer.find('textarea[name="' + key + '"]').length > 0) {
                                    var textarea = formVolunteer.find('textarea[name="' + key + '"]');
                                    textarea.val(value);
                                }
                            }
                        });

                        volunteer_signup_fixes();
                    }
                }

                $('.processing_screen').hide();
            }
        });
    }
}

function waiver_block_events() {
    if ($('.waiverBlock').length > 0) {
        $('.waiverBlock').each(function () {
            var self = $(this);
            checkbox_validate(self);
        });
    }
}


function LoadDataComplianceProgressForm() {
    if ($("body form.isComplianceForm").length > 0) {
        var selector = "form.isComplianceForm";
        var dataProgress = $(selector + " input[name='DataComplianceProgress']").val();

        if (dataProgress != null && dataProgress != "") {
            var progressForm = JSON.parse(dataProgress);

            $.each(progressForm, function (field, value) {
                if (typeof (value.type) !== 'undefined') {
                    var type = value.type;
                    if ($("" + selector + " input[name='" + field + "[value]']").length > 0 || $("" + selector + " select[name='" + field + "[value]']").length > 0 ||
                        $("" + selector + " select[name='" + field + "[value][]']").length > 0 || $("" + selector + " textarea[name='" + field + "[value]']").length > 0) {
                        var conditionTextField = type == "datetime" || type == "text" || type == "textbox" || type == "number" || type == "hidden" || type == "email";

                        if (type == "file") {
                            if (typeof (value.value) !== 'undefined') {
                                var valueField = value.value;
                                var fileName = getParameterByNameFromURL("file", valueField);
                                if (valueField !== "") {
                                    $('label.file-upload').text(window.translation.upload_a_new_file);
                                    var filename = window.translation.current_file + ' <a href="' + valueField + '" target="_blank">' + fileName + '</a>';
                                    $('.file-upload-name').html(filename);
                                }
                            }
                        }
                        else if (type == "textarea") {
                            if (typeof (value.value) !== 'undefined') {
                                var valueField = value.value;
                                if (valueField !== "") {
                                    $("" + selector + " textarea[name='" + field + "[value]']").val(valueField);
                                }
                            }
                        }
                        else if (type == "tel") {
                            if (typeof (value.value) !== 'undefined') {
                                var valueField = value.value;
                                if (valueField !== "") {
                                    $("" + selector + " input[name='" + field + "[value]']").val(valueField);
                                }
                            }
                        }
                        else if (conditionTextField) {
                            if (typeof (value.value) !== 'undefined') {
                                var valueField = value.value;
                                if (valueField !== "") {
                                    $("" + selector + " input[name='" + field + "[value]']").val(valueField);
                                }
                            }
                        }
                        else if (type == "select") {
                            if (typeof (value.value) !== 'undefined') {
                                var valueField = value.value;
                                if (valueField !== "") {
                                    $("" + selector + " select[name='" + field + "[value]']").val(valueField);
                                }
                            }
                        }
                        else if (type == "checkbox") {
                            if (typeof (value.value) !== 'undefined') {
                                var valueField = value.value;
                                if (valueField !== "") {
                                    if (valueField == "true") {
                                        $("" + selector + " input[name='" + field + "[value]']").prop("checked", true);
                                    } else {
                                        $("" + selector + " input[name='" + field + "[value]']").prop("checked", false);
                                    }
                                }
                            }
                        }
                        else if (type == "radio") {
                            if (typeof (value.value) !== 'undefined') {
                                var valueField = value.value;
                                if (valueField !== "") {
                                    $("" + selector + " input[name='" + field + "[value]'][value='" + valueField + "']").prop("checked", true);
                                }
                            }
                        }
                        else if (type == "multiple") {
                            if (typeof (value.value) !== 'undefined') {
                                var valueField = value.value;
                                if (valueField !== "") {
                                    var band = 0;
                                    valueField.forEach(function (item) {
                                        if (item !== "") {
                                            $("" + selector + " select[name='" + field + "[value][]'] option[value='" + item + "']").attr("selected", true);
                                            band++;
                                        }
                                    });

                                    if (band > 0) {
                                        $("" + selector + " select[name='" + field + "[value][]']").multiselect('reload');
                                    }
                                }
                            }
                        }
                    }
                }
            });
            $(this).find('.processing_screen').addClass('hide-custom');
        }
    }
}

function getParameterByNameFromURL(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

function saveComplianceProgressForm() {
    $(document).on('click', 'a.continue-later', function () {
        var self = $(this);
        var _formId = self.closest('.formBlock').data('form-id');
        var _form = self.closest('.formBlock').find('form.isComplianceForm');
        var formForm = _form.serializeJSON();
        formForm['formId'] = _formId;
        var Serializedform = _form.serialize();
        var fileUploads = _form.find('input[type="file"]');

        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);

        if (fileUploads.length > 0) {
            var xhrs = [];
            var undCounter = 0;
            self.closest('.formBlock').find('.spinner').show();
            self.closest('.formBlock').find('.processing_screen').show();

            $.each(fileUploads, function (i, f) {
                var files = fileUploads[i].files;
                var private = fileUploads[i].getAttribute('data-private');
                var fileFormId = fileUploads[i].getAttribute('data-form-id');
                var requiresLogin = fileUploads[i].getAttribute('data-requires-login');
                var libraryId = fileUploads[i].getAttribute('data-library-id');
                var saveToSalesforce = fileUploads[i].getAttribute('data-save-to-salesforce');
                var fileUrl = '';

                if (files.length > 0) {
                    if (window.FormData !== undefined) {
                        var data = new FormData();
                        data.append("private", private);
                        data.append("formId", fileFormId);
                        data.append("requiresLogin", requiresLogin);
                        data.append("libraryId", libraryId);
                        data.append("saveToSalesforce", saveToSalesforce);
                        for (var x = 0; x < files.length; x++) {
                            data.append("file" + x, files[x]);
                        }
                        //This behavior seems to be deprecated. The changes of LHH-20919 were not added here
                        var xhr = $.ajax({
                            type: "POST",
                            url: urlSite + "/ARS/UploadFile",
                            contentType: false,
                            processData: false,
                            data: data
                        }).done(function (data) {
                            fileUrl = '';
                            var jsonResult = JSON.parse(data);

                            if (jsonResult.status == '200') {
                                if (jsonResult.Urls != "" && jsonResult.Urls != null) {

                                    jsonResult.Urls.forEach(function (item) {
                                        if (item.fileUrl != '' && item.fileUrl != null) {
                                            if (fileUrl == '') {
                                                fileUrl = item.fileUrl;
                                            }
                                            else {
                                                fileUrl = fileUrl + ',' + item.fileUrl;
                                            }
                                        }
                                    });
                                }
                            }
                            var name = f.name.substring(0, f.name.indexOf('['));
                            formForm[name].value = fileUrl;

                            return false;
                        });

                        xhrs.push(xhr);

                    } else {
                        var name = f.name.substring(0, f.name.indexOf('['));
                        formForm[name].value = fileUrl;
                        undCounter = undCounter + 1;
                    }
                } else {

                    //Validating if form is compliance
                    if (_form.hasClass("isComplianceForm")) {
                        var name = f.name.substring(0, f.name.indexOf('['));
                        var url_saved = "";
                        if (_form.find("input[name='" + name + '_url_file' + "']").length > 0) {
                            url_saved = _form.find("input[name='" + name + '_url_file' + "']").val();
                        }
                        formForm[name].value = url_saved;
                    }
                }
            });

            $.when.apply($, xhrs).done(function () {
                undCounter = 0;
                save_continue_later_form(self, formForm);
            });

            if (undCounter > 0) {
                save_continue_later_form(self, formForm);
            }
        } else {
            save_continue_later_form(self, formForm);
        }
    });
}

function save_continue_later_form(self, formForm) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    var jsonData = [];

    $.ajax({
        method: "POST",
        url: urlSite + "/Compliance/SaveProgress",
        data: { jsonData: JSON.stringify(formForm) },
        beforeSend: function () {
            if (!self.closest('.formBlock').find('.submit-button').hasClass('disabled')) {
                self.closest('.formBlock').find('.submit-button').addClass('disabled');
            }
            self.closest('.formBlock').find('.spinner').show();
            self.closest('.formBlock').find('.processing_screen').show();
        }
    }).done(function (data) {
        jsonData = JSON.parse(data);

        if (jsonData.status == 'error') {

            Swal.fire({
                title: '',
                icon: 'error',
                text: jsonData.results,
                confirmButtonText: 'Ok',
                closeOnConfirm: true
            }).then(function (result) {
                if (self.closest('.formBlock').find('.submit-button').hasClass('disabled')) {
                    self.closest('.formBlock').find('.submit-button').removeClass('disabled');
                }
                self.closest('.formBlock').find('.spinner').hide();
                self.closest('.formBlock').find('.processing_screen').hide();
                window.location.reload();
            });

        }
        else {
            $.growl.notice({
                title: window.translation.success_flsmsg,
                message: window.translation.changes_have_been_saved
            });

            if (self.closest('.formBlock').find('.submit-button').hasClass('disabled')) {
                self.closest('.formBlock').find('.submit-button').removeClass('disabled');
            }
            self.closest('.formBlock').find('.spinner').hide();
            self.closest('.formBlock').find('.processing_screen').hide();
        }

        return false;
    });
}




function event_validation_modal_login() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    if ($('#login-register-modal').length > 0) {
        var isSubsite = $('#isSubsite').val();
        var loginButtonModal = $('#login-register-modal').find('.modal-login-button').first();
        var pathname = encodeURIComponent(window.location.pathname);

        if (loginButtonModal.length > 0) {
            loginButtonModal.attr('href', '#'); //Remove href
            $('#login-register-modal').on('click', '.modal-login-button', function () {
                $('#login-register-modal').foundation('close'); //Close modal of message
                $('body').find('.login-section').find('.login_button').trigger('click'); //Open modal login
                $('#login-modal').find('form').find('input[name="returnurl"]').val(window.location.pathname); //Update redirect url field in modal


                let isMultiSignup = false;
                let isOneStep = false;

                if ($('input[name="multisignupmode"].multi-sign-up-flag').length > 0) {
                    isMultiSignup = $('input[name="multisignupmode"].multi-sign-up-flag').is(':checked');
                }

                if (isMultiSignup === true || $('.occurrenceSelectedBeforeLogin').length > 0)
                    isOneStep = true;

                if (isOneStep == true) {

                    let occurrenceSelectedBeforeLogin = undefined;
                    let hasGroupedOccurrences = false;
                    let isSignUpWithTeam = false;
                    let waitlistAllowed = false;
                    let waitlistSelected = false;
                    let hasARS = false;
                    let confirmationUrl = "opportunity-signup-confirmation";
                    let options = '';
                    let occurrenceARSname = "";

                    if (isMultiSignup == true) {
                        occurrenceSelectedBeforeLogin = get_selected_occs_multi_signup();
                        confirmationUrl = "opportunity-multi-signup-confirmation";
                        $('input[name="multisignupmode"].multi-sign-up-flag').addClass('onestep');

                        // take care if the user uses socialLogin or SSO
                        let currentPath = window.location.pathname;
                        let valuesPath = currentPath.split('/');

                        let firstCheck = $('table#multi-sign-up-table tr input.check-connection:checked').first().val();
                        let occValueParts = firstCheck.split('#')
                        options = "isMultiSignUp=true&firstOccId=" + occValueParts[0] + "&itemsId=" + get_selected_occs_multi_signup() + "&";

                    }
                    else {
                        occurrenceSelectedBeforeLogin = $('.occurrenceSelectedBeforeLogin').closest('.row.fieldset-step').find('.occurrence-id').val();
                        isSignUpWithTeam = $('.occurrenceSelectedBeforeLogin').hasClass('signup-team2');
                        waitlistAllowed = $('.occurrenceSelectedBeforeLogin').closest('.row').find('.waitlistAllowed').val();
                        hasGroupedOccurrences = $('.occurrenceSelectedBeforeLogin').closest('.row').find('p.grouped-occurrence-message').length > 0;
                        waitlistSelected = $('.occurrenceSelectedBeforeLogin').hasClass('waitlist-button');
                        occurrenceARSname = $('.occurrenceSelectedBeforeLogin').closest('.row').find('.occurrenceARSname').val();

                        if (waitlistSelected) {
                            confirmationUrl = "opportunity-waitlist-confirmation";
                        }
                        else if ($(".express-interest-block").length > 0) {
                            confirmationUrl = "express-interest-confirmation-page";
                        }
                        else if ($(".express-interest-only-block").length > 0) {
                            confirmationUrl = "express-interest-only-confirmation";
                        }
                        else if ($("div.grouped-occurrence-box").length > 0) {
                            confirmationUrl = "grouped-occurrences-confirmation";
                        }
                        else if ($("div.grouped-occurrence-box-express-interest").length > 0) {

                            confirmationUrl = "grouped-occ-express-interest-confirmation";
                        }
                    }

                    let hasQuestions = $('#signup-questions').find('.question').length > 0 ? true : false;
                    let hasPrerequisite = $('#prerequisite-opportunity').length > 0 ? true : false;

                    let isISO = $('#iso-selector').length > 0 ? true : false;
                    if ($('.opportunity-detail-content input.branch-logic-info').length > 1) {
                        hasARS = true;
                    }

                    let returnOccSelectedBeforeLogin = hasQuestions || hasPrerequisite || hasARS || hasGroupedOccurrences || isISO;

                    confirmationUrl += "?occId=" + occurrenceSelectedBeforeLogin;

                    options += 'occSelectedBeforeLogin=' + occurrenceSelectedBeforeLogin;

                    if (returnOccSelectedBeforeLogin)
                        options += "&returnOccSelectedBeforeLogin=true";

                    if (!isSignUpWithTeam && !returnOccSelectedBeforeLogin)
                        options += "&confirmationUrl=" + encodeURIComponent(confirmationUrl);

                    if (isSignUpWithTeam)
                        options += "&signUpBeforeLoginWTeam=true";
                    if (!returnOccSelectedBeforeLogin)
                        options += "&waitlistAllowed=" + waitlistAllowed;
                    if (occurrenceARSname != "")
                        options += "&occurrenceARSname=" + occurrenceARSname;



                    $("form.social-networks-login").find('.oneStepSignUpInfo').val(encodeURIComponent(options));
                    if ($(".SSO_login").length > 0) {
                        var currentHref = $('a.SSO_login_button').prop("href");
                        if (currentHref !== null && currentHref !== undefined && currentHref.indexOf(encodeURIComponent(options)) == -1) {
                            $('a.SSO_login_button').prop("href", currentHref + '?oneStepSignUpInfo=' + encodeURIComponent(options));
                        }
                    }
                    return false;
                }

                return false;
            });
        }

        if (($('body').hasClass('volunteer-opportunity-detail-page') || $('body').hasClass('volunteer-opportunity-detail-page-v3') || $('body').hasClass('volunteer-opportunity-detail-page-v2')) && !$('body').hasClass('logged')) {
            $('#login-register-modal').on('click', '.modal-register-button', function () {

                let isMultiSignup = false;
                let isOneStep = false;
                var buttonUrl = $(this).attr('href');
                if ($('input[name="multisignupmode"].multi-sign-up-flag').length > 0) {
                    isMultiSignup = $('input[name="multisignupmode"].multi-sign-up-flag').is(':checked');
                }

                if (isMultiSignup === true || $('.occurrenceSelectedBeforeLogin').length > 0)
                    isOneStep = true;

                if (isOneStep == true) {

                    let occurrenceSelectedBeforeLogin = undefined;
                    let hasGroupedOccurrences = false;
                    let isSignUpWithTeam = false;
                    let waitlistAllowed = false;
                    let multiSignupParameters = '';
                    let occurrenceARSname = "";

                    if (isMultiSignup == true) {
                        occurrenceSelectedBeforeLogin = get_selected_occs_multi_signup();
                        confirmationUrl = "opportunity-multi-signup-confirmation";
                        $('input[name="multisignupmode"].multi-sign-up-flag').addClass('onestep');

                        let firstCheck = $('table#multi-sign-up-table tr input.check-connection:checked').first().val();
                        let occValueParts = firstCheck.split('#')
                        multiSignupParameters = "&isMultiSignUp=true&firstOccId=" + occValueParts[0] + "&itemsId=" + get_selected_occs_multi_signup() + "&";

                    } else {
                        occurrenceSelectedBeforeLogin = $('.occurrenceSelectedBeforeLogin').closest('.row.fieldset-step').find('.occurrence-id').val();
                        occurrenceARSname = $('.occurrenceSelectedBeforeLogin').closest('.row.fieldset-step').find('.occurrence-arsname').val();
                        hasGroupedOccurrences = $('.occurrenceSelectedBeforeLogin').closest('.row').find('p.grouped-occurrence-message').length > 0;
                        isSignUpWithTeam = $('.occurrenceSelectedBeforeLogin').hasClass('signup-team2');
                        waitlistAllowed = $('.occurrenceSelectedBeforeLogin').closest('.row').find('.waitlistAllowed').val();
                    }

                    let hasQuestions = $('#signup-questions').find('.question').length > 0 ? true : false;
                    let hasPrerequisite = $('#prerequisite-opportunity').length > 0 ? true : false;


                    let isISO = $('#iso-selector').length > 0 ? true : false;
                    let hasARS = false;

                    if ($('.opportunity-detail-content input.branch-logic-info').length > 1) {
                        var redirectTo = $('.opportunity-detail-content input.branch-logic-info').first().data('redirectto');
                        redirectTo = (redirectTo) ? redirectTo.split('?')[0] : redirectTo;  //  Fix to compare path without params
                        var isSuccessPage = $('.opportunity-detail-content input.branch-logic-info').first().data('issuccess');

                        if (redirectTo !== '/individual-signup-confirmation') {
                            hasARS = true;
                        }
                    }

                    let returnOccSelectedBeforeLogin = hasQuestions || hasPrerequisite || hasARS || hasGroupedOccurrences || isISO || isMultiSignup;


                    var waitlistSelected = $('.occurrenceSelectedBeforeLogin').hasClass('waitlist-button');
                    var confirmationUrl = "/opportunity-signup-confirmation";
                    if (waitlistSelected) {
                        confirmationUrl = "/opportunity-waitlist-confirmation";
                    }
                    else if ($(".express-interest-block").length > 0) {
                        confirmationUrl = "/express-interest-confirmation-page";
                    }
                    else if ($(".express-interest-only-block").length > 0) {
                        confirmationUrl = "/express-interest-only-confirmation";
                    }
                    else if ($("div.grouped-occurrence-box").length > 0) {
                        confirmationUrl = "/grouped-occurrences-confirmation";
                    }
                    else if ($("div.grouped-occurrence-box-express-interest").length > 0) {

                        confirmationUrl = "/grouped-occ-express-interest-confirmation";
                    }
                    confirmationUrl += "?occId=" + occurrenceSelectedBeforeLogin;

                    //var url = urlSite + '/volunteer-sign-up?occSelectedBeforeLogin=' + occurrenceSelectedBeforeLogin + multiSignupParameters;
                    var url = urlSite + buttonUrl + '?occSelectedBeforeLogin=' + occurrenceSelectedBeforeLogin + multiSignupParameters;

                    // If the opp has questions, prerequisite, ARS or grouped occurrences, the user will be redirected
                    // to the occ after registration
                    if (returnOccSelectedBeforeLogin)
                        url += "&returnOccSelectedBeforeLogin=true";
                    // If the opp DOESN'T have questions, prerequisite, ARS or grouped occurrences,
                    // and is not a team signup, the user will be  
                    // signed up in the occ automatically and redirected to the confirmationUrl
                    if (!isSignUpWithTeam && !returnOccSelectedBeforeLogin)
                        url += "&confirmationUrl=" + encodeURIComponent(confirmationUrl);
                    // If the user chose to signup with a team, it could be redirected to opportunity-signup-team
                    // Or back the occ page if it has questions, prerequisite, ARS or grouped occurrences

                    if (isSignUpWithTeam === true) {
                        url += "&signUpBeforeLoginWTeam=true";
                    }
                    if (!returnOccSelectedBeforeLogin)
                        url += "&waitlistAllowed=" + waitlistAllowed;

                    if (occurrenceARSname != "")
                        url += "&occurrenceARSname=" + occurrenceARSname;

                    window.location = url;
                    return false;
                }
            });
        }
    }
}


function _validate_donation_block(siteId) {
    var validDonation = true;
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    if ($('.donationBlock').length > 0) {
        $('.donationBlock').each(function () {
            var self = $(this);
            if ($(this).find('form[name="donation-form"]').hasClass('already_donated') == false) {
                var donationId = self.attr('data-block-id');
                var formDonation = self.find('form[name="donation-form"]');
                var labelErrors = self.find('label.error:visible');
                var isMandatory = self.find('input[name="is_mandatory"]').val();
                var isRecurring = self.find('input[name="is_recurring"]').val();
                var installment = self.find('input[name="installment"]').val();
                var frecuency = self.find('input[name="frecuencyDonation"]:checked').length;
                var amount = self.find('input[name="amountField"]:checked').length;
                var amountValue = self.find('input[name="amountField"]:checked').val();
                var otherAmount = self.find('input[name="amount_other_value"]').val();
                var paymentsProcessor = self.find('input[name="payments_processor"]').val();
                var topRedirect = '';
                var currentScrollTopUser = $(document).scrollTop();
                var prefer_not_donate = (self.find('input[name="prefer_not_donate"]').length > 0) ? self.find('input[name="prefer_not_donate"]').prop('checked') : false;
                var workflowId = $('input.branch-logic-info').first().attr('data-workflow');

                if (isMandatory === 'True' || (_validate_donation_form_empty(formDonation) === false && isMandatory === 'False' && prefer_not_donate === false)) {
                    if (!formDonation.valid() || labelErrors.length > 0 || (amountValue === 'Other Amount' && (otherAmount === '' || otherAmount === null))) {
                        validDonation = false;

                        if (amountValue === 'Other Amount' && (otherAmount === '' || otherAmount === null)) {

                            Swal.fire({
                                title: window.translation.missing_values,
                                icon: 'warning',
                                text: window.translation.please_complete_valid_amount,
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true

                            }).then(function (result) {
                                topRedirect = self.find('.amount_listing').first().offset().top;

                                $('body,html').animate({
                                    scrollTop: (topRedirect > 50) ? topRedirect - 50 : topRedirect,
                                }, 1000
                                );

                            });

                        }
                        else if (!formDonation.valid()) {
                            if (self.find('label.error:visible').length > 0) {
                                topRedirect = self.find('label.error:visible').first().offset().top;
                            }
                            else if (self.find('label.error-custom:visible').length > 0) {
                                topRedirect = self.find('label.error-custom:visible').first().offset().top;
                            }

                            if (currentScrollTopUser != topRedirect) {
                                $('body,html').animate({
                                    scrollTop: topRedirect - 100,
                                }, 500);
                            }
                        }
                    }
                }

                //Only if is valid the form
                if (validDonation === true) {
                    if (_validate_donation_form_empty(formDonation) === false && prefer_not_donate === false) {
                        if (formDonation.valid()) {
                            var donationForm = formDonation.serializeObject();

                            if (isRecurring == 'True') {
                                donationForm['installment'] = installment;
                            }

                            $.ajax({
                                method: 'POST',
                                url: urlSite + '/ARS/SendDonation',
                                data: donationForm,
                                beforeSend: function () {
                                    self.find('processing_donation_form').show();
                                },
                                async: false
                            }).done(function (data) {
                                var jsonResult = JSON.parse(data);

                                if (jsonResult) {
                                    if (jsonResult.status === '200') {
                                        var messageSuccess = '';

                                        //Save in localStorage transactionId
                                        if (workflowId) {
                                            var typeBranchLogic = $('input.branch-logic-info').first().attr('data-type');
                                            switch (typeBranchLogic) {
                                                case 'REGISTRATION':
                                                    var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                                                    break;
                                                case 'SIGNUP':
                                                    var formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                                                    break;
                                                case 'PARTNER_REGISTRATION':
                                                    var formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));;
                                                    break;
                                                case 'BASIC_LOG_IN':
                                                    var formData = JSON.parse(localStorage.getItem('login-branch-logic-form-data-' + siteId));
                                                    break;
                                                default:
                                                    var formData = null;
                                            }
                                            if (formData != null) {
                                                formData['donationTransactionId'] = jsonResult.transactionId;
                                            }
                                            if (jsonResult.transactionAmount) {
                                                formData['donationAmount'] = jsonResult.transactionAmount
                                            }
                                            if (jsonResult.transactionAuthorizationId) {
                                                formData['donationAuthorizationId'] = jsonResult.transactionAuthorizationId
                                            }

                                            if (typeBranchLogic === 'REGISTRATION') {
                                                _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, formData);
                                            }
                                            else if (typeBranchLogic === 'PARTNER_REGISTRATION') {
                                                _assign_value_json_local_storage('partner-branch-logic-form-data-' + siteId, formData);
                                            }
                                            else if (typeBranchLogic === 'BASIC_LOG_IN') {
                                                _assign_value_json_local_storage('login-branch-logic-form-data-' + siteId, formData);
                                            }
                                            else {
                                                _assign_value_json_local_storage('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId, formData);
                                            }
                                        }

                                        if (jsonResult.paymentsProcessor == 'PAYPAL') {
                                            messageSuccess = window.translation.donation_success_paypal;
                                        }
                                        else {
                                            messageSuccess = window.translation.donation_success;
                                        }

                                        if (messageSuccess) {

                                            Swal.fire({
                                                title: window.translation.success,
                                                text: messageSuccess,
                                                icon: "success",
                                                confirmButtonText: 'Ok',
                                                closeOnConfirm: true
                                            }).then(function (result) {
                                                return validDonation;
                                            });

                                        }
                                    }
                                    else {
                                        self.find('processing_donation_form').hide();
                                        validDonation = false;

                                        Swal.fire({
                                            title: 'Error',
                                            icon: 'error',
                                            text: jsonResult.message,
                                            confirmButtonText: 'Ok',
                                            closeOnConfirm: true
                                        });
                                    }
                                }
                                else {
                                    self.find('processing_donation_form').hide();
                                    validDonation = false;
                                }
                            });
                        }
                    }
                }
            }
        });
    }

    return validDonation;
}

function _validate_check_waiver_blocks(siteId) {
    var validWaivers = true;

    if ($('.waiverBlock').length > 0) {
        var topPage = 0;

        $('.waiverBlock').each(function () {
            var self = $(this);
            var checkboxInput = $(this).find('.left').find('input[type="checkbox"]');
            var salesforceField = self.find('input.sf_field').val();
            var salesforceObject = self.find('input.sf_object').val();

            //Variables added for helping center "Associated with Empower Sioux Falls""
            var leftParent = checkboxInput.closest('.left');
            var rightSibling = leftParent.next('.right');
            var isHelpCenter = rightSibling.find('p').hasClass('help-center');

            //Validate if checkbox is checked and else display validation message
            if (checkboxInput.prop('checked') === false && !isHelpCenter) {
                self.find('label.validation-message').css('display', 'block');
                topPage = self.offset().top;
                validWaivers = false;
            }
            else {
                //Validation added for helping center "Associated with Empower Sioux Falls""
                if (!isHelpCenter) {
                    self.find('label.validation-message').css('display', 'none');
                }

                //Save waiver field in localStorage
                var typeBranchLogic = $('input.branch-logic-info').first().attr('data-type');
                var workflowId = $('input.branch-logic-info').first().attr('data-workflow');
                switch (typeBranchLogic) {
                    case 'REGISTRATION':
                        var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                        break;
                    case 'SIGNUP':
                        var formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                        break;
                    case 'PARTNER_REGISTRATION':
                        var formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));;
                        break;
                    case 'BASIC_LOG_IN':
                        var formData = JSON.parse(localStorage.getItem('login-branch-logic-form-data-' + siteId));
                        if (formData == null) {
                            formData = {};
                        }
                        break;
                    default:
                        var formData = null;
                }

                if (formData['waiverFields'] === undefined || formData['waiverFields'] == null) {

                    formData['waiverFields'] = [];
                }

                var salesforce = new Object();
                salesforce.field = salesforceField;
                salesforce.value = checkboxInput.prop('checked');
                salesforce.objectName = salesforceObject;

                var exists = false;
                if (formData['waiverFields'].length > 0) {
                    $.each(formData['waiverFields'], function (i, obj) {
                        if (obj.field === salesforce.field) {
                            obj.value = salesforce.value;
                            obj.objectName = salesforce.objectName;
                            exists = true;
                            return false;
                        }
                    });
                }
                if (!exists) {
                    formData['waiverFields'].push(salesforce);
                }

                if (typeBranchLogic === 'REGISTRATION') {
                    _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, formData);
                }
                else if (typeBranchLogic === 'PARTNER_REGISTRATION') {
                    _assign_value_json_local_storage('partner-branch-logic-form-data-' + siteId, formData);
                }
                else if (typeBranchLogic === 'BASIC_LOG_IN') {
                    _assign_value_json_local_storage('login-branch-logic-form-data-' + siteId, formData);
                }
                else {
                    _assign_value_json_local_storage('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId, formData);
                }
            }
        });

        if (validWaivers === false) {
            var currentScrollTopUser = $(document).scrollTop();

            if (currentScrollTopUser > topPage) {
                $('body,html').animate({
                    scrollTop: topPage - 20,
                }, 1000);
            }
        }
    }

    return validWaivers;
}

function _validate_check_form_blocks(siteId, isMasterTemplate) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    var validForm = true;

    var selector = '';
    if (isMasterTemplate == true) {
        if ($('body.desktop').length > 0) {
            selector = 'body #main_content .formBlock.arsBlock';
            if ($(selector).length === 0) {
                selector = 'body .formBlock.arsBlock';
                // it must be reviewed with Rick, for master it should not validate using #main_content LHH-19342
            }
        } else if ($('body.tablet').length > 0 || $('body.mobile').length > 0) {
            selector = 'body .formBlock.arsBlock';
        }

    } else {
        selector = 'body #main-content .formBlock.arsBlock';
    }

    if ($(selector).length > 0) {
        var topPage = 0;
        var currentScrollTopUser = $(document).scrollTop();

        var hasTransacionReturn = false;

        if ($(selector).find('.payment-executed').length > 0)
            hasTransacionReturn = true;

        $(selector).each(function () {
            var self = $(this);
            var blockId = self.attr('data-block-id');
            var formId = self.attr('data-form-id');
            var form = self.find('form');
            var labelErrors = self.find('label.error:visible');
            var checkboxes = self.find('input[type="checkbox"][data-required="true"]');
            var multiselectcheckboxes = self.find('[type="checkboxes"][data-required="true"]');
            var dateCustomFields = self.find('.form-builder-date-container input.inclusive-dates__input');
            var radioGroups = self.find('.input-group-radiobutton');
            var textareaRichText = self.find('textarea.rich_text');
            var workflowId = $('input.branch-logic-info').first().attr('data-workflow');

            var signatures = self.find('input.signature[data-required="true"]');

            var calculatefields = self.find('input[data-type-custom="calculate"]');
            if(calculatefields.length > 0){
                calculate_items();
            }

            if (!form.valid() || labelErrors.length > 0) {
                validForm = false;

                $(selector + ' .ezdz-dropzone').each(function () {
                    var ezdzErrorLabel = $(this).find('label.error');

                    ezdzErrorLabel.insertAfter($(this));
                });

                //Get top of first field with error in form
                if (form.find('label.error-custom:visible').length > 0) {
                    topPage = form.find('label.error-custom:visible').first().offset().top;
                }
                else if (form.find('label.error:visible').length > 0) {
                    topPage = form.find('label.error:visible').first().offset().top;
                }
            }

            multiselectcheckboxes.each(function () {
                var isValidMultiSelect = true;
                var selfMulticheck = $(this);
                var countChecked = 0;
                selfMulticheck.find('input[type="checkbox"]').each(function () {
                    if ($(this).is(':checked')) {
                        countChecked++;
                    }
                });

                selfMulticheck.find('input[type="checkbox"]').on('change', function () {
                    var counter = 0;
                    selfMulticheck.find('input[type="checkbox"]').each(function () {
                        if ($(this).is(':checked')) {
                            counter++;
                        }
                    });

                    if (counter == 0) {
                        validation = selfMulticheck.parents('.fields-section').find('label.validation-message');
                        validation.css('display', 'block');
                        if (topPage === 0) topPage = selfMulticheck.offset().top;
                    } else {
                        validation = selfMulticheck.parents('.fields-section').find('label.validation-message');
                        validation.css('display', 'none');

                    }


                });

                if (countChecked == 0) {
                    validation = selfMulticheck.parents('.fields-section').find('label.validation-message');
                    validation.css('display', 'block');
                    if (topPage === 0) topPage = selfMulticheck.offset().top;
                    validForm = false;
                    isValidMultiSelect = false;
                }

                if (isValidMultiSelect === true) {
                    validation = selfMulticheck.parents('.fields-section').find('label.validation-message');
                    validation.css('display', 'none');
                }
            });

            checkboxes.each(function () {
                if ($(this).prop('checked') === false) {
                    var isFieldInSection = $(this).closest('.row.internal-field-content.section').hasClass('is-hidden');
                    if(!isFieldInSection){
                        var content = $(this).closest('div.content');
                        var validation = content.find('label.validation-message');
                        content.find('.input-group-checkbox').find('label.error').remove();
                        validation.css('display', 'block');
                        if (topPage === 0) topPage = content.offset().top;
                        validForm = false;
                    }
                }
            });

            let _form = self;
            dateCustomFields.each(function () {
                var field = $(this);
                var invalidDateMsg = translation.invalid_date_field;
                var dateSection = $(this).parents('.form-builder-date-container');
                var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
                var valueField = $(this).val();
                var name = field.attr('name');
                var idField = name.replace("[value]", '');
                var ruleValidate = _form.find('input[name="' + idField + '[ruleToValidate]"]');
                var dataRequired = dateSection.attr('data-required');
                let currentfield = $(this).parents('inclusive-dates');

                if (isSectionHidden === false) {
                    var currentValueText = (valueField != '') ? valueField : null;
                    let idRaw = name + "_Raw";
                    if (_form.find('input[id="' + idRaw + '"]').length > 0) {
                        let rawValue = _form.find('input[id="' + idRaw + '"]').val();
                        if (rawValue !== null && rawValue !== undefined && rawValue !== '') {
                            currentValueText = rawValue;
                        }
                    }
                    if (!validate_date_values_custom(currentValueText)) {
                        if (!field.parents(".fields-section").find('.form-builder-date-container label.error').is(':visible')) {
                            var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + invalidDateMsg + '</label>';
                            field.parents(".fields-section .form-builder-date-container").append(label);
                            validForm = validForm && false;
                        }
                    }
                    if (currentValueText !== undefined && currentValueText !== null && currentValueText !== '') {
                        if (ruleValidate !== null && ruleValidate !== undefined) {
                            var isvalid = validateDatesWithCompareCustomDatePicker(ruleValidate, idField, _form, name);
                            validForm = validForm && isvalid;
                        }
                        var isValigAge = form_validate_min_age(currentfield, currentValueText);
                        validForm = validForm && isValigAge;
                    }
                    else if (dataRequired === true || dataRequired === 'true') {
                        validForm = validForm && false;
                        if (field.parents('.fields-section').find('.form-builder-date-container label.error').length === 0) {
                            var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + window.translation.field_required + '</label>';
                            field.parents(".fields-section .form-builder-date-container").append(label);
                        } else {
                            field.parents('.fields-section').find('.form-builder-date-container label.error').remove();
                            var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + window.translation.field_required + '</label>';
                            field.parents(".fields-section .form-builder-date-container").append(label);
                        }
                    }





                }
            });


            radioGroups.each(function () {
                var firstRadio = $(this).find('input[type="radio"][data-required="true"]').first();
                var name = firstRadio.attr('name');
                var radios = $(this).find('input[name="' + name + '"][data-required="true"]');

                if (radios.attr('data-required') == 'true' && radios.is(':checked') === false) {
                    var content = $(this).closest('div');
                    var validation = content.find('label.validation-message');
                    validation.css('display', 'block');
                    if (topPage === 0) topPage = firstRadio.offset().top;
                    validForm = false;
                }
            });

            calculatefields.each(function () {
                var $this = $(this);
                var value = parseFloat($this.val());
                var name = $this.attr('name');
                let is_maximum_value_of_another_field = $this.siblings('input.is_maximum_value_of_another_field').val();
                let is_minimum_value_of_another_field = $this.siblings('input.is_minimum_value_of_another_field').val();
                let field_maximum_value = $this.siblings('input.field_maximum_value').val();
                let field_minimum_value = $this.siblings('input.field_minimum_value').val();
                let maxValue = null;
                if(is_maximum_value_of_another_field == 'True'){
                    maxValue = parseFloat($this.closest('form').find('input[name="'+field_maximum_value+'[value]"]').val());
                }else{
                    maxValue = parseFloat($this.attr('data-max-value'));
                }
                let minValue = null;
                if(is_minimum_value_of_another_field == 'True'){
                    minValue = parseFloat($this.closest('form').find('input[name="'+field_minimum_value+'[value]"]').val());
                }else{
                    minValue = parseFloat($this.attr('data-min-value'));
                }
                if (isValidValue(maxValue) || isValidValue(minValue)) {
                    let hasError = false;
                    if (isValidValue(minValue) && value < minValue) {
                        const message = translation.form_number_field_min_value.replaceAll('{0}', minValue);
                        showError($this, name, message);
                        hasError = true;
                        validForm = false;
                    }
                    if (isValidValue(maxValue) && value > maxValue) {
                        const message = translation.form_number_field_max_value.replaceAll('{0}', maxValue);
                        showError($this, name, message);
                        hasError = true;
                        validForm = false;
                    }
                    if (!hasError) {
                        hideError($this, name);
                    }
                }
            });

            signatures.each(function () {
                var value = $(this).val();
                var nameField = $(this).attr('name');
                var isSectionHidden = form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
                if (isSectionHidden === false) {
                    var fromConditional = ($(this).attr("data-conditional") != undefined && $(this).attr("data-conditional") != null && $(this).attr("data-conditional") == 'true' ? true : false);
                    if (fromConditional && (value == undefined || value == null || (value != null && value != undefined && value.trim() == ''))) {
                        $(this).addClass('error');
                        $(this).removeClass('valid');
                        $(this).attr('aria-invalid', 'true');
                        $(this).attr('aria-required', 'true');
                        var name = $(this).attr('name');
                        var fieldIdentifier = 'label[id="' + name + '-error"]';
                        var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                        if ($(this).closest('.fields-section').find(fieldIdentifier).length > 0) {
                            $(this).closest('.fields-section').find(fieldIdentifier).replaceWith(label);
                        } else {
                            $(this).closest(".fields-section").append(label);
                        }
                        validForm = false;
                    } else {
                        if (value == undefined || value == null || (value != null && value != undefined && value.trim() == '')) {
                            $(this).addClass('error');
                            $(this).removeClass('valid');
                            $(this).attr('aria-invalid', 'true');
                            $(this).attr('aria-required', 'true');
                            var name = $(this).attr('name');
                            var fieldIdentifier = 'label[id="' + name + '-error"]';
                            var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                            if ($(this).closest('.fields-section').find(fieldIdentifier).length > 0) {
                                $(this).closest('.fields-section').find(fieldIdentifier).replaceWith(label);
                            } else {
                                $(this).closest(".fields-section").append(label);
                            }
                            validForm = false;
                        }
                    }
                }
            });

            //Only if is valid the form
            if (validForm === true) {
                if (form.valid()) {
                    //Apply event to assign to fields current datetime
                    EventPopulateCurrentDatetimeSubmit(form);

                    var formForm = form.serializeJSON();
                    var fileUploads = form.find('input[type="file"]');

                    //Textarea rich text
                    textareaRichText.each(function () {
                        var field = $(this);
                        var idField = field.data('field-id');
                        var textRichText = CKEDITOR.instances[idField + '[value]'].getData();

                        formForm[idField].value = textRichText;
                    });

                    //Field Uploads
                    if (fileUploads.length > 0) {
                        $.each(fileUploads, function (i, f) {
                            var files = fileUploads[i].files;
                            var private = fileUploads[i].getAttribute('data-private');
                            var fileFormId = fileUploads[i].getAttribute('data-form-id');
                            var requiresLogin = fileUploads[i].getAttribute('data-requires-login');
                            var libraryId = fileUploads[i].getAttribute('data-library-id');
                            var saveToSalesforce = fileUploads[i].getAttribute('data-save-to-salesforce');
                            var sfRecordToRelate = fileUploads[i].getAttribute('data-sf-record-to-relate');
                            var fileUrl = '';

                            if (files.length > 0) {
                                if (window.FormData !== undefined) {
                                    var data = new FormData();
                                    data.append("private", private);
                                    data.append("formId", fileFormId);
                                    data.append("requiresLogin", requiresLogin);
                                    data.append("libraryId", libraryId);
                                    data.append("saveToSalesforce", saveToSalesforce);
                                    data.append("sfRecordToRelate", sfRecordToRelate);
                                    data.append("inputSource", fileUploads[i].getAttribute('name'));
                                    for (var x = 0; x < files.length; x++) {
                                        data.append("file" + x, files[x]);
                                    }

                                    $.ajax({
                                        type: "POST",
                                        url: urlSite + "/ARS/UploadFile",
                                        contentType: false,
                                        processData: false,
                                        async: false,
                                        data: data
                                    }).done(function (data) {
                                        fileUrl = '';
                                        var jsonResult = JSON.parse(data);

                                        if (jsonResult.status == '200') {
                                            if (jsonResult.Urls != "" && jsonResult.Urls != null) {

                                                jsonResult.Urls.forEach(function (item) {
                                                    if (item.fileUrl != '' && item.fileUrl != null) {
                                                        if (fileUrl == '') {
                                                            fileUrl = item.fileUrl;
                                                        }
                                                        else {
                                                            fileUrl = fileUrl + ',' + item.fileUrl;
                                                        }
                                                    }
                                                });
                                            }
                                        }
                                        var name = f.name.substring(0, f.name.indexOf('['));
                                        formForm[name].value = fileUrl;

                                        return false;
                                    });
                                } else {
                                    var name = f.name.substring(0, f.name.indexOf('['));
                                    formForm[name].value = fileUrl;
                                }
                            }
                        });
                    }

                    formForm['formId'] = formId;
                    if (workflowId) {
                        var typeBranchLogic = $('input.branch-logic-info').first().attr('data-type');
                        switch (typeBranchLogic) {
                            case 'REGISTRATION':
                                var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                                break;
                            case 'SIGNUP':
                                var formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                                break;
                            case 'PARTNER_REGISTRATION':
                                var formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));;
                                break;
                            case 'BASIC_LOG_IN':
                                var formData = JSON.parse(localStorage.getItem('login-branch-logic-form-data-' + siteId));
                                break;
                            default:
                                var formData = null;
                        }

                        if (hasTransacionReturn === true) {
                            var currentForm = JSON.parse(formData['form-block-data-id-' + blockId]);
                            if (formForm["authorizationID"] != null && formForm["authorizationID"] != undefined)
                                currentForm["authorizationID"] = formForm["authorizationID"];
                            if (formForm["donationAmount"] != null && formForm["donationAmount"] != undefined)
                                currentForm["donationAmount"] = formForm["donationAmount"];
                            if (formForm["transactionID"] != null && formForm["transactionID"] != undefined)
                                currentForm["transactionID"] = formForm["transactionID"];
                            if (formForm["paymentStatus"] != null && formForm["paymentStatus"] != undefined)
                                currentForm["paymentStatus"] = formForm["paymentStatus"];
                            if (formForm["paymentMethod"] != null && formForm["paymentMethod"] != undefined)
                                currentForm["paymentMethod"] = formForm["paymentMethod"];
                            if (formForm["paymentBillingName"] != null && formForm["paymentBillingName"] != undefined)
                                currentForm["paymentBillingName"] = formForm["paymentBillingName"];
                            if (formForm["paymentSubscriptionInfo"] != null && formForm["paymentSubscriptionInfo"] != undefined)
                                currentForm["paymentSubscriptionInfo"] = formForm["paymentSubscriptionInfo"];
                            if (formForm["paymentTotalFeeAmount"] != null && formForm["paymentTotalFeeAmount"] != undefined)
                                currentForm["paymentTotalFeeAmount"] = formForm["paymentTotalFeeAmount"];
                            
                            if (formForm["__RequestVerificationToken"] != null && formForm["__RequestVerificationToken"] != undefined)
                                currentForm["__RequestVerificationToken"] = formForm["__RequestVerificationToken"];

                            formData['form-block-data-id-' + blockId] = JSON.stringify(currentForm);
                        } else {
                            if (formData != null) {
                                formData['form-block-data-id-' + blockId] = JSON.stringify(formForm);
                            } else if (typeBranchLogic === 'BASIC_LOG_IN') {
                                formData = {};
                                formData['form-block-data-id-' + blockId] = JSON.stringify(formForm);
                            }

                        }



                        if (typeBranchLogic === 'REGISTRATION') {
                            _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, formData);
                        }
                        else if (typeBranchLogic === 'PARTNER_REGISTRATION') {
                            _assign_value_json_local_storage('partner-branch-logic-form-data-' + siteId, formData);
                        }
                        else if (typeBranchLogic === 'BASIC_LOG_IN') {
                            _assign_value_json_local_storage('login-branch-logic-form-data-' + siteId, formData);

                        }
                        else {
                            _assign_value_json_local_storage('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId, formData);
                        }
                    }
                }
            }
        });

        if (validForm === false) {
            if (currentScrollTopUser > topPage) {
                $('body,html').animate({
                    scrollTop: topPage - 100,
                }, 500);
            }
        }
    }

    return validForm;
}

function _validate_donation_form_empty(form) {
    var valueEmpty = true;
    var inputsTextForm = form.find('input[type="text"]');

    inputsTextForm.each(function () {
        if ($(this).val() !== '') {
            valueEmpty = false;
        }
    });

    return valueEmpty;
}

function onChangeThemeType(input) {
    var thumbnailURL = $(input).find(':selected').data('thumbnail');

    if (thumbnailURL !== undefined && thumbnailURL !== null && thumbnailURL !== '') {

        $("#seleted-theme-thumbnail").attr("src", thumbnailURL);
        $("#seleted-theme-thumbnail-block").show();
    } else {
        $("#seleted-theme-thumbnail-block").hide();
    }
}

function onChangeRecurringConnections(value) {
    if (value == '') {
        $("#iso-regular-recurring-schedule").hide();
        $("#iso-specific-date-time").hide();
    }
    if (value == 'SDT') {
        $("#iso-regular-recurring-schedule").hide();
        $("#iso-specific-date-time").show();
        $('a.custom-button-link.signup-iso').removeClass("hide");
        calculate_express_interest_label_for_individual_schedule_opportunity(value)
    }
    if (value == 'RRS') {
        $("#iso-specific-date-time").hide();
        $("#iso-regular-recurring-schedule").show();
        calculate_express_interest_label_for_individual_schedule_opportunity(value)

    }
}

function onChangeDayOfWeek(value) {
    var splitted = value.split(";");

    $("input[name='rrsStartTime']").val(splitted[1]);
    $("input[name='rrsEndTime']").val(splitted[2]);

    /*The following lines are to show only  the values allowed based on the range of the selected day
    According to the documentation the way tp modify multiple values at the same time should be  $('#optionExample').timepicker('option', { 'minTime': '4:00am', 'timeFormat': 'H:i' });,
    but it doesn't works
    */

    if (splitted.length > 2) {
        $("input[name='rrsStartTime']").timepicker('option', 'minTime', splitted[1]);
        $("input[name='rrsStartTime']").timepicker('option', 'maxTime', splitted[2]);
        $("input[name='rrsEndTime']").timepicker('option', 'minTime', splitted[1]);
        $("input[name='rrsEndTime']").timepicker('option', 'maxTime', splitted[2]);
    }

}

function convertTo24Hour(time) {
    var hours = parseInt(time.substr(0, 2));
    if (time.indexOf('AM') != -1 && hours == 12) {
        time = time.replace('12', '0');
    }
    if (time.indexOf('PM') != -1 && hours < 12) {
        time = time.replace(hours, (hours + 12));
        time = time.substr(1, time.length);
    }
    time = time.replace(/(AM|PM)/, '');
    return time.substr(0, time.length - 1);
}

function convertTo12Hour(time) {
    var time_part_array = time.split(":");
    var ampm = 'AM';

    if (time_part_array[0] >= 12) {
        ampm = 'PM';
    }

    if (time_part_array[0] > 12) {
        time_part_array[0] = time_part_array[0] - 12;
    }

    formatted_time = time_part_array[0] + ':' + time_part_array[1] + ' ' + ampm;

    return formatted_time;
}


function datatable_add_cells_data_for_mobile_headers(element) {
    var table = $(element);
    table.find('tbody td').attr('tabindex', '0');
    table.find('thead th').each(function () {
        var header_text = $(this).text();
        var index = $(this).index() + 1;
        table.find('tbody td:nth-child(' + index + ')').attr('data-th', header_text);

    });
}


function closeAll() {
    $(".fieldset-content").hide();

    $(".button-close").each(function (index) {
        $(this).addClass("button-open");
        $(this).removeClass("button-close");
    });
}

function htmlDecode(value) {
    if (value !== null) {
        return value.replace(/&#(\d+);/g, function (match, dec) {
            return String.fromCharCode(dec);
        });
    }
    return "";
}

function redirect_previous_page_volunteer_confirmation_registration() {
    if (window.location.pathname == "/volunteer-confirmation-registration") {
        $("a.button.custom-button.text-center.submit-button").on("click", function (e) {
            e.preventDefault();
            var urlToRedirect = localStorage.getItem("volunteer-register-previous-page");
            if (urlToRedirect == null || urlToRedirect == "") urlToRedirect = "/";
            location.href = urlToRedirect;
        });
    }
}

function init_timepicker() {
    $('input.timepicker').each(function () {
        if (!$(this).hasClass('fromformbuilder')) {
            $(this).parent().addClass('timepicker-container');
            var tFormat = window.MomentTimeFormat;
            tFormat = tFormat.replace('A', 'p');
            var params = {
                timeFormat: tFormat,
                interval: 15,
                dropdown: true,
                scrollbar: true,
                dynamic: false
            };

            if ($(this).hasClass('timepicker') && $(this).hasClass('iso-time')) {
                params["change"] = function (time) {
                    calculate_express_interest_label_for_individual_schedule_opportunity($('#iso-form #iso-connection-type').val());
                };
            }

            $(this).timepicker(params);

        }
    });
}

function check_shareable_link_search() {
    if ($('body.search-result-page').length > 0 && window.location.href.indexOf("idSearch") > -1) {
        $('body').addClass('shareable-link-search');
    }
}

function fix_opportunity_detail_list() {
    if ($('.opportunity-detail-content').length > 0) {
        $('button.button-close').each(function () {
            $(this).closest(".fieldset-step").find('.fieldset-content').show();
        });
    }
}

function check_opportunity_prerequisite(button, occId, team, isMultiSignup, occIds, dateTimesInfo) {
    var selector = $('.sign-up-container').length > 0 ? '.sign-up-block' : '.express-interest-block';
    if ($('#prerequisite-opportunity').length > 0) {
        var prerequisiteConnections = $('#prerequisite-opportunity').data('prerequisiteConnections');
        var prerequisiteOppHasUpcomingOcc = $('#prerequisite-opportunity').data('prerequisiteOppHasUpcomingOcc');
        var prerequisiteCompleted = false;
        let mostRecentStartDate = null;
        let occStartDateTime = null;

        if (isMultiSignup == true) {
            let firstOccId = (occIds.split(',')[0]).split('#')[0];
            occStartDateTime = $(selector + ".item-occ.item-" + firstOccId).data('occStartDateTime');
            mostRecentStartDate = occStartDateTime;
        } else {
            occStartDateTime = $(button).closest(selector).data('occStartDateTime');
            mostRecentStartDate = occStartDateTime;
        }

        if (prerequisiteConnections.length > 0) {
            let occStartDateTimeMoment = moment(occStartDateTime);
            prerequisiteCompleted = prerequisiteConnections.some(function (item, index) {
                let connection_end_date = moment(item);
                return occStartDateTimeMoment.isAfter(connection_end_date);
            });
        }

        if (prerequisiteCompleted) {
            if ($('form#signup-questions-form input[name="metPreRequisite"]').length > 0) {
                $('form#signup-questions-form input[name="metPreRequisite"]').val('true');
                $('form#signup-questions-form input[name="mostRecentStartDateWithPreRequisite"]').val(mostRecentStartDate);
            }
            return true;
        }
        else if (!prerequisiteOppHasUpcomingOcc) {
            $('#prerequisite-opportunity form').hide();
            $('#prerequisite-opportunity .no-upcoming-occ').show();
        }
        else {
            if (isMultiSignup === true) {
                $('#prerequisite-opportunity').find('input[name="occWithPrerequisite"]').val('');
                $('#prerequisite-opportunity').find('input[name="occIdsWithPrerequisite"]').val(occIds);
                $('#prerequisite-opportunity').find('input[name="multiSignup"]').val(true);
                $('#prerequisite-opportunity').find('input[name="mostRecentStartDateWithPrerequisite"]').val(mostRecentStartDate);

                let encodeDateTimes = utf8ToBase64(JSON.stringify(dateTimesInfo));
                $('#prerequisite-opportunity').find('input[name="occDateTimesWithPrerequisite"]').val(encodeDateTimes);

            }
            else {
                let dateTimeInfoSingle = $(button).closest(selector).find('legend.title-block span.oc-date').html();
                let encodeDateTimes = utf8ToBase64(dateTimeInfoSingle);

                $('#prerequisite-opportunity').find('input[name="occWithPrerequisite"]').val(occId.val());
                $('#prerequisite-opportunity').find('input[name="occIdsWithPrerequisite"]').val('');
                $('#prerequisite-opportunity').find('input[name="multiSignup"]').val(false);
                $('#prerequisite-opportunity').find('input[name="mostRecentStartDateWithPrerequisite"]').val(mostRecentStartDate);
                $('#prerequisite-opportunity').find('input[name="occDateTimesWithPrerequisite"]').val(encodeDateTimes);
            }


            $('#prerequisite-opportunity').find('input[name="registeringWithTeam"]').val(team);
            $('#prerequisite-opportunity form').show();
            $('#prerequisite-opportunity .no-upcoming-occ').hide();
            $('#prerequisite-opportunity .no-upcoming-occ').hide();
        }
        $('#prerequisite-opportunity').foundation('open');
        return false;
    }
    if ($('#prerequisite-notice').length > 0) {
        //  var occEndDateTime = $(button).closest(selector).data('occEndDateTime');
        let occEndDateTime = null;

        if (isMultiSignup == true) {
            let firstOccId = (occIds.split(',')[0]).split('#')[0];
            occEndDateTime = $(selector + ".item-occ.item-" + firstOccId).data('occEndDateTime');
        } else
            occEndDateTime = $(button).closest(selector).data('occStartDateTime');

        var startDateTimeOccWPrerequisite = $('#prerequisite-notice').data('startdatetimeoccselected');

        occEndDateTime = moment(occEndDateTime);
        startDateTimeOccWPrerequisite = moment(startDateTimeOccWPrerequisite);
        var dateTimeStr = startDateTimeOccWPrerequisite.tz(window.translation['time_zone']).format(window.MomentDateTimeFormat);
        var error_message = window.translation.prerequisite_datetime_after_error != null ? window.translation.prerequisite_datetime_after_error : "You have selected a prerequisite date & time that takes place after the start of your opportunity ({0}). Please select an earlier date & time for the prerequisite.";
        var error = error_message.replace("{0}", dateTimeStr);
        if (occEndDateTime.isAfter(startDateTimeOccWPrerequisite)) {
            Swal.fire({
                title: "",
                text: error,
                icon: "error"
            });
            return false;
        }
    }
    return true;
}

function init_addtocalendar() {
    $('body').on("mouseenter", "a.atcb-link", function () {
        var id = null;
        if ($(this).data('atcbId') == null) {
            id = $('a.atcb-link.on').length + 1;
            $(this).data('atcbId', id).addClass('on').prop('id', 'atcb-link-' + id);
            $(this).parent('.addtocalendar').find('ul.atcb-list').wrap("<div id='atcb-list-" + id + "' class='atcb-list-container atc-style-menu-wb' style='display:none'></div>");
            $(this).parent('.addtocalendar').find('.atcb-list-container').data('atcbId', id).appendTo("body");
            $("#atcb-list-" + id + " ul.atcb-list").show();
        }
        else {
            id = $(this).data('atcbId');
        }

        let bodyOffset = $('body').offset().top;

        $("#atcb-list-" + id ).css(
            {
                top: $(this).offset().top + $(this).height() - 2 - bodyOffset,
                left: $(this).offset().left
            }
        ).show();

    });
    
    $('body').on("mouseleave", "a.atcb-link", function (evt) {
        var target = $(evt.toElement || evt.relatedTarget);
        if ($(this).data('atcbId') != null) {
            var id = $(this).data('atcbId');
            if (target.parents("#atcb-list-" + id + "").length == 0)
                $("#atcb-list-" + id + "").hide();
        }
    });
    
    $('body').on("mouseleave", ".atcb-list-container", function (evt) {
        var target = $(evt.toElement || evt.relatedTarget);
        if ($(this).data('atcbId') != null) {
            var id = $(this).data('atcbId');
            if (!target.is('#atcb-link-' + id))
                $(this).hide();
        }
    });
}

function upload_opp_image() {
    //$("#profile_photo_file").ezdz('destroy');
    var type = $("#image_opp_file").attr('data-filetype');
    //Creating an XMLHttpRequest and sending
    var xhr = new XMLHttpRequest();

    var formdata = new FormData(); //FormData object
    var fileInput = document.getElementById('image_opp_file');
    //Iterating through each files selected in fileInput
    if (fileInput != null && fileInput.value != "") {
        $('button[type="submit"]').attr('disabled', 'disabled');
        for (i = 0; i < fileInput.files.length; i++) {
            //Appending each file to FormData object
            formdata.append(fileInput.files[i].name, fileInput.files[i]);
        }
        if ($("#image_opp_file").parent().hasClass('ezdz-reject')) {
            xhr.abort();
        } else {
            $("#image_opp_file").parents(".ezdz-dropzone").find("img").hide();
            $("#image_opp_file").parents(".ezdz-dropzone").find("div").append('<img alt="' + window.translation.loading_image + '" title="' + window.translation.loading_image + '" class="spinner" src="/img/default/spinner-green.svg" height="30" width="30" />');
            $("form").find(".submit-button").attr("disabled", true);
            xhr.open('POST', '/partner-portal/upload-image');
            xhr.send(formdata);
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    var obj = JSON.parse(xhr.responseText);
                    if (obj.status.toLowerCase() == "ok") {
                        $("#ImageUrl").val(obj.uri_image);
                        $("#ImageUrlThumbnail").val(obj.uri_image_thumb);
                        $("#image_opp_file").parents(".ezdz-dropzone").find(".spinner").remove();
                        $("#image_opp_file").parents(".ezdz-dropzone").find("img").show();
                        $('button[type="submit"]').removeAttr('disabled');
                    } else {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: obj.message,
                            confirmButtonText: "Ok",
                        });
                        //$.growl.error({ duration: 10000, message: obj.message });
                        $("form").find(".submit-button").attr("disabled", false);
                        $("#image_opp_file").parents(".ezdz-dropzone").find(".spinner").remove();
                        $('button[type="submit"]').removeAttr('disabled');

                    }
                }
            }
            var link = window.translation.delete;
            var delete_image_link = '<a href="#" id="delete_logo_url" class="delete_logo_url">' + link + '</a>';
            // Put link below image preview.
            $(".remove_image").html(delete_image_link);


            $("#delete_logo_url").click(function () {
                $("#image_opp_file").parents(".ezdz-dropzone").find("img").hide();
                $("#image_opp_file").parents(".ezdz-dropzone").find("div").append(translation.add_picture_drop_picture);
                $("#ImageUrl").val("");
                $("#ImageUrlThumbnail").val("");
                xhr.abort();
                $(this).remove();
                return false;
            });
        }

    }
}

function get_parameter_from_query_string(name, url) {
    if (!url) {
        return null;
    }
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}


//Method to make partner registration via AJAX
function ajax_submit_partner_registration(dataSerialized, urlRedirect, siteId) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    if ($('body input[name="user_response_ars"]').length > 0) {
        dataSerialized["user_response"] = $('body input[name="user_response_ars"]').val();
    }
    $.ajax({
        method: "POST",
        url: urlSite + "/user/SignUpOrganization",
        data: dataSerialized,
        beforeSend: function () {

        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $('.processing_screen').hide();
            Swal.fire({
                title: textStatus,
                icon: "error",
                html: errorThrown,
                confirmButtonText: "Ok",

            });
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);

        var formBlockToPRocess = $('.formBlock.blockContainer form');
        remove_form_restriction(formBlockToPRocess, '19');

        if (jsonData.status == "ok") {
            remove_form_backup_from_session_storage();
            localStorage.removeItem('partner-branch-logic-form-data-' + siteId);
            window.location.href = urlSite + urlRedirect;
        } else {
            $('.processing_screen').hide();
            if (jsonData.status == "error") {
                Swal.fire({
                    title: "",
                    icon: "error",
                    html: jsonData.message,
                    confirmButtonText: "Ok"

                }).then(function (result) {
                    window.location.href = urlSite + "/organization-sign-up";
                });
            }
        }
        return false;
    });
}

function fix_rss_title_height() {
    if ($('.dynamic-rss-title').length > 0) {
        var max_height = 0;
        $('.dynamic-rss-title .content .story h3.title').each(function () {
            var height = $(this).find('a').height();
            if (height > max_height) {
                max_height = height;
            }
        });
        $('.dynamic-rss-title .content .story h3.title').each(function () {
            $(this).height(max_height + 10);
        });

    }
}

function add_class_body() {
    if (window.location.pathname == '/') {
        $('body').addClass('home');
    } else {
        $('body').addClass('internal-page');
    }
    
    var parts = window.location.pathname.split('/');
    if (parts && parts.length) {
        var idx = parts.length - 1;
        if (parts[idx] == '' && parts.length > 1) {
            --idx;
            basename = 'home';
        } else {
            basename = parts[idx].toLowerCase();
        }
        $('body').addClass('page-' + basename);
    }

    if (parts && parts.length > 1) {
        if (parts[1] !== '') {
            $('body').addClass('page-' + parts[1]);
        }
    }


    //verifying cms pages.
    if ($('div.cms-page').length > 0) {
        $('body').addClass('cms-item-page');
        if ($('div.cms-page').hasClass('ars-page')) {
            $('div.cms-page').removeClass('ars-page');
            $('body').addClass('ars-page');
        }
        if ($('div.cms-page').hasClass('ars-volunteer-registration-step')) {
            $('div.cms-page').removeClass('ars-volunteer-registration-step');
            $('body').addClass('ars-volunteer-registration-step');
        }
    }

    if ($('body').hasClass('ars-page') && $('body').hasClass('ars-volunteer-registration-step')) {
        //Verify form blocks with logged require.
        if ($('.formBlock.form-requires-login').length > 0) {
            $('body').find('.formBlock.form-requires-login').remove();
        }
    }

}






/*function responsive_calendar() {
    if ($('body').hasClass('page-old-calendar')  || $('body.results-page.corporate-partners-page').length > 0 || $('.searchresultblock.search-block-default-calendar').length > 0) {
        window.screenWidth = $(window).width();
        $('.calendar-container-responsive').remove();
        $('.full-calendar-widget .fc-view-container').prepend('<div class="calendar-container-responsive"><div class="loading">...</div></div>');
        //Month items
            if ($('.full-calendar-widget .fc-view').hasClass('fc-month-view')) {
                $('.fc-month-view .fc-row').each(function(index, el) {
                    $($(this).find('thead td')).each(function(index1, el1) {
                        if ($(this).hasClass('fc-other-month')) {}else{
                            var datejc = $(this).attr('data-date');
                            var day ='';
                            if ($(this).hasClass('fc-sun')) { day = window.translation.sun + ': ' }
                            if ($(this).hasClass('fc-mon')) { day = window.translation.mon + ': ' }
                            if ($(this).hasClass('fc-tue')) { day = window.translation.tue + ': ' }
                            if ($(this).hasClass('fc-wed')) { day = window.translation.wed + ': ' }
                            if ($(this).hasClass('fc-thu')) { day = window.translation.thu + ': ' }
                            if ($(this).hasClass('fc-fri')) { day = window.translation.fri + ': ' }
                            if ($(this).hasClass('fc-sat')) { day = window.translation.sat + ': ' }
                            $('.calendar-container-responsive').append('<div class="item-calen type-month day-num-'+datejc+'"><div class="title">'+day+$(this).text()+'</div><span class="more">More</span></div>');
                        }
                    });
                    $($(this).find('tbody td')).each(function(index2, el2) {
                        var event_past = '';
                        var green_key = '';
                        var blue_key = '';
                        var black_key = '';
                        if ($(this).hasClass('fc-other-month')) {}else{
                            var daynum = $(this).attr('data-daynum');
                            var urloppjc = $(this).attr('data-urlopp');
                            $(this).find('a').attr('href', urloppjc);
                            if ($(this).find('a').hasClass('fc-past')) {event_past = 'event_past'; }
                            if ($(this).find('a').hasClass('green-key')) {green_key = 'green_key'; }
                            if ($(this).find('a').hasClass('blue-key')) {blue_key = 'blue_key'; }
                            if ($(this).find('a').hasClass('black-key')) {black_key = 'black_key'; }
                            $('.calendar-container-responsive .day-num-'+daynum).append('<a class="fc-event '+event_past+' '+green_key+' '+blue_key+' '+black_key+'" href="'+urloppjc+'">'+$(this).find('a').html()+'</a>');
                        }
                    });
                });
            }

        //Week items
            if ($('.full-calendar-widget .fc-view').hasClass('fc-basicWeek-view')) {
                $('.fc-basicWeek-view .fc-head th').each(function(index, el) {
                    var daynum = $(this).attr('data-date');
                    $('.calendar-container-responsive').append('<div class="item-calen type-Week day-num-'+daynum+'"><div class="title">'+$(this).text()+'</div><span class="more">More</span></div>');
                });
                 $('.fc-basicWeek-view .fc-body tbody td').each(function(index3, el3) {
                    var event_past = '';
                    var green_key = '';
                    var blue_key = '';
                    var black_key = '';
                            if ($(this).find('a').hasClass('fc-past')) {event_past = 'event_past'; }
                            if ($(this).find('a').hasClass('green-key')) {green_key = 'green_key'; }
                            if ($(this).find('a').hasClass('blue-key')) {blue_key = 'blue_key'; }
                            if ($(this).find('a').hasClass('black-key')) {black_key = 'black_key'; }
                    
                    var daynum = $(this).attr('data-daynum');
                    var urloppjc = $(this).attr('data-urlopp');
                    $(this).find('a').attr('href', urloppjc);
                    $('.calendar-container-responsive .day-num-'+daynum).append('<a class="fc-event '+event_past+' '+green_key+' '+blue_key+' '+black_key+'" href="'+urloppjc+'">'+$(this).find('a').html()+'</a>');
                 });
                 $('.fc-day-header').each(function (index1, el1) {
                     var currentLanguage = window.translation['language_iso'];
                     moment.locale(currentLanguage);
                     var daynum = moment($(this).attr('data-date'));
                     if (MomentDateFormat.indexOf('DD/MM') != -1)
                        $(this).text(daynum.format('ddd DD/MM'));
                     if (MomentDateFormat.indexOf('DD-MM') != -1)
                        $(this).text(daynum.format('ddd DD-MM'));
                 });
            }
        //Day items
            if ($('.full-calendar-widget .fc-view').hasClass('fc-agendaDay-view')) {
                $('.fc-agendaDay-view .fc-head th').each(function(index, el) {
                    var daynum = $(this).attr('data-date');
                    if (daynum) {
                    $('.calendar-container-responsive').append('<div class="item-calen type-day day-num-items"><div class="title">'+$(this).text()+'</div></div>');
                    }
                });
                 $('.fc-agendaDay-view .fc-body tbody td .fc-event-container a').each(function(index3, el3) {
                    var daynum = $(this).find('.fc-time').attr('data-full');
                    var urloppjc = $(this).attr('data-urlopp');
                    var content = $(this).find('.fc-title').text();
                    $(this).attr('href', urloppjc);
                    $('.calendar-container-responsive .day-num-items').append('<a class="fc-event " href="'+urloppjc+'"><span class="date-hor-event">'+daynum+'</span>'+content+'</a>');
                });
            }

            $('.calendar-container-responsive > .item-calen').each(function(index, el) {
                if ($(this).find('.fc-event').length > 0) {}else{$(this).find('.more').hide();}
                if ($(this).hasClass('type-day')) {}else{
                    $($(this).find('.fc-event')).each(function(index5, el5) {
                        if (index5<3) {
                            $(this).addClass('active');
                            $(this).siblings('.more').hide();
                        }else{
                            $(this).addClass('hide');
                            $(this).siblings('.more').show();
                        }
                    });
                }
            });

            $('.calendar-container-responsive .loading').hide();
            change_calendar_type();
            hide_or_show_calendar_mobile_desktop();
    }
}*/

$(window).on('load', function () {
    if ($.active > 0) {
        $(document).ajaxComplete(function (event, xhr, settings) {
            fix_regions_row_height();
        });
    } else {
        fix_regions_row_height();
    }
});
/*function change_calendar_type(){
    $('.fc-month-button,.fc-basicWeek-button,.fc-agendaDay-button,.fc-next-button,.fc-prev-button').click(function(event) {
        //responsive_calendar();
    });
    $('span.more').click(function(event) {
        var i_last = $(this).siblings('.active').last();
       i_last.nextAll("*:lt(3)").removeClass('hide').addClass('active');
       if ($(this).siblings('.fc-event').last().hasClass('active')) {$(this).hide();}
    });
}*/
function hide_or_show_calendar_mobile_desktop() {
    var w = $(window).width();
    if (w < 1023) {
        $('.calendar-container-responsive').show();
        $('.fc-view').hide();
    } else {
        $('.calendar-container-responsive').hide();
        $('.fc-view').show();
    }
}
/*$(window).resize(function (event) {
    if (window.screenWidth == 0) {
        window.screenWidth = $(window).width();
    } else {
        if ($(window).width() == window.screenWidth) {
            return;
        }

    }
    responsive_calendar();
});*/

function fix_regions_row_height() {
    if ($("body.new-template-system #regions-container").length > 0) {
        var count = 0;
        $("#regions-container .regions-row").each(function () {
            var thisRow = $(this);
            count++;
            var iHevalue = thisRow.css("height");
            var rowHeight = parseFloat(iHevalue);

            thisRow.find(".region-container").each(function () {
                var itemRow = $(this);
                var hitemRow = itemRow.css("height");
                var regionContainerHeight = parseFloat(hitemRow);
                if (regionContainerHeight < rowHeight) {
                    var smallestRegion = null;
                    var smallestRegionHeight = 9999;
                    itemRow.find(".region-selectable").each(function () {
                        var value = $(this).css("height");
                        var regionHeight = parseFloat(value);
                        if (regionHeight < smallestRegionHeight) {
                            smallestRegionHeight = regionHeight;
                            smallestRegion = $(this);
                        }
                    });
                    if (smallestRegion !== null)
                        thisRow.css("background-color", smallestRegion.css("background-color"));
                }
            });
        });
    }
}


function GetElevationCode() {
    if ($("div.sticky-container div.title-bar-right a.cms-elevate-mode").length > 0) {
        $("div.sticky-container div.title-bar-right a.cms-elevate-mode").on('click', function () {
            var options = {
                title: window.translation.elevation_code_title,
                input: 'password',
                showCancelButton: true,
                confirmButtonClass: 'btn-danger',
                confirmButtonText: window.translation.submit,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: false,
                showLoaderOnConfirm: false,
                closeOnCancel: true,
                inputPlaceholder: window.translation.elevation_code_enter_code
            };


            Swal.fire(options).then(function (result) {
                if (result.isConfirmed && result.value !== '') {
                    VerificateElevationCode(result.value);
                } else if (result.value === '') {
                    Swal.fire({
                        title: window.translation.elevation_code_enter_code,
                        icon: 'error',
                    });
                }
            });

        });
    }
}

function VerificateElevationCode(inputValue) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    $.ajax({
        type: "POST",
        url: urlSite + "/User/VerifyElevationCode",
        data: { elevationCode: inputValue },
        beforeSend: function () {
            $('.processing_screen').show();
        },
        success: function (data) {
            data = JSON.parse(data);

            if (data.status == "ok") {

                Swal.fire({
                    title: window.translation.success,
                    html: window.translation.elevation_code_success,
                    icon: "success",
                    showCancelButton: false,
                    confirmButtonText: "Ok",
                    closeOnConfirm: false,
                }).then(function (result) {
                    if (result.isConfirmed) {
                        window.location.href = data.url;
                        swal.close();
                    }
                });

            } else {
                Swal.fire({
                    title: window.translation.error,
                    icon: "error",
                    text: data.message,
                    confirmButtonText: "Ok",
                });
            }

        },
        complete: function (jqXHR, textStatus) {
            $('.processing_screen').hide();
        }
    });
}


function verify_aux_login() {
    if (window.location.href.indexOf('auxlogin') != -1 && $("div#login-modal-aux").length > 0) {

        $("div#login-modal-aux").foundation('open');

    }
}

function validate_new_date_field() {
    if ($("body.volunteer-sign-up-page").length > 0) {
        //assign_default_value();

        var birth_date_mode = $("#birth_date_mode").val();

        if (birth_date_mode == "over_default" || birth_date_mode == "full_hide") {
            _validate_parental_consent();
        }

        $('#select-month').on("change", function () {
            var month = $('#select-month').val();
            if (birth_date_mode == "day_month" && !isNaN($('#select-day').val())) {
                var days = $('#select-day').val();
                calculate_year(month, days);
            }
            var year = $('#select-year').val();
            calculate_days(month, year);
            _validate_parental_consent();
        });
        $('#select-year').on("change", function () {
            var year = $('#select-year').val();
            var month = $('#select-month').val();
            calculate_days(month, year);
            validate_errors_date();
            _validate_parental_consent();
            if (birth_date_mode == "") {
                $('#select-month').valid();
            }
            if ($('select#select-year option:selected.not-valid-dates').length > 0) {
                if ($('#select-month').length > 0 && !$.isNumeric($('#select-month').val())) {
                    $('#select-month').val('01');
                    $('#select-month').trigger('change');
                    if ($('#select-day').length > 0) {
                        $('#select-day').val('01');
                        $('#select-day').trigger('change');
                    }
                }
                else if ($('#select-day').length > 0 && !$.isNumeric($('#select-day').val())) {
                    $('#select-day').val('01');
                    $('#select-day').trigger('change');
                }
            }
        });
        $('#select-day').on("change", function () {
            var month = $('#select-month').val();
            var days = $('#select-day').val();
            if (birth_date_mode == "day_month") {
                calculate_year(month, days);
            }
            if (month)
                var year = $('#select-year').val();
            if (/^\d+$/.test(month) && /^\d+$/.test(year) && /^\d+$/.test(days)) {
                $("#date_of_birth").val(year + "-" + month + "-" + days);
            }
            else {
                $("#date_of_birth").val('');
            }
            validate_errors_date();
            _validate_parental_consent();
            $('#select-month').valid();
        });
        if ($("#over_default_age_check").length > 0) {
            $("#over_default_age_check").on("click", function () {
                if ($(this).is(':checked')) {
                    $(".over_default_age_group").find('.checkbox-error').remove();
                    $("#date_of_birth").val($("#checked_age").val());
                }
                else {
                    $("#date_of_birth").val($("#not_checked_age").val());
                }
                _validate_parental_consent();
            });
        }
    }

}

function add_security_all_forms() {

    // to validate if the volunteer-singun-form has the expected field
    if ($('form#volunteer-register-form').length > 0) {
        if ($('form#volunteer-register-form  div.form-nick-name').length == 0) {
            var newField = '<div class="form-nick-name"><input type="text" id="vol_register_personal_nick_name" name="personal_nick_name" value="" data-required="true"></div>';
            $('form#volunteer-register-form').append(newField);
        }
    }

    if ($('form#organization-register-form').length > 0) {
        if ($('form#organization-register-form  div.form-nick-name').length == 0) {
            var newField = '<div class="form-nick-name"><input type="text" id="organization_formal_nick_name" name="organization_formal_nick_name" value="" data-required="true"></div>';
            $('form#organization-register-form').append(newField);
        }
    }

    if ($('form#login-form').length > 0) {
        if ($('form#login-form  div.form-nick-name').length == 0) {
            var newField = '<div class="form-nick-name"><input id="NickName" name="NickName" value=""></div>';
            $('form#login-form').append(newField);
        }
    }

    if ($('form#send-email-vol-opp').length > 0) {
        if ($('form#send-email-vol-opp  div.form-nick-name').length == 0) {
            var newField = '<div class="form-nick-name"><input id="with_copy_to" name="with_copy_to" value="" data-required="true"></div>';
            $('form#send-email-vol-opp').append(newField);
        }
    }


}


function calculate_year(month, day) {
    var past_birthday = false;
    var d = new Date();
    var default_age = $("#default_age_day_month").val();
    var current_year = d.getFullYear();
    var current_month = d.getMonth();
    var current_day = d.getDate();
    if (month < current_month || month == current_month && day <= current_day) {
        past_birthday = true;
    }

    var year = current_year - default_age;
    if (!past_birthday) {
        year = year - 1;
        $("#date_of_birth").val(year + "-" + month + "-" + day);
    }
    $("#select-year").val(year)
    $('#select-month').valid();
}


function calculate_days(month, year) {
    var y = year;
    var m = parseInt(month);
    var b = true;
    var d = 0;
    var days = $('#select-day').val();
    var iday = parseInt(days);

    if (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)) {
        b = true;
    } else {
        b = false;
    }
    if (m == 2) {
        if (b === true)
            d = 29;
        else
            d = 28;
    } else if (m >= 3 && m <= 12 || m == 1) {
        if (m <= 7) {
            if (m % 2 == 0) {
                d = 30;
            } else {
                d = 31;
            }
        } else {
            if (m % 2 == 0) {
                d = 31;
            } else {
                d = 30;
            }
        }
    }
    var options = "<option selected>" + window.translation.day + "</option>";
    for (var i = 1; i <= d; i++) {
        if (i < 10) {
            options += '<option value="0' + i + '">' + i + '</option>';
        } else {
            options += '<option value="' + i + '">' + i + '</option>';
        }

    }
    $("#select-day").html(options);
    if (iday > 28 && m == 2) {
        $('#select-day').val("01");
        if (/^\d+$/.test(month) && /^\d+$/.test(year)) {
            $("#date_of_birth").val(year + "-" + month + "-01");
        }
        else {
            $("#date_of_birth").val("");
        }
    } else {
        $('#select-day').val(days);

        if (/^\d+$/.test(month) && /^\d+$/.test(year) && /^\d+$/.test(days)) {
            $("#date_of_birth").val(year + "-" + month + "-" + days);
        }
        else {
            $("#date_of_birth").val("");
        }
    }



}

function assign_default_value() {
    var nowTemp = new Date();
    var oldYear = nowTemp.getFullYear();
    var input = $("input[name='date_of_birth']");
    if (input.attr("data-no-validate-min-age") == "False") {
        var minimumAge = input.attr("data-min-age-allowed");
        if (minimumAge !== undefined && minimumAge !== null && minimumAge.trim() !== '') {
            oldYear = nowTemp.getFullYear() - parseInt(minimumAge);
        } else {
            oldYear = nowTemp.getFullYear() - 13;
        }
    }

    var month = nowTemp.getMonth() + 1;
    var days = nowTemp.getDay() + 1;
    if (month < 10)
        month = "0" + month;
    if (days < 10)
        days = "0" + days;
    $('#select-year').val(oldYear);
    $('#select-month').val(month);
    $('#select-day').val(days);
    $("#date_of_birth").val(oldYear + "-" + month + "-" + days);
    _validate_parental_consent();

}

function validate_errors_date() {
    var input = $("input[name='date_of_birth']");
    if (input.attr("data-no-validate-min-age") == "False") {
        var minimumAge = input.attr("data-min-age-allowed");
        var minAge = 13;
        if (minimumAge !== undefined && minimumAge !== null && minimumAge.trim() !== '') {
            minAge = parseInt(minimumAge);
        }
        var valueDate = input.val();
        var message = input.attr('data-min-age');
        var age = moment().diff(moment(valueDate, "YYYY-M-D", true), "years");

        label_selector = "label#select-month-error";
        select_selector = "select#select-month";

        var birth_date_mode = $("#birth_date_mode").val();



        //if (birth_date_mode == "year_only") {
        //    label_selector = "label#select-year-error";
        //    select_selector = "select#select-year";
        //}

        if (age < minAge) {
            $(select_selector).addClass("error");
            if ($(label_selector).length > 0) {
                $(label_selector).html(message).show();
            } else {
                if (birth_date_mode != "year_only") {
                    $(select_selector).trigger('change');

                }
            }
        } else {
            $(label_selector).hide();
            $(select_selector).removeClass("error");
        }

    }

}

function validate_format_date() {
    var dateformat = window.DatePickerDateFormat;
    if ($("body.volunteer-sign-up-page").length > 0) {
        if (dateformat.indexOf("-") >= 0) {
            var chain = dateformat.split("-");
        } else if (dateformat.indexOf("/") >= 0) {
            var chain = dateformat.split("/");
        }

        if (chain !== null && chain !== undefined && Array.isArray(chain) === true && chain.length == 3) {
            var token1 = chain[0].toLowerCase();
            var token2 = chain[1].toLowerCase();
            var token3 = chain[2].toLowerCase();
            if ((token1 == 'd' || token1 == 'dd') && (token2 == 'm' || token2 == 'mm') && token3 == 'yyyy') {
                $('#month-container').prepend($('#select-day'));
                $('#month-container').removeClass('medium-5');
                $('#month-container').addClass('medium-3');
                $('#day-container').prepend($('#select-month'));
                $('#day-container').removeClass('medium-3');
                $('#day-container').addClass('medium-5');
            } else if ((token1 == 'm' || token1 == 'mm') && (token2 == 'd' || token2 == 'dd') && token3 == 'yyyy') {
                //current format
            } else if (token1 == 'yyyy' && (token2 == 'm' || token2 == 'mm') && (token3 == 'd' || token3 == 'dd')) {
                $('#month-container').prepend($('#select-year'));
                $('#month-container').removeClass('medium-4');
                $('#month-container').addClass('medium-5');
                $('#day-container').prepend($('#select-month'));
                $('#day-container').removeClass('medium-3');
                $('#day-container').addClass('medium-4');
                $('#year-container').prepend($('#select-day'));
                $('#year-container').removeClass('medium-4');
                $('#year-container').addClass('medium-3');
            } else if (token1 == 'yyyy' && (token2 == 'd' || token2 == 'dd') && (token3 == 'm' || token3 == 'mm')) {
                $('#month-container').prepend($('#select-year'));
                $('#month-container').removeClass('medium-4');
                $('#month-container').addClass('medium-5');
                $('#day-container').prepend($('#select-day'));
                $('#day-container').removeClass('medium-4');
                $('#day-container').addClass('medium-3');
                $('#year-container').prepend($('#select-month'));
                $('#year-container').removeClass('medium-3');
                $('#year-container').addClass('medium-4');
            } else {
                console.log("INVALID CASE ");
            }
        } else {
            console.log("INVALID FORMAT ");
        }
    }
}

function display_modal_signed_up_information() {
    if ($('body.volunteer-opportunity-detail-page').length > 0) {
        $(document).on('click', '.who-else-signed-up a', function () {
            var isFromISO = $(this).hasClass('from-ISO');

            var modal = $('#common-messages');
            var usersInfoHTML = $(this).parent().find('input.signed-up-users').val();
            var usersInfoJSON = (usersInfoHTML) ? JSON.parse(usersInfoHTML) : {};
            var opportunityName = "";
            if (isFromISO === true) {
                modal.find('.filter-iso').removeClass('hide');
            } else {
                modal.find('.filter-iso').addClass('hide');
            }
            if ($(this).parents('.opportunity-detail-content').first().find('h2.title-opportunity').length > 0) {
                opportunityName = $(this).parents('.opportunity-detail-content').first().find('h2.title-opportunity').text();
            } else if ($(this).parents('.opportunity-detail-content').first().find('h1.title-opportunity').length > 0) {
                opportunityName = $(this).parents('.opportunity-detail-content').first().find('h1.title-opportunity').text();
            }

            var occurrenceDate = "";
            if ($(this).parents('fieldset').first().find('legend').length > 0) {
                occurrenceDate = $(this).parents('fieldset').first().find('legend').text();
            } else if ($(this).parents('fieldset').first().find('.legend').length > 0) {
                occurrenceDate = $(this).parents('fieldset').first().find('.legend').text();
            }

            var contactIdUserLogged = $(this).parent().find('input.contact-id-user-logged').val();
            if (usersInfoJSON) {
                var titleBeforeListing = '<div class="description">' +
                    '<div class="line row"><div class="columns small-12 medium-12 large-12"><span><strong>' + window.translation.volunteer_opportunity + ': </strong></span>' + opportunityName + '</div></div>' +
                    '<div class="line row"><div class="columns small-12 medium-12 large-12"><span><strong>' + window.translation.date + ': </strong></span> ' + occurrenceDate + '</div></div>' +
                    '</div>';
                var htmlContainer = '<ul>';
                var maxHeightCalculatedModal = parseInt(usersInfoJSON.length / 2) * 70 + 'px';
                var numberUsersSignedUp = usersInfoJSON.length;
                modal.find('h3').text(window.translation.volunteers_already_signed_up);
                modal.find('.description').remove();
                modal.find('.description-section').append(titleBeforeListing);

                if (numberUsersSignedUp > 0) {
                    //Change if exists the contactId by "You"

                    usersInfoJSON.forEach(function (user) {

                    });

                    //Sort listing by name
                    usersInfoJSON.sort(function (a, b) { return (a.Name > b.Name) ? 1 : ((b.Name > a.Name) ? -1 : 0); });

                    usersInfoJSON.forEach(function (user) {
                        var name = user.Name;
                        var month = user.Month;
                        var liUser = '<li class="month-item month-' + month + '">' + name;

                        if (contactIdUserLogged === user.ContactId) {
                            var customName = name + ' (' + window.translation.you_only + ')';


                            liUser = '<li class="bold month-item month-' + month + '">' + customName;
                        }

                        if (isFromISO === true) {
                            if (user.StartDateTime !== undefined && user.StartDateTime !== null) {

                                liUser += ' - ' + user.StartDateTime;
                            }
                        }

                        liUser += '</li>';

                        htmlContainer += liUser;
                    });
                    htmlContainer += '</ul>';
                }
                else {
                    htmlContainer = '<p>' + window.translation.there_is_not_users_signedup + '</p>';
                }

                modal.find('.container-modal').empty();
                modal.find('.container-modal').append('<div class="row"><div class="columns small-12 medium-12 large-12">' + htmlContainer + '</div></div>');
                modal.find('.container-modal').find('ul').css('max-height', maxHeightCalculatedModal);
            }
            if (isFromISO === true) {
                modal.find('.filter-iso').removeClass('hide');
            } else {
                modal.find('.filter-iso').addClass('hide');
            }

            modal.find('select[name="filter-date-iso"]').on('change', function () {
                var value = $(this).val();

                if (value === '0') {
                    modal.find('li.month-item').show();
                } else {
                    modal.find('li.month-item').hide();
                    modal.find('li.month-' + value).show();
                }
            });


            //Open modal
            modal.foundation('open');
            modal.foundation();

            return false;
        });
    }
}


function validate_custom_fields() {
    $('form').each(function () {

        if ($(this).find('.custom-fields.custom-field-section').length > 0) {
            var countCustomFieldsReq = $(this).find('.custom-fields.custom-field-section label.required').length;
            var form = $(this);
            if (countCustomFieldsReq > 0) {
                form.on('click', form.find('button[name="submitButton"]'), function (e) {
                    var valid = true;
                    form.find('.custom-fields.custom-field-section .item-customfield').each(function () {
                        var item = $(this);
                        var attrItem = item.attr('data-required');
                        if (attrItem !== undefined && attrItem !== null) {
                            var itemValue = item.val();
                            if (itemValue === null || itemValue === undefined || itemValue === "") {
                                valid = valid && false;
                            } else {
                                valid = valid && true;
                            }
                        }

                    });
                    if (valid === true) {
                        form.find('#CustomFieldFilled').val("completed");
                    } else {
                        form.find('#CustomFieldFilled').val("");
                    }
                });
            } else {
                form.find('#CustomFieldFilled').val("completed");
            }
        }
    });
}

function fixes_for_mixed_menu() {
    if ($('body').hasClass('new-template-system')) {
        if ($('body').hasClass('tablet') || $('body').hasClass('mobile'))
            return;
    }
    if ($('.mixed-menu').length > 0) {
        var menu = $('.mixed-menu');
        menu.find('ul.level-2').addClass('hide');
        menu.find('div.menu-mixed-second-level').addClass('hide');
        //validate the active class
        var menuSecondary = null;
        if (menu.find('ul.level-1>li.active div.menu-section-secondary') != null &&
            menu.find('ul.level-1>li.active div.menu-section-secondary') != undefined &&
            menu.find('ul.level-1>li.active div.menu-section-secondary').length > 0) {
            menuSecondary = menu.find('ul.level-1>li.active div.menu-section-secondary');
        } else if (menu.find('ul.level-1 div.menu-section-secondary li.active') != null &&
            menu.find('ul.level-1 div.menu-section-secondary li.active') != undefined &&
            menu.find('ul.level-1 div.menu-section-secondary li.active').length > 0) {
            var itemActive = menu.find('ul.level-1 div.menu-section-secondary li.active');
            if (itemActive != null && itemActive != undefined && itemActive.length > 0) {
                var itemParent = itemActive.parent();
                if (itemParent != null && itemParent != undefined && itemParent.length > 0) {
                    if (itemParent.hasClass('level-2')) {
                        var grandParent = itemParent.parents('li.item-parent');
                        if (grandParent != null && grandParent != undefined && grandParent.length > 0) {
                            grandParent.addClass('active');
                        }
                    } else if (itemParent.hasClass('level-3')) {
                        var grandParent = itemParent.parents('li.item-parent');
                        if (grandParent != null && grandParent != undefined && grandParent.length > 0) {
                            grandParent.addClass('active');
                        }
                        grandParent = itemParent.parents('li.second-parent');
                        if (grandParent != null && grandParent != undefined && grandParent.length > 0) {
                            grandParent.addClass('active');
                        }
                    } else if (itemParent.hasClass('level-4')) {
                        var grandParent = itemParent.parents('li.item-parent');
                        if (grandParent != null && grandParent != undefined && grandParent.length > 0) {
                            grandParent.addClass('active');
                        }
                        grandParent = itemParent.parents('li.second-parent');
                        if (grandParent != null && grandParent != undefined && grandParent.length > 0) {
                            grandParent.addClass('active');
                        }
                        grandParent = itemParent.parents('li.third-parent');
                        if (grandParent != null && grandParent != undefined && grandParent.length > 0) {
                            grandParent.addClass('active');
                        }

                    }
                    menuSecondary = menu.find('ul.level-1>li.active div.menu-section-secondary');

                } else {

                    console.log("Parent not found!!!!");
                }
            } else {
                console.log("Not Found Active");
            }
        } else {
            console.log("Not Found!!!!!");
        }

        if (menuSecondary != null && menuSecondary.length > 0 && menuSecondary.find('li').length > 0) {
            menu.find('div.menu-mixed-second-level .page-sizer').html(menuSecondary);
            menu.find('div.menu-mixed-second-level').removeClass("hide");
            menuSecondary.find('ul.level-2').removeClass('hide');
            menuSecondary.removeClass("hide");

            //get the current region
            var parent = $('.mixed-menu').parents('.region-selectable');
            if (parent != null && parent != undefined) {
                var region = $('.mixed-menu').parents('.container');
                var regionID = "#" + region.attr('id');
                var id = "#" + parent.attr('id');

                $('.menu-mixed-second-level').appendTo($(regionID));
            }
        } else if (menu.find('ul.level-2 li.active').length > 0) {

            menuSecondary = menu.find('ul.level-2 li.active').parents('div.menu-section-secondary');
            menu.find('div.menu-mixed-second-level .page-sizer').html(menuSecondary);
            menu.find('div.menu-mixed-second-level').removeClass("hide");
            menuSecondary.find('ul.level-2').removeClass('hide');
            menuSecondary.removeClass("hide");


            var parent = $('.mixed-menu').parents('.region-selectable');
            if (parent != null && parent != undefined) {
                var region = $('.mixed-menu').parents('.container');
                var regionID = "#" + region.attr('id');
                var id = "#" + parent.attr('id');

                $('.menu-mixed-second-level').appendTo($(regionID));
            }
        }

    }
}

function link_anchor() {
    $(document).on('click', 'ul li a.link-anchor', function (e) {
        e.preventDefault();
        var strAncla = $(this).attr('href');
        var offset = $(strAncla).offset();
        $('body,html').stop(true, true).animate({
            scrollTop: $(strAncla).offset().top - 190
        }, 1000);

    });
}

function send_email(encodedEmail) {
    // do the mailto: link
    location.href = "mailto:" + decode_email(encodedEmail);
}

function decode_email(encodedEmail) {
    // holds the decoded email address
    var email = "";

    // go through and decode the email address
    for (i = 0; i < encodedEmail.length;) {
        // holds each letter (2 digits)
        var letter = "";
        letter = encodedEmail.charAt(i) + encodedEmail.charAt(i + 1)

        // build the real email address
        email += String.fromCharCode(parseInt(letter, 16));
        i += 2;
    }

    return email;
}

function enable_fields_team_detail_page() {
    if ($("body.team-detail-page").length > 0) {
        var hasOrganization = $("input[name='hasOrganization']").val();
        var hasCustomRulesForFields = $("input[name='hasCustomRulesForFields']").val();

        if (hasCustomRulesForFields === true || hasCustomRulesForFields === "True")
            hasCustomRulesForFields = true;
        else
            hasCustomRulesForFields = false;

        var isVisibleEmail = true;
        var isVisiblePhone = true;
        var isVisibleAge = true;
        var isVisibleTeamCaptain = true;

        var isRequiredEmail = false;
        var isRequiredPhone = false;
        var isRequiredAge = false;



        if ($("input[name='isVisibleEmail']").length > 0 && ($("input[name='isVisibleEmail']").val() === "False") || $("input[name='isVisibleEmail']").val() === false) {
            isVisibleEmail = false;
        }

        if ($("input[name='isVisiblePhone']").length > 0 && ($("input[name='isVisiblePhone']").val() === "False") || $("input[name='isVisiblePhone']").val() === false) {
            isVisiblePhone = false;
        }

        if ($("input[name='isVisibleAge']").length > 0 && ($("input[name='isVisibleAge']").val() === "False") || $("input[name='isVisibleAge']").val() === false) {
            isVisibleAge = false;
        }

        if ($("input[name='isVisibleTeamCaptain']").length > 0 && ($("input[name='isVisibleTeamCaptain']").val() === "False") || $("input[name='isVisibleTeamCaptain']").val() === false) {
            isVisibleTeamCaptain = false;
        }

        if (isVisibleEmail && ($("input[name='isRequiredEmail']").val() === "True" || $("input[name='isRequiredEmail']").val() === true))
            isRequiredEmail = true;

        if (isVisiblePhone && ($("input[name='isRequiredPhone']").val() === "True" || $("input[name='isRequiredPhone']").val() === true))
            isRequiredPhone = true;

        if (isVisibleAge && ($("input[name='isRequiredAge']").val() === "True" || $("input[name='isRequiredAge']").val() === true))
            isRequiredAge = true;


        $(document).on('click', 'td.editable-value span.cell-edit-btn', function () {
            var counter = $(this).attr("data-counter-value");
            var attribute = $(this).attr("data-attr-name");
            var labelSelector = ".editable-" + attribute + "-label-" + counter;
            var inputSelector = "editable-" + attribute + "-" + counter;
            var statusSelector = "team-member-status-" + counter;
            var originalValue = $("input[name='" + inputSelector + "']").attr('data-original-value');
            if (attribute != "checkAge") {
                if (originalValue == null || originalValue == undefined)
                    originalValue = '';
                var self = $(this);
                self.addClass("hide");
                $(labelSelector).addClass("hide");
                $("input[name='" + inputSelector + "']").removeClass("hide");
                $("input[name='" + inputSelector + "']").focus();

                $("input[name='" + inputSelector + "']").on("focusout", function () {
                    $("input[name='" + inputSelector + "']").addClass("hide");
                    $(labelSelector).removeClass("hide");
                    self.removeClass("hide");
                    var attribute = $("input[name='" + inputSelector + "']").attr("data-attr-name");
                    var currentValue = $("input[name='" + inputSelector + "']").val();
                    if (attribute == "checkAge") {
                        currentValue = $("input[name='" + inputSelector + "']").attr("data-current-value");
                    }

                    if (currentValue == null || currentValue == undefined)
                        currentValue = '';
                    if (currentValue != originalValue) {
                        if (attribute == "email") {

                            if (hasOrganization == "True") {
                                if (validateEmail(currentValue)) {
                                    //valid email
                                    $(labelSelector).text(currentValue);
                                    var parent = $(labelSelector).parents('.editable-value');
                                    parent.removeClass("editable-value");
                                    parent.addClass("edited-value");
                                    parent.removeClass("edited-wrong-email-value");
                                    $('.btn-update-member').removeClass("hide");
                                    $('.btn-container').removeClass("medium-4");
                                    $('.btn-container').addClass("medium-3");
                                    $('.btn-update-member').removeClass("disabled");
                                    $("input[name='" + statusSelector + "']").val("1");
                                } else if (currentValue != "") {
                                    Swal.fire({
                                        title: window.translation.error_editing_field,
                                        text: window.translation.invalid_email_value,
                                        icon: "error",
                                        confirmButtonText: "Ok",
                                        closeOnConfirm: true
                                    });
                                    $("input[name='" + inputSelector + "']").val(originalValue);
                                    $(labelSelector).text(originalValue);
                                } else if (currentValue == "") {

                                    if (!hasCustomRulesForFields || !isRequiredEmail) {
                                        $(labelSelector).text(currentValue);
                                        var parent = $(labelSelector).parents('.editable-value');
                                        parent.removeClass("editable-value");
                                        parent.addClass("edited-value");
                                        parent.removeClass("edited-wrong-email-value");
                                        $('.btn-update-member').removeClass("hide");
                                        $('.btn-container').removeClass("medium-4");
                                        $('.btn-container').addClass("medium-3");
                                        $('.btn-update-member').removeClass("disabled");
                                        $("input[name='" + statusSelector + "']").val("1");
                                    } else if (isRequiredEmail) {

                                        Swal.fire({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.email_is_required_row,
                                            icon: "error",
                                            confirmButtonText: "Ok",
                                            closeOnConfirm: true
                                        });
                                        $("input[name='" + inputSelector + "']").val(originalValue);
                                        $(labelSelector).text(originalValue);
                                    }

                                }

                            } else {
                                if (validateEmail(currentValue)) {
                                    //valid email
                                    $(labelSelector).text(currentValue);
                                    var parent = $(labelSelector).parents('.editable-value');
                                    parent.removeClass("editable-value");
                                    parent.addClass("edited-value");
                                    parent.removeClass("edited-wrong-email-value");
                                    $('.btn-update-member').removeClass("hide");
                                    $('.btn-container').removeClass("medium-4");
                                    $('.btn-container').addClass("medium-3");
                                    $('.btn-update-member').removeClass("disabled");
                                    $("input[name='" + statusSelector + "']").val("1");
                                } else if (currentValue != "") {
                                    Swal.fire({
                                        title: window.translation.error_editing_field,
                                        text: window.translation.invalid_email_value,
                                        icon: "error",
                                        confirmButtonText: "Ok",
                                        closeOnConfirm: true
                                    });
                                    $("input[name='" + inputSelector + "']").val(originalValue);
                                    $(labelSelector).text(originalValue);
                                } else if (currentValue == "") {

                                    if (!hasCustomRulesForFields) {
                                        var phoneSelector = "editable-phone-" + counter;
                                        var phoneValue = $("input[name='" + phoneSelector + "']").val();
                                        if (phoneValue != "") {
                                            $(labelSelector).text(currentValue);
                                            var parent = $(labelSelector).parents('.editable-value');
                                            parent.removeClass("editable-value");
                                            parent.addClass("edited-value");
                                            $("input[name='" + statusSelector + "']").val("1");
                                            $('.btn-update-member').removeClass("hide");
                                            $('.btn-container').removeClass("medium-4");
                                            $('.btn-container').addClass("medium-3");
                                        } else {
                                            Swal.fire({
                                                title: window.translation.error_editing_field,
                                                text: window.translation.email_can_not_empty_because_the_phone_is_empty,
                                                icon: "error",
                                                confirmButtonText: "Ok",
                                                closeOnConfirm: true
                                            });
                                            $("input[name='" + inputSelector + "']").val(originalValue);
                                            $(labelSelector).text(originalValue);
                                        }
                                    } else if (isRequiredEmail) {
                                        Swal.fire({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.email_is_required_row,
                                            icon: "error",
                                            confirmButtonText: "Ok",
                                            closeOnConfirm: true
                                        });
                                        $("input[name='" + inputSelector + "']").val(originalValue);
                                        $(labelSelector).text(originalValue);

                                    } else {
                                        $(labelSelector).text(currentValue);
                                        var parent = $(labelSelector).parents('.editable-value');
                                        parent.removeClass("editable-value");
                                        parent.addClass("edited-value");
                                        $("input[name='" + statusSelector + "']").val("1");
                                        $('.btn-update-member').removeClass("hide");
                                        $('.btn-container').removeClass("medium-4");
                                        $('.btn-container').addClass("medium-3");
                                    }

                                }

                            }

                        } if (attribute == "fullname") {
                            if (currentValue != "") {
                                $(labelSelector).text(currentValue);
                                var parent = $(labelSelector).parents('.editable-value');
                                parent.removeClass("editable-value");
                                parent.addClass("edited-value");
                                $("input[name='" + statusSelector + "']").val("1");
                                $('.btn-update-member').removeClass("hide");
                                $('.btn-container').removeClass("medium-4");
                                $('.btn-container').addClass("medium-3");

                            } else {
                                Swal.fire({
                                    title: window.translation.error_editing_field,
                                    text: window.translation.fullname_can_not_empty,
                                    icon: "error",
                                    confirmButtonText: "Ok",
                                    closeOnConfirm: true
                                });
                                $("input[name='" + inputSelector + "']").val(originalValue);
                            }

                        } else if (attribute == 'phone') {
                            if (hasOrganization == "True") {
                                if (currentValue != "") {
                                    $(labelSelector).text(currentValue);
                                    var parent = $(labelSelector).parents('.editable-value');
                                    parent.removeClass("editable-value");
                                    parent.addClass("edited-value");
                                    $("input[name='" + statusSelector + "']").val("1");
                                    $('.btn-update-member').removeClass("hide");
                                    $('.btn-container').removeClass("medium-4");
                                    $('.btn-container').addClass("medium-3");

                                } else {
                                    if (!hasCustomRulesForFields || !isRequiredPhone) {
                                        $(labelSelector).text(currentValue);
                                        var parent = $(labelSelector).parents('.editable-value');
                                        parent.removeClass("editable-value");
                                        parent.addClass("edited-value");

                                        $('.btn-update-member').removeClass("hide");
                                        $('.btn-container').removeClass("medium-4");
                                        $('.btn-container').addClass("medium-3");
                                        $('.btn-update-member').removeClass("disabled");
                                        $("input[name='" + statusSelector + "']").val("1");



                                    } else if (isRequiredPhone) {

                                        $("input[name='" + inputSelector + "']").val(originalValue);
                                        $(labelSelector).text(originalValue);

                                        Swal.fire({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.phone_is_required_row,
                                            icon: "error",
                                            confirmButtonText: "Ok",
                                            closeOnConfirm: true
                                        });
                                    }
                                }

                            } else {
                                if (currentValue != "") {
                                    $(labelSelector).text(currentValue);
                                    var parent = $(labelSelector).parents('.editable-value');
                                    parent.removeClass("editable-value");
                                    parent.addClass("edited-value");
                                    $("input[name='" + statusSelector + "']").val("1");
                                    $('.btn-update-member').removeClass("hide");
                                    $('.btn-container').removeClass("medium-4");
                                    $('.btn-container').addClass("medium-3");

                                } else {

                                    if (!hasCustomRulesForFields) {
                                        var emailSelector = "editable-email-" + counter;
                                        var emailValue = $("input[name='" + emailSelector + "']").val();
                                        if (emailValue != "") {
                                            $(labelSelector).text(currentValue);
                                            var parent = $(labelSelector).parents('.editable-value');
                                            parent.removeClass("editable-value");
                                            parent.addClass("edited-value");
                                            $("input[name='" + statusSelector + "']").val("1");
                                            $('.btn-update-member').removeClass("hide");
                                            $('.btn-container').removeClass("medium-4");
                                            $('.btn-container').addClass("medium-3");
                                        } else {
                                            Swal.fire({
                                                title: window.translation.error_editing_field,
                                                text: window.translation.phone_can_not_empty_because_the_email_is_empty,
                                                icon: "error",
                                                confirmButtonText: "Ok",
                                                closeOnConfirm: true
                                            });
                                            $("input[name='" + inputSelector + "']").val(originalValue);
                                            $(labelSelector).text(originalValue);
                                        }
                                    } else if (isRequiredPhone) {
                                        $("input[name='" + inputSelector + "']").val(originalValue);
                                        $(labelSelector).text(originalValue);

                                        Swal.fire({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.phone_is_required_row,
                                            icon: "error",
                                            confirmButtonText: "Ok",
                                            closeOnConfirm: true
                                        });
                                    } else {
                                        $(labelSelector).text(currentValue);
                                        var parent = $(labelSelector).parents('.editable-value');
                                        parent.removeClass("editable-value");
                                        parent.addClass("edited-value");
                                        $("input[name='" + statusSelector + "']").val("1");
                                        $('.btn-update-member').removeClass("hide");
                                        $('.btn-container').removeClass("medium-4");
                                        $('.btn-container').addClass("medium-3");
                                    }
                                }

                            }
                        } else if (attribute == "age") {

                            if (currentValue != "") {

                                if (isInt(currentValue)) {

                                    if (isRequiredAge && parseInt(currentValue) === 0) {
                                        Swal.fire({
                                            title: window.translation.error_editing_field,
                                            text: window.translation.age_is_required_row,
                                            icon: "error",
                                            confirmButtonText: "Ok",
                                            closeOnConfirm: true
                                        });
                                        $("input[name='" + inputSelector + "']").val(originalValue);
                                        $(labelSelector).text(originalValue);

                                    } else {
                                        $(labelSelector).text(currentValue);
                                        var parent = $(labelSelector).parents('.editable-value');
                                        parent.removeClass("editable-value");
                                        parent.addClass("edited-value");
                                        $("input[name='" + statusSelector + "']").val("1");
                                        $('.btn-update-member').removeClass("hide");
                                        $('.btn-container').removeClass("medium-4");
                                        $('.btn-container').addClass("medium-3");
                                    }
                                } else {
                                    Swal.fire({
                                        title: window.translation.error_editing_field,
                                        text: window.translation.age_is_invalid,
                                        icon: "error",
                                        confirmButtonText: "Ok",
                                        closeOnConfirm: true
                                    });
                                    $("input[name='" + inputSelector + "']").val(originalValue);
                                    $(labelSelector).text(originalValue);
                                }

                            } else {

                                if (!hasCustomRulesForFields || !isRequiredAge) {

                                    $(labelSelector).text(currentValue);
                                    var parent = $(labelSelector).parents('.editable-value');
                                    parent.removeClass("editable-value");
                                    parent.addClass("edited-value");
                                    $('.btn-update-member').removeClass("hide");
                                    $('.btn-container').removeClass("medium-4");
                                    $('.btn-container').addClass("medium-3");
                                    $('.btn-update-member').removeClass("disabled");
                                    $("input[name='" + statusSelector + "']").val("1");

                                } else if (isRequiredAge) {
                                    Swal.fire({
                                        title: window.translation.error_editing_field,
                                        text: window.translation.age_is_required_row,
                                        icon: "error",
                                        confirmButtonText: "Ok",
                                        closeOnConfirm: true
                                    });
                                    $("input[name='" + inputSelector + "']").val(originalValue);
                                    $(labelSelector).text(originalValue);
                                }

                            }

                        }


                    }
                });
            }
            else {

                $('#checkAge-' + counter).removeAttr('disabled');
                var originalValue = $('#checkAge-' + counter).data('original-value') === 'True' || $('#checkAge-' + counter).data('original-value') === true;
                $('#checkAge-' + counter).change(function (item) {
                    var id = $(this).attr("id");

                    if (originalValue != $(this).prop('checked')) {
                        var parent = $(labelSelector).parents('.editable-value');
                        parent.removeClass("editable-value");
                        parent.addClass("edited-value");
                        $("input[name='" + statusSelector + "']").val("1");
                        $('.btn-update-member').removeClass("hide");
                        $('.btn-update-member').removeClass("disabled");
                        $('.btn-container').removeClass("medium-4");
                        $('.btn-container').addClass("medium-3");
                    }
                    else {
                        var parent = $(labelSelector).parents('.edited-value');
                        parent.removeClass("edited-value");
                        parent.addClass("editable-value");
                        if ($("td.edited-value").length == 0) {
                            $('.btn-update-member').addClass("hide");
                            $('.btn-container').removeClass("medium-3");
                            $('.btn-container').addClass("medium-4");
                            $("input[name='" + statusSelector + "'").val("0");
                        }
                    }
                });

            }
        });

        $(document).on('click', 'td.edited-value span.cell-edit-btn', function () {
            var counter = $(this).attr("data-counter-value");
            var attribute = $(this).attr("data-attr-name");
            var labelSelector = ".editable-" + attribute + "-label-" + counter;
            var inputSelector = "editable-" + attribute + "-" + counter;
            var statusSelector = "team-member-status-" + counter;
            if (attribute != "checkAge") {
                var originalValue = $("input[name='" + inputSelector + "'").attr('data-original-value');
                if (originalValue == null || originalValue == undefined)
                    originalValue = '';
                $(labelSelector).text(originalValue);
                var parent = $(labelSelector).parents('.edited-value');

                parent.removeClass("edited-value");
                parent.addClass("editable-value");
                $("input[name='" + inputSelector + "'").val(originalValue);
                if ($("td.edited-value").length == 0) {
                    $('.btn-update-member').addClass("hide");
                    $('.btn-container').removeClass("medium-3");
                    $('.btn-container').addClass("medium-4");
                    $("input[name='" + statusSelector + "'").val("0");
                }
            }
            else {
                var originalValue = $('#checkAge-' + counter).data('original-value') === 'True' || $('#checkAge-' + counter).data('original-value') === true;
                if (originalValue) {
                    $('#checkAge-' + counter).attr('checked', 'checked');
                }
                else {
                    $('#checkAge-' + counter).removeAttr('checked');
                }
                $('#checkAge-' + counter).attr('disabled', 'disabled');

                var parent = $(labelSelector).parents('.edited-value');
                parent.removeClass("edited-value");
                parent.addClass("editable-value");
                if ($("td.edited-value").length == 0) {
                    $('.btn-update-member').addClass("hide");
                    $('.btn-container').removeClass("medium-3");
                    $('.btn-container').addClass("medium-4");
                    $("input[name='" + statusSelector + "'").val("0");
                }

            }
        });

    }
}



function validateEmail(value) {
    emailRegex = /^[-\w.%+]{1,64}@(?:[A-Z0-9-]{1,63}\.){1,125}[A-Z]{2,63}$/i;
    if (emailRegex.test(value)) {
        return true;
    }
    return false;
}

function replaceSpecialCharacters(originalPath) {
    var specialCharacters = ['"', "'", '(', ')'];
    specialCharacters.forEach(function (character) {
        var newReplace = '\\' + character;
        originalPath = originalPath.replaceAll(character, newReplace);
    });
    return originalPath;
}

function send_email_opportunity_detail() {
    if ($('body.volunteer-opportunity-detail-page').length > 0 || $('body.volunteer-opportunity-detail-page-v2').length > 0
        || $('body.volunteer-opportunity-detail-page-v3').length > 0) {
        $(document).on('click', 'a.opportunity-leader-email', function (e) {
            e.preventDefault();
            var emailToSend = $(this).attr('data-attr-email');
            var nameToSend = $(this).attr('data-attr-name');
            var emailOpportunityName = $(this).attr('data-opportunity-name');
            var emailStartDate = $(this).attr('data-occ-start-date-time');
            var emailEndDate = $(this).attr('data-occ-end-date-time');
            var emailUrl = $(this).attr('data-url');
            $('#modal-email-opp').foundation('open');
            $('#SendEmailTo').text(nameToSend);
            $('#emailToSend').val(emailToSend);
            $('#emailOpportunityName').val(emailOpportunityName);
            $('#emailStartDate').val(emailStartDate);
            $('#emailEndDate').val(emailEndDate);
            $('#emailUrl').val(emailUrl);

            if ($('form#send-email-vol-opp input[name="recaptcha"]').length > 0) {

                if (typeof GenerateOppDetailKey === "function") {
                    GenerateOppDetailKey();
                }
            }

            let buttonOpen = $(this);
            $(document).on('closed.zf.reveal', '#modal-email-opp', function () {
                buttonOpen.focus();
            });

            return false;
        });


        $(document).on('click', 'form#send-email-vol-opp a#butEmailopp', function (e) {
            e.preventDefault();
            if ($('form#send-email-vol-opp input[name="recaptcha"]').length > 0) {
                var securityKey = getClientSecurityKey();
                var recalculateToken = false;
                if (securityKey != undefined) {
                    // compare the current time vs the time when the token eas generated
                    var initialTime = $('form#send-email-vol-opp input[name="user_response_time"]').val();
                    var currentTime = new Date().getTime();

                    var diff = currentTime - initialTime;

                    if (diff > 90000)
                        recalculateToken = true;

                }

                if (recalculateToken === true) {
                    $('#send-email-vol-opp').find("a#butEmailopp").attr("disabled", true);
                    var actionName = $('form#send-email-vol-opp input[name="pageactioname"]').val();

                    grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {

                        if ($('form#send-email-vol-opp input[name="user_response"]').length > 0) {
                            var currentTime = new Date().getTime();
                            currentTime = currentTime + (24 * 60 * 60 * 1000);
                            $('form#send-email-vol-opp input[name="user_response"]').val(token);
                            $('form#send-email-vol-opp input[name="user_response_time"]').val(currentTime);
                        }

                        $('form#send-email-vol-opp').submit();
                    });
                } else {
                    $('form#send-email-vol-opp').submit();
                }
            }
            else {
                $('form#send-email-vol-opp').submit();
            }
            return false;
        });
    }

}

function validate_team_members_before_create() {
    var isEmailRequired = false;
    var isPhoneRequired = false;
    var isAgeRequired = false;

    var isEmailVisible = false;
    var isPhoneVisible = false;
    var isAgeVisible = false;

    var counterInvalidRows = 0;


    if ($("#createanewteam input[name='isRequiredEmail']").val() === "True" || $("#createanewteam input[name='isRequiredEmail']").val() === true)
        isEmailRequired = true;

    if ($("#createanewteam input[name='isRequiredPhone']").val() === "True" || $("#createanewteam input[name='isRequiredPhone']").val() === true)
        isPhoneRequired = true;

    if (($("#createanewteam input[name='isRequiredAge']").val() === "True" || $("#createanewteam input[name='isRequiredAge']").val() === true) &&
        ($("#createanewteam input[name='isOverAgeActive']").val() === "False" || $("#createanewteam input[name='isOverAgeActive']").val() === false) &&
        ($("#createanewteam input[name='isFullHideActive']").val() === "False" || $("#createanewteam input[name='isFullHideActive']").val() === false))
        isAgeRequired = true;



    if ($("#createanewteam input[name='isVisibleEmail']").val() === "True" || $("#createanewteam input[name='isVisibleEmail']").val() === true)
        isEmailVisible = true;

    if ($("#createanewteam input[name='isVisiblePhone']").val() === "True" || $("#createanewteam input[name='isVisiblePhone']").val() === true)
        isPhoneVisible = true;

    if (($("#createanewteam input[name='isVisibleAge']").val() === "True" || $("#createanewteam input[name='isVisibleAge']").val() === true) &&
        ($("#createanewteam input[name='isOverAgeActive']").val() === "False" || $("#createanewteam input[name='isOverAgeActive']").val() === false) &&
        ($("#createanewteam input[name='isFullHideActive']").val() === "False" || $("#createanewteam input[name='isFullHideActive']").val() === false))
        isAgeVisible = true;


    var counter = 1;
    $("form#createanewteam tbody#tablebody tr.newMember").each(function (item) {
        var values = '';
        var email = '';
        var phone = '';
        var age = '';
        var lastName = '';
        var firstName = '';
        var missingRequiredFieldEmail = false;
        var missingRequiredFieldPhone = false;
        var missingRequiredFieldAge = false;
        var missingRequiredFieldLastName = false;
        var missingRequiredFieldFirstName = false;


        if (isEmailVisible) {
            var field = $(this).find('input[name="email-' + counter + '"]');
            email = field.val();
            values += email;

            if (isEmailRequired && email == '')
                missingRequiredFieldEmail = true;
            else
                field.removeClass("special-required");
        }

        if (isPhoneVisible) {
            var field = $(this).find('input[name="phone-' + counter + '"]');
            phone = field.val();
            values += phone;

            if (isPhoneRequired && phone == '')
                missingRequiredFieldPhone = true;
            else
                field.removeClass("special-required");
        }

        if (isAgeVisible) {
            var field = $(this).find('input[name="age-' + counter + '"]');
            age = field.val();
            values += age;

            if (isAgeRequired && age == '')
                missingRequiredFieldAge = true;
            else
                field.removeClass("special-required");
        }

        firstName = $(this).find('input[name="name-' + counter + '"]').val();
        values += firstName;

        if (firstName == '') {
            missingRequiredFieldFirstName = true;
        }
        else
            $(this).find('input[name="name-' + counter + '"]').removeClass("special-required");


        lastName = $(this).find('input[name="last-' + counter + '"]').val();
        values += lastName;

        if (lastName == '') {
            missingRequiredFieldLastName = true;
        }
        else
            $(this).find('input[name="last-' + counter + '"]').removeClass("special-required");


        if (values != '' && (missingRequiredFieldEmail || missingRequiredFieldAge || missingRequiredFieldPhone || missingRequiredFieldLastName || missingRequiredFieldFirstName)) {
            counterInvalidRows++;

            if (missingRequiredFieldEmail)
                $(this).find('input[name="email-' + counter + '"]').addClass("special-required");

            if (missingRequiredFieldPhone)
                $(this).find('input[name="phone-' + counter + '"]').addClass("special-required");

            if (missingRequiredFieldAge)
                $(this).find('input[name="age-' + counter + '"]').addClass("special-required");

            if (missingRequiredFieldLastName)
                $(this).find('input[name="last-' + counter + '"]').addClass("special-required");

            if (missingRequiredFieldFirstName)
                $(this).find('input[name="name-' + counter + '"]').addClass("special-required");


        }

        counter++;

    });

    if (counterInvalidRows > 0) {
        // focus in the first element with the special-required class
        $("form#createanewteam input.special-required").first().focus();
    }

    return counterInvalidRows;

}

function isInt(value) {
    return !isNaN(value) &&
        parseInt(Number(value)) == value &&
        !isNaN(parseInt(value, 10));
}

function validate_dropdown_language_mobile() {
    if ($('.language-mobile').length > 0 && $('.language-mobile').is(':visible')) {
        $(document).on('change', '.language-mobile .section-for-field select#language-field', function () {
            var langId = $(this).val();
            document.location = '/language/' + langId;
        });
    }
}

function verify_session_storage_variables() {
    try {
        if ($("body.logged").length > 0 || $("body.partner-portal").length > 0) {

            var contactId = null;
            var orgId = null;
            var userProfile = null;

            if (window.sessionStorage) {
                contactId = window.sessionStorage.getItem('Salesforce Contact ID');
                orgId = window.sessionStorage.getItem('Salesforce Organization ID');
                userProfile = window.sessionStorage.getItem('User Profile');

                if (contactId == null || contactId === undefined || contactId === ''
                    || userProfile == null || userProfile === undefined || userProfile === '') { // invoke service to detect 
                    sessionVarsStatus = 1;
                    var xhrFirst = $.ajax({
                        method: "GET",
                        url: "/user-information",
                        cache: false,
                    }).done(function (data) {
                        data = JSON.parse(data);
                        if (data.status == "success") {

                            if (data.contactId !== undefined) {
                                sessionStorage.setItem('Salesforce Contact ID', data.contactId);
                            }

                            if (data.organizationId !== undefined && data.organizationId != null && data.organizationId !== '') {
                                sessionStorage.setItem('Salesforce Organization ID', data.organizationId);
                                orgId = data.organizationId
                            }

                            if (data.profile !== undefined && data.profile != null && data.profile !== '') {
                                sessionStorage.setItem('User Profile', data.profile);
                            }

                            sessionVarsStatus = 2;
                        }

                    });

                    xhrSessionVars.push(xhrFirst);
                }
                if ((orgId == null || orgId === undefined || orgId === '') && $('body').hasClass('partner-portal')) {
                    var xhrSecond = $.ajax({
                        method: "GET",
                        url: "/user-information",
                        cache: false,
                    }).done(function (data) {
                        data = JSON.parse(data);
                        if (data.status == "success") {
                            if (data.organizationId !== undefined && data.organizationId != null && data.organizationId !== '') {
                                sessionStorage.setItem('Salesforce Organization ID', data.organizationId);
                            }

                            sessionVarsStatus = 2;
                        }

                    });

                    xhrSessionVars.push(xhrSecond);
                }
            }


        } else {
            //Verify if the sessionStorage is present then it is removed
            if (window.sessionStorage) {
                contactId = window.sessionStorage.getItem('Salesforce Contact ID');
                if (contactId != null && contactId !== undefined && contactId !== '') {
                    sessionStorage.removeItem('Salesforce Contact ID');
                }

                orgId = window.sessionStorage.getItem('Salesforce Organization ID');
                if (orgId != null && orgId !== undefined && orgId !== '') {
                    sessionStorage.removeItem('Salesforce Organization ID');
                }


                accId = window.sessionStorage.getItem('Salesforce Contact Account ID');
                if (accId != null && accId !== undefined && accId !== '') {
                    sessionStorage.removeItem('Salesforce Contact Account ID');
                }

                accName = window.sessionStorage.getItem('Salesforce Contact Account Name');
                if (accName != null && accName !== undefined && accName !== '') {
                    sessionStorage.removeItem('Salesforce Contact Account Name');
                }

                userProfile = window.sessionStorage.getItem('User Profile');
                if (userProfile != null && userProfile !== undefined && userProfile !== '') {
                    sessionStorage.removeItem('User Profile');
                }
            }
        }
    } catch (e) {
        window.console && console.error(e)
    }

}

function public_team_datatable() {
    if ($("body.page-search-public-teams").length > 0) {
        $('#public-team').DataTable().destroy()
        $('#public-team').DataTable({ "paging": false, "bFilter": false });
    }
}

function verify_special_Requirements() {

    $("input.password-field-with-meter").on('keyup', function (event) {
        var preliminarPassword = $(this).val();
        if ($('div.password-meter-detailed').length > 0) {
            var minLength = $("input.password-field-with-meter").data('psw-min-length');
            var repetitiveN = $("input.password-field-with-meter").data('psw-repetitive');
            var sequentialN = $("input.password-field-with-meter").data('psw-sequential');
            if (preliminarPassword == '') {
                $('div.password-meter-detailed ul.password-requirements li').addClass('not-accomplishment');
                $('div.password-meter-detailed ul.password-requirements li').removeClass('fullfiled');

            } else {
                if ($('div.password-meter-detailed ul.password-requirements li.req-min-length').length > 0) {
                    if (preliminarPassword.trim().length >= minLength) {
                        $('div.password-meter-detailed ul.password-requirements li.req-min-length').removeClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-min-length').addClass('fullfiled');
                    }
                    else {
                        $('div.password-meter-detailed ul.password-requirements li.req-min-length').addClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-min-length').removeClass('fullfiled');
                    }
                }
                if ($('div.password-meter-detailed ul.password-requirements li.req-numeric').length > 0) {
                    var numericRegEx = RegExp('(?=.*[0-9]+).*');
                    if (numericRegEx.test(preliminarPassword)) {
                        $('div.password-meter-detailed ul.password-requirements li.req-numeric').removeClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-numeric').addClass('fullfiled');
                    }
                    else {
                        $('div.password-meter-detailed ul.password-requirements li.req-numeric').addClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-numeric').removeClass('fullfiled');
                    }
                }
                if ($('div.password-meter-detailed ul.password-requirements li.req-alphabetic').length > 0) {
                    var alpharegEx = RegExp('(?=.*[a-zA-Z]+).*');
                    if (alpharegEx.test(preliminarPassword)) {
                        $('div.password-meter-detailed ul.password-requirements li.req-alphabetic').removeClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-alphabetic').addClass('fullfiled');
                    }
                    else {
                        $('div.password-meter-detailed ul.password-requirements li.req-alphabetic').addClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-alphabetic').removeClass('fullfiled');
                    }
                }
                if ($('div.password-meter-detailed ul.password-requirements li.req-upper').length > 0) {
                    var upperRegEx = RegExp('(?=.*[A-Z]+).*');
                    if (upperRegEx.test(preliminarPassword)) {
                        $('div.password-meter-detailed ul.password-requirements li.req-upper').removeClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-upper').addClass('fullfiled');
                    }
                    else {
                        $('div.password-meter-detailed ul.password-requirements li.req-upper').addClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-upper').removeClass('fullfiled');
                    }
                }
                if ($('div.password-meter-detailed ul.password-requirements li.req-lower').length > 0) {
                    var lowerRegEx = RegExp('(?=.*[a-z]+).*');
                    if (lowerRegEx.test(preliminarPassword)) {
                        $('div.password-meter-detailed ul.password-requirements li.req-lower').removeClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-lower').addClass('fullfiled');
                    }
                    else {
                        $('div.password-meter-detailed ul.password-requirements li.req-lower').addClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-lower').removeClass('fullfiled');
                    }
                }
                if ($('div.password-meter-detailed ul.password-requirements li.req-special').length > 0) {
                    var specialRegEx = RegExp('(?=.*[\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\@\[\\\]\^_\`\{\|\}\~]+).*');
                    if (specialRegEx.test(preliminarPassword)) {
                        $('div.password-meter-detailed ul.password-requirements li.req-special').removeClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-special').addClass('fullfiled');
                    }
                    else {
                        $('div.password-meter-detailed ul.password-requirements li.req-special').addClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-special').removeClass('fullfiled');
                    }
                }
                //Repetitive Numbers validation
                if ($('div.password-meter-detailed ul.password-requirements li.req-repetitive').length > 0 && !isNaN(repetitiveN)) {

                    var isRepetitivePassword = !is_valid_password_repetitive(preliminarPassword, repetitiveN);
                    if (isRepetitivePassword) {
                        $('div.password-meter-detailed ul.password-requirements li.req-repetitive').addClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-repetitive').removeClass('fullfiled');
                    }
                    else {
                        $('div.password-meter-detailed ul.password-requirements li.req-repetitive').removeClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-repetitive').addClass('fullfiled');
                    }
                }
                //Sequential Numbers validation
                if ($('div.password-meter-detailed ul.password-requirements li.req-sequential').length > 0 && typeof !isNaN(sequentialN)) {

                    var isSequentialPassword = !is_valid_password_sequential(preliminarPassword, sequentialN);
                    if (isSequentialPassword) {
                        $('div.password-meter-detailed ul.password-requirements li.req-sequential').addClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-sequential').removeClass('fullfiled');
                    }
                    else {
                        $('div.password-meter-detailed ul.password-requirements li.req-sequential').removeClass('not-accomplishment');
                        $('div.password-meter-detailed ul.password-requirements li.req-sequential').addClass('fullfiled');
                    }
                }
            }

        }
    });

}

function verify_password_meter() {
    try {

        if ($("input.password-field-with-meter").length > 0) {

            verify_special_Requirements();

            $("input.password-field-with-meter").keyup(function (event) {
                if (event.which == 13) {
                    event.preventDefault();
                }

                var showPwdMeter = true;
                var pwd = $(this).val();

                if ((pwd === '' || pwd == '' || pwd === undefined))
                    showPwdMeter = false;

                if (showPwdMeter === true) {
                    $('div.password-meter').show();
                    $('div.password-meter-detailed').show();
                    $('div.paddy-element').removeClass('hide');
                    var response = zxcvbn(pwd, user_inputs = []);

                    if (response != null && response !== undefined && $('div.password-meter').length > 0) {
                        var classCss = "";
                        var clasification = "";
                        switch (response.score) {
                            case 1:
                                classCss = "alert";
                                clasification = window.translation.password_very_weak;
                                break;
                            case 2:
                                classCss = "warning";
                                clasification = window.translation.password_weak;
                                break;
                            case 3:
                                classCss = "secondary";
                                clasification = window.translation.password_good;
                                break;
                            case 4:
                                classCss = "success";
                                clasification = window.translation.password_very_strong;
                                break;
                            default:
                                classCss = "urgent";
                                clasification = window.translation.password_very_weak;
                        }
                        let percentage = (response.score / 4.0) * 100;
                        var percentageStyle = 'width: ' + (response.score * 20 + 20) + '%';
                        $('div.progress-bar-section').attr('aria-valuenow', percentage);
                        $('div.progress-bar-section').attr('aria-label', clasification);
                        $('div.password-meter').removeClass('alert warning secondary success urgent');
                        $('div.password-meter').addClass(classCss);
                        $('div.password-meter div.progress-meter').attr("style", percentageStyle);
                        $('div.password-meter div.progress-meter p.progress-meter-text').html(clasification);


                    }
                } else {
                    $('div.password-meter').hide();
                    $('div.password-meter-detailed').hide();
                    $('div.paddy-element').addClass('hide');
                }
            });

        }
    } catch (e) {
        window.console && console.error(e)
    }
}

function validate_main_phone() {
    if ($('form#volunteer-register-form').find('select[name*="primary_phone"]').length > 0) {
        if ($('select[name*="primary_phone"]').attr('data-required') == null || $('select[name*="primary_phone"]').attr('data-required') == undefined || $('select[name*="primary_phone"]').attr('data-required') == 'false') {
            return;
        }
        $('select[name*="primary_phone"]').on('change', function () {

            var x = $('select[name*="primary_phone"]').val();

            if (x == "Home") {
                $("[name='phone']").prop("required", true);
                $("[name='work_phone']").prop("required", false);
                $("[name='mobile_phone']").prop("required", false);
                $("[name='other_phone']").prop("required", false);

                $("label[for ='phone']").addClass("required");
                $("label[for ='work_phone']").removeClass("required");
                $("label[for ='mobile_phone']").removeClass("required");
                $("label[for ='other_phone']").removeClass("required");

                $("label[for ='phone']").attr("data-required", "*");
                $("label[for ='work_phone']").removeAttr("data-required");
                $("label[for ='mobile_phone']").removeAttr("data-required");
                $("label[for ='other_phone']").removeAttr("data-required");

                $("[name='phone']").attr("data-required", "true");
                $("[name='work_phone']").removeAttr("data-required");
                $("[name='mobile_phone']").removeAttr("data-required");
                $("[name='other_phone']").removeAttr("data-required");

            } else if (x == "Mobile") {

                $("[name='mobile_phone']").prop("required", true);
                $("[name='phone']").prop("required", false);
                $("[name='work_phone']").prop("required", false);
                $("[name='other_phone']").prop("required", false);

                $("label[for ='mobile_phone']").addClass("required");
                $("label[for ='phone']").removeClass("required");
                $("label[for ='work_phone']").removeClass("required");
                $("label[for ='other_phone']").removeClass("required");

                $("label[for ='mobile_phone']").attr("data-required", "*");
                $("label[for ='phone']").removeAttr("data-required");
                $("label[for ='work_phone']").removeAttr("data-required");
                $("label[for ='other_phone']").removeAttr("data-required");

                $("[name='mobile_phone']").attr("data-required", "true");
                $("[name='phone']").removeAttr("data-required");
                $("[name='work_phone']").removeAttr("data-required");
                $("[name='other_phone']").removeAttr("data-required");

            } else if (x == "Business") {
                $("[name='work_phone']").prop("required", true);
                $("[name='phone']").prop("required", false);
                $("[name='mobile_phone']").prop("required", false);
                $("[name='other_phone']").prop("required", false);

                $("label[for ='work_phone']").addClass("required");
                $("label[for ='phone']").removeClass("required");
                $("label[for ='mobile_phone']").removeClass("required");
                $("label[for ='other_phone']").removeClass("required");

                $("label[for ='work_phone']").attr("data-required", "*");
                $("label[for ='phone']").removeAttr("data-required");
                $("label[for ='mobile_phone']").removeAttr("data-required");
                $("label[for ='other_phone']").removeAttr("data-required");

                $("[name='work_phone']").attr("data-required", "true");
                $("[name='phone']").removeAttr("data-required");
                $("[name='mobile_phone']").removeAttr("data-required");
                $("[name='other_phone']").removeAttr("data-required");

            } else if (x == "Other") {
                $("[name='other_phone']").prop("required", true);
                $("[name='phone']").prop("required", false);
                $("[name='mobile_phone']").prop("required", false);
                $("[name='work_phone']").prop("required", false);

                $("label[for ='other_phone']").addClass("required");
                $("label[for ='phone']").removeClass("required");
                $("label[for ='mobile_phone']").removeClass("required");
                $("label[for ='work_phone']").removeClass("required");

                $("label[for ='other_phone']").attr("data-required", "*");
                $("label[for ='phone']").removeAttr("data-required");
                $("label[for ='mobile_phone']").removeAttr("data-required");
                $("label[for ='work_phone']").removeAttr("data-required");

                $("[name='other_phone']").attr("data-required", "true");
                $("[name='phone']").removeAttr("data-required");
                $("[name='mobile_phone']").removeAttr("data-required");
                $("[name='work_phone']").removeAttr("data-required");
            }
        });
    }

}

function validate_main_phone_personal_information() {
    if ($('form#personal-information-form').find('select[name*="PrimaryPhoneChoice"]').length > 0) {
        if ($('select[name*="PrimaryPhoneChoice"]').attr('data-required') == null || $('select[name*="PrimaryPhoneChoice"]').attr('data-required') == undefined || $('select[name*="PrimaryPhoneChoice"]').attr('data-required') == 'false') {
            return;
        }
        $('select[name*="PrimaryPhoneChoice"]').on('change', function () {
            var x = $('select[name*="PrimaryPhoneChoice"]').val();

            if (x == "Home") {
                $("[name='HomePhone']").prop("required", true);
                $("[name='BusinessPhone']").prop("required", false);
                $("[name='MobilePhone']").prop("required", false);
                $("[name='OtherPhone']").prop("required", false);

                $("label[for ='phone']").addClass("required");
                $("label[for ='work_phone']").removeClass("required");
                $("label[for ='mobile_phone']").removeClass("required");
                $("label[for ='other_phone']").removeClass("required");

                $("label[for ='phone']").attr("data-required", "*");
                $("label[for ='work_phone']").removeAttr("data-required");
                $("label[for ='mobile_phone']").removeAttr("data-required");
                $("label[for ='other_phone']").removeAttr("data-required");

                $("[name='HomePhone']").attr("data-required", "true");
                $("[name='BusinessPhone']").removeAttr("data-required");
                $("[name='MobilePhone']").removeAttr("data-required");
                $("[name='OtherPhone']").removeAttr("data-required");

            } else if (x == "Mobile") {

                $("[name='MobilePhone']").prop("required", true);
                $("[name='HomePhone']").prop("required", false);
                $("[name='BusinessPhone']").prop("required", false);
                $("[name='OtherPhone']").prop("required", false);

                $("label[for ='mobile_phone']").addClass("required");
                $("label[for ='phone']").removeClass("required");
                $("label[for ='work_phone']").removeClass("required");
                $("label[for ='other_phone']").removeClass("required");

                $("label[for ='mobile_phone']").attr("data-required", "*");
                $("label[for ='phone']").removeAttr("data-required");
                $("label[for ='work_phone']").removeAttr("data-required");
                $("label[for ='other_phone']").removeAttr("data-required");

                $("[name='MobilePhone']").attr("data-required", "true");
                $("[name='HomePhone']").removeAttr("data-required");
                $("[name='BusinessPhone']").removeAttr("data-required");
                $("[name='OtherPhone']").removeAttr("data-required");

            } else if (x == "Business") {
                $("[name='BusinessPhone']").prop("required", true);
                $("[name='HomePhone']").prop("required", false);
                $("[name='MobilePhone']").prop("required", false);
                $("[name='OtherPhone']").prop("required", false);

                $("label[for ='work_phone']").addClass("required");
                $("label[for ='phone']").removeClass("required");
                $("label[for ='mobile_phone']").removeClass("required");
                $("label[for ='other_phone']").removeClass("required");

                $("label[for ='work_phone']").attr("data-required", "*");
                $("label[for ='phone']").removeAttr("data-required");
                $("label[for ='mobile_phone']").removeAttr("data-required");
                $("label[for ='other_phone']").removeAttr("data-required");

                $("[name='BusinessPhone']").attr("data-required", "true");
                $("[name='HomePhone']").removeAttr("data-required");
                $("[name='MobilePhone']").removeAttr("data-required");
                $("[name='OtherPhone']").removeAttr("data-required");

            } else if (x == "Other") {
                $("[name='OtherPhone']").prop("required", true);
                $("[name='HomePhone']").prop("required", false);
                $("[name='MobilePhone']").prop("required", false);
                $("[name='BusinessPhone']").prop("required", false);

                $("label[for ='other_phone']").addClass("required");
                $("label[for ='phone']").removeClass("required");
                $("label[for ='mobile_phone']").removeClass("required");
                $("label[for ='work_phone']").removeClass("required");

                $("label[for ='other_phone']").attr("data-required", "*");
                $("label[for ='phone']").removeAttr("data-required");
                $("label[for ='mobile_phone']").removeAttr("data-required");
                $("label[for ='work_phone']").removeAttr("data-required");

                $("[name='OtherPhone']").attr("data-required", "true");
                $("[name='HomePhone']").removeAttr("data-required");
                $("[name='MobilePhone']").removeAttr("data-required");
                $("[name='BusinessPhone']").removeAttr("data-required");
            }
        });
    }

}


function retrieveGetParameter(name) {
    // This function is anonymous, is executed immediately and
    // the return value is assigned to QueryString!
    var query_string = getQueryString();
    var value = null;

    //Fixes with characters +
    if (query_string[name]) {

        value = query_string[name];
        if (value !== null && value !== undefined) {
            value = value.replaceAll("_and_", "&");
            value = value.replaceAll("_comma_", ",");
            value = value.replaceAll("_plus_", "+");
            value = value.replaceAll('_apos_', '"');
            value = value.replaceAll('_slash_', '/');

        }
    }
    return value;
}

function retrieveGetParameterFromCustom(name, customURL) {

    var query_string = getQueryString(customURL);
    var value = null;
    if (query_string[name]) {

        value = query_string[name];
        if (value !== null && value !== undefined) {
            value = value.replaceAll("_and_", "&");
            value = value.replaceAll("_comma_", ",");
            value = value.replaceAll("_plus_", "+");
            value = value.replaceAll('_apos_', '"');
            value = value.replaceAll('_slash_', '/');

        }
    }
    return value;
}

function getClientSecurityKey() {
    var key = undefined;

    if ($("script#clientsecuritykey").length > 0) {
        key = $("script#clientsecuritykey").prop("title");
    }
    return key;
}

function validate_view_in_dropdown() {

    if ($('.opportunity-detail-content').hasClass('dropdown-mode-view')) {
        var selector = ".opportunity-detail-content.dropdown-mode-view select#dropdown-select-date";
        if ($(selector).length > 0) {

            var valSelected = $(selector).val();
            if (valSelected !== undefined && valSelected !== null) {
                $('.item-occ').each(function () {
                    if ($(this).hasClass('item-' + valSelected)) {
                        $(this).find('.fieldset-content').css('display', 'block');
                        $(this).show();
                    } else {
                        $(this).hide();
                    }
                });
            }

            $(selector).on('change', function () {
                var valSelected = $(this).val();
                $('.item-occ').each(function () {
                    if ($(this).hasClass('item-' + valSelected)) {
                        $(this).find('.fieldset-content').show();
                        $(this).show();
                    } else {
                        $(this).hide();
                    }
                });

                validate_change_in_map(valSelected);

            });
        }
    }
}

function validate_change_in_map(value) {
    if ($('.map-section').length > 0 && $('input[name="NBZ-' + value + '"]').length > 0) {
        var nbz = $('input[name="NBZ-' + value + '"]').val();
        if (nbz !== undefined && nbz !== null && nbz.trim() !== '') {
            var src = "https://www.google.com/maps/embed/v1/place?q=" + nbz + "&key=AIzaSyBoeDUvbFyGMuT-S4yEukw9kt6I4Pn5aTc";
            $('.map-section').find('iframe.neighborhoodzone').attr('src', src);
        }

    }
}


function datatable_editable_event(datatableObj, afterEdit, e) {
    var doAfterEdit = true;
    var datatable = '#' + datatableObj.attr('id');
    var element_to_edit;
    if ($(e.target).hasClass('cell-edit-btn')) {
        element_to_edit = $(e.target).closest('td').find('input.input-cell-value')[0];
    }
    doAfterEdit = false;

    if (!$(e.target).closest('form').hasClass('temporal-form')) {
        $(document).find(datatable + ' td.datatable-cell-editing form.temporal-form select.temp-multiselect-table').each(function () {
            var edited = false;
            if (e.target != this && element_to_edit != this) {
                var td = $(this).closest('td');
                if ($(this).val() != null && $(this).val().join(", ") != td.find('span.cell-value').data('defaultValue') || $(this).val() == null) {
                    edited = true;
                    if ($(this).val() == null && td.find('span.cell-value').data('defaultValue') == '') {
                        edited = false;
                        td.find('label.error').remove();
                        td.removeClass('datatable-cell-editing');
                        td.removeClass('datatable-cell-edited');
                        td.parent('tr').removeClass('datatable-row-edited');
                        td.find('.date-picker-input').fdatepicker('remove');
                        td.find('.fake-date-picker-container').remove();
                        td.find('input:not(.record-id):not(.additional-fields)').remove();
                        td.find('form').remove();
                    }
                } else {
                    td.find('label.error').remove();
                    td.removeClass('datatable-cell-editing');
                    td.removeClass('datatable-cell-edited');
                    td.parent('tr').removeClass('datatable-row-edited');
                    td.find('.date-picker-input').fdatepicker('remove');
                    td.find('.fake-date-picker-container').remove();
                    td.find('input:not(.record-id):not(.additional-fields)').remove();
                    td.find('form').remove();
                }
                if (edited) {
                    var newValue = $(this).val() == null ? '' : $(this).val().join(", ");
                    td.find('span.cell-value').html(newValue + '<span class="reset-btn">&nbsp;</span>');
                    $(this).closest('tr').removeClass('error');
                    td.find('label.error').remove();
                    td.find('.date-picker-input').fdatepicker('remove');
                    td.find('.fake-date-picker-container').remove();
                    td.find('input:not(.record-id):not(.additional-fields)').remove();
                    td.removeClass('datatable-cell-editing');
                    td.addClass('datatable-cell-edited');
                    td.parent('tr').addClass('datatable-row-edited');
                    td.find('form').remove();
                    doAfterEdit = true;
                }
            }
        });
    }

    $(document).find(datatable + ' td.datatable-cell-editing select.temp-select-table').each(function () {
        var edited = false;
        if (e.target != this && element_to_edit != this) {
            var td = $(this).closest('td');
            if ($(this).val() != td.find('span.cell-value').data('defaultValue')) {
                edited = true;
                if ($(this).val() == null && td.find('span.cell-value').data('defaultValue') == '') {
                    edited = false;
                    td.find('label.error').remove();
                    td.removeClass('datatable-cell-editing');
                    td.removeClass('datatable-cell-edited');
                    td.parent('tr').removeClass('datatable-row-edited');
                    td.find('.date-picker-input').fdatepicker('remove');
                    td.find('.fake-date-picker-container').remove();
                    td.find('input:not(.record-id):not(.additional-fields)').remove();
                    td.find('select').remove();
                }
            } else {
                td.find('label.error').remove();
                td.removeClass('datatable-cell-editing');
                td.removeClass('datatable-cell-edited');
                td.parent('tr').removeClass('datatable-row-edited');
                td.find('.date-picker-input').fdatepicker('remove');
                td.find('.fake-date-picker-container').remove();
                td.find('input:not(.record-id):not(.additional-fields)').remove();
                td.find('select').remove();
            }
            if (edited) {
                td.find('span.cell-value').html($(this).val() + '<span class="reset-btn">&nbsp;</span>');
                $(this).closest('tr').removeClass('error');
                td.find('label.error').remove();
                td.find('.date-picker-input').fdatepicker('remove');
                td.find('.fake-date-picker-container').remove();
                td.find('input:not(.record-id):not(.additional-fields)').remove();
                td.removeClass('datatable-cell-editing');
                td.addClass('datatable-cell-edited');
                td.parent('tr').addClass('datatable-row-edited');
                td.find('select').remove();
                doAfterEdit = true;
            }
        }
    });



    $(document).find(datatable + ' td.datatable-cell-editing input.input-cell-value').each(function () {
        var edited = false;
        var specialSymbol = $(this).attr('data-symbol-special');
        if (specialSymbol && specialSymbol != 'undefined' && specialSymbol != '%') {
            specialSymbol = ' ' + specialSymbol;
        }
        else if (specialSymbol != '%' || specialSymbol == 'undefined' || !specialSymbol) {
            specialSymbol = '';
        }
        if (e.target != this && element_to_edit != this) {
            var td = $(this).closest('td');
            var valueToSend = '';
            if (td.find('span.cell-value').data('default-value')) {
                valueToSend = td.find('span.cell-value').data('default-value');
                valueToSend = typeof valueToSend === 'string' ? valueToSend.trim() : '';
            }
            if (specialSymbol) {
                valueToSend = valueToSend.replaceAll(specialSymbol, '').trim();
            }
            if ($(this).val() != valueToSend) {
                if ($(this).data('valRegex') != null) {
                    var regex = new RegExp($(this).data('valRegexPattern'));
                    if (regex.test($(this).val())) {
                        edited = true;
                    } else {
                        if (td.find('label.error').length == 0) {
                            var error = $(this).data('valRegex');
                            td.append('<label class="error">' + error + '</label>');
                        }
                    }
                }
                else {
                    edited = true;
                }
            } else {
                td.find('label.error').remove();
                td.removeClass('datatable-cell-editing');
                td.removeClass('datatable-cell-edited');
                td.parent('tr').removeClass('datatable-row-edited');
                td.find('.date-picker-input').fdatepicker('remove');
                td.find('.fake-date-picker-container').remove();
                td.find('input:not(.record-id):not(.additional-fields)').remove();
            }
            if (edited) {
                td.find('span.cell-value').html(htmlEncode($(this).val()) + specialSymbol + '<span class="reset-btn">&nbsp;</span>');
                $(this).closest('tr').removeClass('error');
                td.find('label.error').remove();
                td.find('.date-picker-input').fdatepicker('remove');
                td.find('.fake-date-picker-container').remove();
                td.find('input:not(.record-id):not(.additional-fields)').remove();
                td.removeClass('datatable-cell-editing');
                td.addClass('datatable-cell-edited');
                td.parent('tr').addClass('datatable-row-edited');
                doAfterEdit = true;
            }
        }
    });

    $(document).find(datatable + ' td.datatable-cell-editing input.switch-input-button').each(function () {
        var edited = false;
        if (e.target != this && element_to_edit != this) {
            var td = $(this).closest('td');
            var defaultValueCheck = td.find('span.cell-value').data('defaultValue') === true;
            var newValueCheck = $(this).prop('checked') === true;
            if (defaultValueCheck != newValueCheck) {
                edited = true;
            } else {
                td.find('label.error').remove();
                td.removeClass('datatable-cell-editing');
                td.removeClass('datatable-cell-edited');
            }

            if (edited === true) {
                td.find('span.cell-value').html(newValueCheck);
                td.removeClass('datatable-cell-editing');
                td.addClass('datatable-cell-edited');
                td.parent('tr').addClass('datatable-row-edited');
                doAfterEdit = true;
            }
        }
    });

    $(document).find(datatable+ ' td.datatable-cell-editing input.switch-input-toggle').each(function () {
        var edited = false;
        if (e.target != this && element_to_edit != this) {
            var td = $(this).closest('td');
            var defaultValueCheck = td.find('span.cell-value').data('defaultValue') === true;
            var newValueCheck = $(this).prop('checked') === true;
            if (defaultValueCheck != newValueCheck) {
                edited = true;
            } else {
                td.find('label.error').remove();
                td.removeClass('datatable-cell-editing');
                td.removeClass('datatable-cell-edited');
            }

            if (edited === true) {
                td.find('span.cell-value').html(newValueCheck);
                td.removeClass('datatable-cell-editing');
                td.addClass('datatable-cell-edited');
                td.parent('tr').addClass('datatable-row-edited');
                doAfterEdit = true;
            }
        }
    });

    if (!$(datatable).hasClass('listing-cms-datatable')) {
        $(datatable).find('td.datatable-cell-editing input.checkbox-cell-value').each(function () {
            var edited = false;
            if (e.target != this && element_to_edit != this) {
                var td = $(this).closest('td');
                var defaultValueCheck = td.find('span.cell-value').data('defaultValue') === true;

                var newValueCheck = $(this).prop('checked') === true;

                if (defaultValueCheck != newValueCheck) {
                    edited = true;
                } else {
                    td.find('label.error').remove();
                    td.removeClass('datatable-cell-editing');
                    td.removeClass('datatable-cell-edited');
                    td.parent('tr').removeClass('datatable-row-edited');
                    td.find('.date-picker-input').fdatepicker('remove');
                    td.find('.fake-date-picker-container').remove();
                    td.find('input:not(.record-id):not(.additional-fields)').remove();
                }
                if (edited) {
                    td.find('span.cell-value').html(newValueCheck + '<span class="reset-btn">&nbsp;</span>');
                    $(this).closest('tr').removeClass('error');

                    td.find('label.error').remove();

                    td.find('.date-picker-input').fdatepicker('remove');
                    td.find('.fake-date-picker-container').remove();
                    td.find('input:not(.record-id):not(.additional-fields)').remove();

                    td.removeClass('datatable-cell-editing');
                    td.addClass('datatable-cell-edited');
                    td.parent('tr').addClass('datatable-row-edited');
                    doAfterEdit = true;

                }
            }
        });

    }

    if ($.isFunction(afterEdit) && doAfterEdit) {
        afterEdit();
    }

}

function addCheckBoxForEditable(datatable, afterEdit) {
    if ($(datatable).hasClass('listing-cms-datatable')) {
        $(datatable).find('td.datatable-cell-editable').each(function () {
            var td = $(this);
            var columnNumber = td.index();
            var th = td.closest('table').find('thead th').eq(columnNumber);
            if (th.hasClass('boolean-column')) {
                var isListingTable = $(this).closest('table.listing-cms-datatable').length > 0;
                datatable_editable_add_input(td, isListingTable);
            }
        });


        if ($(datatable).hasClass('listing-cms-datatable')) {
            $(datatable).find('td.datatable-cell-editing input.checkbox-cell-value').change(function () {
                $(this).closest('tr').removeClass('error');
                var td = $(this).closest('td');
                //td.removeClass('datatable-cell-editing');
                td.addClass('datatable-cell-edited-checkbox');
                td.parent('tr').addClass('datatable-row-edited');
                afterEdit();
            });
        }
    }
}

function addButtonsForEditable(datatable, afterEdit) {
    if ($(datatable).hasClass('listing-cms-datatable')) {
        $(datatable).find('td.datatable-cell-editable').each(function () {
            var td = $(this);
            var columnNumber = td.index();
            var th = td.closest('table').find('thead th').eq(columnNumber);
            if (th.hasClass('button-column')) {
                var isListingTable = $(this).closest('table.listing-cms-datatable').length > 0;
                //datatable_editable_add_input(td, isListingTable);
                td.find('span.cell-value').css('display', 'none');
                //td.removeClass('datatable-cell-editable');
                td.addClass('datatable-cell-editing');
            }
        });


        if ($(datatable).hasClass('listing-cms-datatable')) {
            $(datatable).find('td.datatable-cell-editable input.switch-input-toggle').change(function () {
                $(this).closest('tr').removeClass('error');
                var td = $(this).closest('td');
                //td.removeClass('datatable-cell-editing');
                td.addClass('datatable-cell-edited-checkbox');
                td.parent('tr').addClass('datatable-row-edited');
                afterEdit();
            });
            $(datatable).find('td.datatable-cell-editable a.toggle-button-check').on('click', function (e) {
                e.preventDefault();
                var edited = false;
                var td = $(this).closest('td');
                if ($(this).hasClass('button-true')) {
                    td.find('input.switch-input-button').prop('checked', false);
                    td.find('a.toggle-button-check.button-true').addClass('hide');
                    td.find('a.toggle-button-check.button-false').removeClass('hide');
                    edited = true;
                } else if ($(this).hasClass('button-false')) {
                    td.find('input.switch-input-button').prop('checked', true);
                    td.find('a.toggle-button-check.button-true').removeClass('hide');
                    td.find('a.toggle-button-check.button-false').addClass('hide');
                    edited = true;
                }
                if (edited) {
                    td.addClass('datatable-cell-edited-checkbox');
                    td.parent('tr').addClass('datatable-row-edited');
                    afterEdit();
                }
                return false;
            });
        }
    }
}




function init_datatable_editable(datatableObj, afterEdit) {
    if (!$(datatableObj).hasClass('datatable-editable')) {
        var datatable = '#' + datatableObj.attr('id');
        addCheckBoxForEditable(datatable, afterEdit);

        $(document).on('dblclick', datatable + ' td.datatable-cell-editable:not(.datatable-cell-editing)', function (e) {
            var td = $(this);
            var isListingTable = $(this).closest('table.listing-cms-datatable').length > 0;
            datatable_editable_add_input(td, isListingTable);
        });
        $(document).on('click', datatable + ' span.cell-edit-btn', function (e) {
            e.stopPropagation();
            var td = $(this).closest('td');
            var isListingTable = $(this).closest('table.listing-cms-datatable').length > 0;
            datatable_editable_add_input(td, isListingTable);
        });

        $(document).on('click', function (e) {
            datatable_editable_event(datatableObj, afterEdit, e);
        });

        if ($(datatable).hasClass('listing-cms-datatable')) {
            $(document).find(datatable + ' td.datatable-cell-editing input.checkbox-cell-value').change(function () {
                $(this).closest('tr').removeClass('error');
                var td = $(this).closest('td');
                //td.removeClass('datatable-cell-editing');
                td.addClass('datatable-cell-edited-checkbox');
                td.parent('tr').addClass('datatable-row-edited');
                afterEdit();
            });

        }



        $(document).on('click', datatable + ' td.datatable-cell-edited span.reset-btn', function (e) {
            var td = $(this).closest('td');
            td.find('span.cell-value').html(htmlEncode(td.find('span.cell-value').data('defaultValue')) + '<span class="cell-edit-btn">&nbsp;</span>');
            td.removeClass('datatable-cell-edited');
            td.parent('tr').removeClass('datatable-row-edited');
            td.parent('tr').removeClass('error');
            if ($.isFunction(afterEdit)) afterEdit();
        });
        $(document).on('focusin', datatable + ' input.fake-date-picker-input', function (e) {
            var value = $(this).val();
            if (value != '') {
                var d = moment(value, window.MomentDateTimeFormat);
                $(this).closest('td').find('input.date-picker-input').val(d.format(window.MomentDateFormat));
                $(this).closest('td').find('input.date-picker-input').fdatepicker('show');
            }
        });
        $(datatable).addClass('datatable-editable');
    }
}

function datatable_editable_add_input(td, isListingTable) {
    td.removeClass('datatable-cell-edited').addClass('datatable-cell-editing');
    var idFieldName = null;
    var idFieldValue = null;
    var currentValue = td.find('span.cell-value')
        .clone()    //clone the element
        .children() //select all the children
        .remove()   //remove all the children
        .end()  //again go back to selected element
        .text();
    var columnNumber = td.index();
    var th = td.closest('table').find('thead th').eq(columnNumber);
    var field_name = th.text();

    if (th.hasClass('datepicker-column')) {
        if (isListingTable) {

            var currentLanguage = window.translation['language_iso'];
            moment.locale(currentLanguage);
        }
        var today = moment('1/1/2017', 'D/m/yyyy').format(window.MomentDateFormat);
        var time = moment('9:00 PM', 'h:mm A').format(window.MomentTimeFormat);
        var date_time_example = moment(today + ' ' + time, window.MomentDateTimeFormat).format(window.MomentDateTimeFormat);

        td.append(
            '<input type="text" value="' + currentValue + '" class="input-cell-value"'
            + ' data-val-regex="' + window.translation.error_invalid_date_format.replace('{0}', field_name).replace('{1}', date_time_example) + '"'
            + ' data-val-regex-pattern="' + window.DateTimeRegexStr + '" />'
        );
        td.find('input').FakeDateTimePicker();
    }
    else if (th.hasClass('onlydatepicker-column')) {
        if (isListingTable) {

            var currentLocale = window.translation['locale_iso'];
            moment.locale(currentLocale);
        }
        var date_example = moment('1/1/2017', 'D/m/yyyy').format(window.MomentDateFormat);

        td.append(
            '<input type="text" value="' + currentValue + '" class="input-cell-value"'
            //+ ' data-val-regex="' + window.translation.error_invalid_date_format.replace('{0}', field_name).replace('{1}', date_example) + '"' 
            //+ ' data-val-regex-pattern="' + window.DateRegex
            + '" />'
        );
        td.find('input').FakeDatePicker();
    }
    else if (th.hasClass('decimal-column')) {
        var specialCharacter = th.attr('data-symbol-special');

        currentValue = currentValue.replace(specialCharacter, '').trim()

        td.append('<input type="text" value="' + currentValue + '" class="input-cell-value"'
            + ' data-symbol-special="' + specialCharacter + '"'
            + ' data-val-regex="' + window.translation.error_invalid_int.replace('{0}', field_name) + '"'
            + ' data-val-regex-pattern="^[0-9]+([.][0-9]+)?$"'
            + ' />');
    }
    else if (th.hasClass('integer-column')) {
        td.append('<input type="text" value="' + currentValue + '" class="input-cell-value"'
            + ' data-val-regex="' + window.translation.error_invalid_int.replace('{0}', field_name) + '"'
            + ' data-val-regex-pattern="^\\d+$"'
            + ' />');
    }
    else if (th.hasClass('select-column')) {
        var idTable = td.closest('table').attr('id');
        var idListing = idTable.replace('dataTable', '')
        td.append('<select class="temp-select-table"></select>');

        var settingsPicklist = localStorage.getItem('picklist-info-' + idListing);
        if (settingsPicklist != undefined && settingsPicklist != null) {

            var fieldToSearch = th.data('field-name').startsWith('Custom') && th.data('write-to-sf') ? th.data('write-to-sf') : th.data('field-name');
            var pickListDetail = JSON.parse(settingsPicklist);
            if (pickListDetail && pickListDetail.length > 0) {
                for (var i = 0; i < pickListDetail.length; i++) {

                    if (pickListDetail[i].name == fieldToSearch) {
                        if (pickListDetail[i].picklist && pickListDetail[i].picklist.length > 0) {
                            for (var j = 0; j < pickListDetail[i].picklist.length; j++) {

                                if (pickListDetail[i].picklist[j].Active) {
                                    td.find('select.temp-select-table').append('<option value="' + pickListDetail[i].picklist[j].Value + '">' + pickListDetail[i].picklist[j].Label + '</option>')
                                }
                            }
                        }
                    }
                }

            }
            td.find('select.temp-select-table').val(currentValue);
        }
    }
    else if (th.hasClass('multiselect-column')) {
        var idTable = td.closest('table').attr('id');
        var idListing = idTable.replace('dataTable', '')
        td.append('<form class="temporal-form"><div class="input-group-select multi-select-table"><select class="temp-multiselect-table" multiple="multiple" data-customforms="disabled" data-required="false"></select></div></form>');

        var settingsPicklist = localStorage.getItem('picklist-info-' + idListing);
        if (settingsPicklist != undefined && settingsPicklist != null) {

            var pickListDetail = JSON.parse(settingsPicklist);
            if (pickListDetail && pickListDetail.length > 0) {

                var fieldToSearch = th.data('field-name').startsWith('Custom') && th.data('write-to-sf') ? th.data('write-to-sf') : th.data('field-name');
                for (var i = 0; i < pickListDetail.length; i++) {

                    if (pickListDetail[i].name == fieldToSearch) {
                        if (pickListDetail[i].picklist && pickListDetail[i].picklist.length > 0) {
                            for (var j = 0; j < pickListDetail[i].picklist.length; j++) {

                                if (pickListDetail[i].picklist[j].Active) {
                                    td.find('select.temp-multiselect-table').append('<option value="' + pickListDetail[i].picklist[j].Value + '">' + pickListDetail[i].picklist[j].Label + '</option>')
                                }
                            }
                        }
                    }
                }

            }
            var newArray = new Array();
            var arraValues = currentValue.split(",");
            arraValues.forEach(function (myValue) {
                myValue = myValue.trim();
                newArray.push(myValue);
            });

            td.find('select.temp-multiselect-table').multiselect();
            if (newArray && newArray.length > 0) {
                td.find('select.temp-multiselect-table').val(newArray);
                td.find('select.temp-multiselect-table').multiselect('reload');
            }
        }
    }
    else if (th.hasClass('boolean-column')) {
        if (td.find('input[type="checkbox"].checkbox-cell-value').length == 0) {
            var classHeader = '';
            if (th.find('input[type="checkbox"].header-group-checker').length > 0) {
                classHeader = th.find('input[type="checkbox"].header-group-checker').attr('name');
            }
            td.append('<input type="checkbox" class="checkbox-cell-value" data-parent-header="' + classHeader +'"  />');
        }
        td.find('input[type="checkbox"].checkbox-cell-value').prop('checked', currentValue.toLowerCase() === "true");
    }
    else if (th.hasClass('button-column')) {
        td.find('span.cell-value').css("display", "none");
    }
    else {
        td.append('<input type="text" value="' + currentValue + '" class="input-cell-value" />');
    }

    td.find('input.input-cell-value').val(currentValue);
    td.find('input.input-cell-value').focus();

}

function validate_login_403() {
    if ($('body.page-401').length > 0) {
        $(document).foundation();
        $('body.page-401').find('a.button').each(function () {
            if (!$(this).hasClass('custom-button')) {
                var current_url = new URL(window.location);
                let return_url = (current_url.searchParams.get("PrivateHome") == 'true') ? window.location.origin : window.location.href;
                $(this).attr('data-open', 'login-modal');
                $(this).removeAttr('href');
                $(this).on('click', function (e) {
                    if ($('#login-modal').length > 0) {
                        $('#login-modal').find('input[name="returnurl"]').val(return_url);
                        $('#login-modal').find('input[name="returnURLFacebook"]').val(return_url);
                        var currentURL = $('#login-modal').find('a.SSO_login_button').attr('href');
                        currentURL = currentURL + '?retUrl=' + encodeURIComponent(return_url);
                        $('#login-modal').find('a.SSO_login_button').attr('href', currentURL);
                        $('#login-modal').foundation('open');
                    }
                });
                if (current_url.searchParams.get("PrivateHome") == 'true') {
                    //LHH-21016 Avoiding this behavior to avoid the confusion with both login buttons
                   // $(this).click();
                }
            }
        });
    }
}

function getSubsiteDataCookie() {
    var dataCookie = {
        enable: false,
        data: {}
    };
    var subsiteCookie = getCookie('subsite');
    if (subsiteCookie !== null && subsiteCookie !== '') {
        var cookieValues = subsiteCookie.split('&data=');
        if (cookieValues.length > 0) {
            if (cookieValues[0] === 'enabled=true') {
                dataCookie.enable = true;
            }
            if (cookieValues[1]) {
                var dataSubsite = JSON.parse(cookieValues[1]);
                dataCookie.data = dataSubsite;
            }
        }
    }
    return dataCookie;
}

$.fn.FakeDateTimePicker = function () {
    this.each(function () {
        var input = $(this);
        input.wrap('<div class="fake-date-picker-container"></div>');
        input.addClass('fake-date-picker-input');
        input.parent().append('<input type="text" value="" class="date-picker-input-hidden" />');
        var datepicker = input.parent().find('.date-picker-input-hidden');
        if (input.val() != '') datepicker.val(moment(input.val(), window.MomentDateTimeFormat).format(window.MomentDateFormat));
        datepicker.fdatepicker({
            format: window.DatePickerDateFormat,
            weekStart: get_start_day_of_week_from_locale(),
        }).on('changeDate', function (ev) {
            var new_date = $(ev.target).val();
            var old_date = input.val();
            var d_new = moment(new_date, window.MomentDateFormat);
            var d_old = moment(old_date, window.MomentDateTimeFormat);
            var d_new_date = d_new.format(window.MomentDateFormat);
            var d_old_time = d_old.format(window.MomentTimeFormat);
            var d_final = moment(d_new_date + ' ' + d_old_time, window.MomentDateTimeFormat);
            input.val(d_final.format(window.MomentDateTimeFormat));
            var name_input = input.attr('name');
            var element_data = input.data();
            if ('endDateField' in element_data) {
                var element = $(ev.target).parent().find('.fake-date-picker-input');
                var end_date = $('#' + element_data.endDateField + '');
                if (end_date.val() != '') {
                    var endDateDatePicker = end_date.parent().find('.date-picker-input-hidden').data('datepicker');
                    var startDate = moment(element.val(), window.MomentDateTimeFormat);
                    var endDate = moment(end_date.val(), window.MomentDateTimeFormat);
                    if (startDate.diff(endDate, 'seconds') > 0) {
                        var newEndDateTimeStr = startDate.format(window.MomentDateFormat) + " " + endDate.format(window.MomentTimeFormat);
                        var newEndDateTime = moment(newEndDateTimeStr, window.MomentDateTimeFormat);
                        if (startDate.diff(newEndDateTime, 'seconds') > 0) newEndDateTime = startDate.add(1, 'hours');
                        endDateDatePicker.update(newEndDateTime.toDate());
                        $('#' + element_data.endDateField + '').val(newEndDateTime.format(window.MomentDateTimeFormat));
                    }

                    if ($('#AttendanceStatus').length > 0) {
                        if (startDate.diff(moment()) <= 0) {// EndDate is in the past
                            $('#AttendanceStatus').attachOptions('[value="Attended (and Hours Verified)"]');
                            $('#AttendanceStatus').attachOptions('[value="Not Attended"]');
                            $('#AttendanceStatus').detachOptions('[value="Please Verify"]');
                            $('#AttendanceStatus').val('');
                        } else {
                            $('#AttendanceStatus').detachOptions('[value="Attended (and Hours Verified)"],[value="Not Attended"]');
                            $('#AttendanceStatus').attachOptions('[value="Please Verify"]');
                            $('#AttendanceStatus').val('Please Verify');
                        }
                    }
                }
            }
            else if ('startDateField' in element_data) {
                var element = $(ev.target).parent().find('.fake-date-picker-input');
                var start_date = $('#' + element_data.startDateField + '');
                if (start_date.val() != '') {
                    var startDateDatePicker = start_date.parent().find('.date-picker-input-hidden').data('datepicker');
                    var startDate = moment(start_date.val(), window.MomentDateTimeFormat);
                    var endDate = moment(element.val(), window.MomentDateTimeFormat);
                    if (startDate.diff(endDate, 'seconds') > 0) {
                        var newStartDateTimeStr = endDate.format(window.MomentDateFormat) + " " + startDate.format(window.MomentTimeFormat);
                        var newStartDateTime = moment(newStartDateTimeStr, window.MomentDateTimeFormat);
                        if (newStartDateTime.diff(endDate, 'seconds') > 0) {
                            var newEndtDateTimeStr = startDate.format(window.MomentDateFormat) + " " + startDate.format(window.MomentTimeFormat);
                            var newEndDateTime = moment(newEndtDateTimeStr, window.MomentDateTimeFormat);
                            newEndDateTime = newEndDateTime.add(1, 'hours');
                            var thisdatepicker = $('input[name="' + name_input + '"]').parent().find('.date-picker-input-hidden').data('datepicker');
                            thisdatepicker.update(newEndDateTime.toDate());
                            $('input[name="' + name_input + '"]').val(newEndDateTime.format(window.MomentDateTimeFormat));
                        }
                        else {
                        startDateDatePicker.update(newStartDateTime.toDate());
                        $('#' + element_data.startDateField + '').val(newStartDateTime.format(window.MomentDateTimeFormat));
                    }
                    }
                    if ($('#AttendanceStatus').length > 0) {
                        if (endDate.diff(moment()) <= 0) {// EndDate is in the past
                            $('#AttendanceStatus').attachOptions('[value="Attended (and Hours Verified)"]');
                            $('#AttendanceStatus').attachOptions('[value="Not Attended"]');
                            $('#AttendanceStatus').detachOptions('[value="Please Verify"]');
                            $('#AttendanceStatus').val('');
                        } else {
                            $('#AttendanceStatus').detachOptions('[value="Attended (and Hours Verified)"],[value="Not Attended"]');
                            $('#AttendanceStatus').attachOptions('[value="Please Verify"]');
                            $('#AttendanceStatus').val('Please Verify');
                        }
                    }
                }
            }
        });
        input.on('focusin', function (e) {
            var value = $(this).val();
            if (value != '') {
                var d = moment(value, window.MomentDateTimeFormat);
                datepicker.val(d.format(window.MomentDateFormat));
            }
            datepicker.fdatepicker('show');
        });
    });
}

$.fn.FakeDatePicker = function () {
    this.each(function () {
        var input = $(this);
        input.wrap('<div class="fake-only-date-picker-container"></div>');
        input.addClass('fake-only-date-picker-input');
        var oDatepicker = input;//.parent().find('.only-date-picker-input-hidden');
        if (input.val() != '') oDatepicker.val(moment(input.val(), window.MomentDateFormat));
        oDatepicker.fdatepicker({
            format: window.DatePickerDateFormat,
            weekStart: get_start_day_of_week_from_locale(),

        }).on('changeDate', function (ev) {
            //var new_date = $(ev.target).val();
            //var d_new = moment(new_date, window.MomentDateFormat);
            //input.val(d_new);
            //var element_data = input.data();
        });
    });
}

/// this method  is to evaluate if the user is in a page that
// contains a search block (searchResult,FeatureOpp,/search,/calendar,/corporate page)
function VerifySearchBlock() {
    var containsSearchPage = false;

    try {

        if ($('div.featuredopportunityblock').length > 0) {
            containsSearchPage = true;
        } else if ($('div.searchresultblock').length > 0) {
            containsSearchPage = true;
        } else if ($('#datatable-search-opportunities').length > 0) {
            containsSearchPage = true;
        } else if ($('.opportunity-calendar-content').length > 0) {
            containsSearchPage = true;
        }

        if (containsSearchPage === true) {
            var expirationDate = new Date().getTime() + (1 * 24 * 60 * 60 * 1000);
            var lastSearchPage = { 'lastSearchPage': window.location.href, 'expirationDate': expirationDate };
            localStorage.setItem('last-search-page', JSON.stringify(lastSearchPage));

        }
    } catch (e) {
        window.console && console.error(e)
    }
}

function verifyWRSCode() {
    if ($('input#internalwrscode').length > 0) {
        localStorage.setItem('wrscode', $('input#internalwrscode').val());
    }
}

function VerifyIfIsSuccessSignupPage() {
    try {
        var currentPathName = window.location.pathname;
        if (currentPathName !== undefined && currentPathName != null) {

            var isSuccessPage = $('body').find('input[name="isSuccessForMobileApp"]').val();

            if (currentPathName.indexOf('/express-interest-confirmation-page') > -1 ||
                currentPathName.indexOf('/express-interest-only-confirmation') > -1 ||
                currentPathName.indexOf('/grouped-occurrences-confirmation') > -1 ||
                currentPathName.indexOf('/grouped-occ-express-interest-confirmation') > -1 ||
                currentPathName.indexOf('/individual-signup-confirmation') > -1 ||
                currentPathName.indexOf('/team-express-interest-confirmation') > -1 ||
                currentPathName.indexOf('/team-signup-confirmation') > -1 ||
                currentPathName.indexOf('/waited-list-confirmation') > -1 ||
                currentPathName.indexOf('/opportunity-signup-confirmation') > - 1
            ) {
                var lastSearchString = localStorage.getItem('last-search-page');
                if ((isSuccessPage !== undefined && isSuccessPage !== null && isSuccessPage === 'true') || $('body').hasClass('fix-for-mobile-generic-app')) {
                    if ($('div.cms-page').length > 0) {
                        var element = '<div class="signup-more-projects"><a href="/opportunity-success-page">' + window.translation.return_to_last_search + '</a></div>';

                        if ($('div.cms-page  div.row.share').length > 0) {
                            $('div.cms-page  div.row.share').before(element);
                        } else
                            $('div.cms-page').append(element);
                    }

                } else if (window.defaultSearchUrl !== undefined && window.defaultSearchUrl !== null && window.defaultSearchUrl !== '') {
                    if ($('div.cms-page').length > 0) {
                        var element = '<div class="signup-more-projects"><a href="' + window.defaultSearchUrl + '">' + window.translation.return_to_last_search + '</a></div>';

                        if ($('div.cms-page  div.row.share').length > 0) {
                            $('div.cms-page  div.row.share').before(element);
                        } else
                            $('div.cms-page').append(element);
                    }

                } else if (lastSearchString !== undefined && lastSearchString !== null && lastSearchString != "") {

                    var lastSearch = JSON.parse(lastSearchString);

                    if (lastSearch != undefined && lastSearch.lastSearchPage != "" && lastSearch.lastSearchPage != null) {
                        var currentTime = new Date().getTime();
                        if (lastSearch.expirationDate > currentTime) {
                            if ($('div.cms-page').length > 0) {
                                var element = '<div class="signup-more-projects"><a href="' + lastSearch.lastSearchPage + '">' + window.translation.return_to_last_search + '</a></div>';

                                if ($('div.cms-page  div.row.share').length > 0) {
                                    $('div.cms-page  div.row.share').before(element);
                                } else
                                    $('div.cms-page').append(element);
                            }
                        } else {
                            localStorage.removeItem('last-search-page');
                        }
                    }
                }

            } else {

                if (isSuccessPage !== undefined && isSuccessPage !== null && isSuccessPage === 'true') {

                    if ($('body .actions_branch_logic .next_option a.primary-button').length === 0) {
                        if ($('div.cms-page').length > 0) {
                            var element = '<div class="signup-more-projects"><a href="/opportunity-success-page">' + window.translation.return_to_last_search + '</a></div>';

                            if ($('div.cms-page  div.row.share').length > 0) {
                                $('div.cms-page  div.row.share').before(element);
                            } else
                                $('div.cms-page').append(element);
                        }

                    }
                }
            }

        }
    } catch (e) {
        window.console && console.error(e)
    }

}


function traditional_chinese_format(dayOpportunity, hourStart, hourEnd, startDate) {
    var text = '';
    var language = $('body.volunteer-opportunity-detail-page').attr('data-lang');
    if (language == 'zh-CHT') {
        var values = dayOpportunity.split(',');
        dayOpportunity = values[0];
        hourStart = hourStart.replace('-', '');
        hourStart = hourStart.trim();
        hourEnd = hourEnd.trim();

        var dayText = dayOpportunity.toLowerCase();
        if (dayText == 'monday')
            dayOpportunity = window.translation.monday;
        else if (dayText == 'tuesday')
            dayOpportunity = window.translation.tuesday;
        else if (dayText == 'wednesday')
            dayOpportunity = window.translation.wednesday;
        else if (dayText == 'thursday')
            dayOpportunity = window.translation.thursday;
        else if (dayText == 'friday')
            dayOpportunity = window.translation.friday;
        else if (dayText == 'saturday')
            dayOpportunity = window.translation.saturday;
        else if (dayText == 'sunday')
            dayOpportunity = window.translation.sunday;

        startDate = startDate.substring(0, 10);
        startDate = startDate.replaceAll('-', '/');
        var valueDate = startDate.split('/');
        startDate = valueDate[2] + '/' + valueDate[1] + '/' + valueDate[0];
        var hours = hourStart.split(':');
        var hourInt = parseInt(hours[0]);
        var am_pm = '';
        if (hourInt == 0) { //am
            hourStart = "12:" + hours[1];
        } else if (hourInt > 12) {
            hourStart = (hourInt - 12) + ":" + hours[1];
        } else {
            hourStart = (hourInt) + ":" + hours[1];
        }

        if (hourInt < 12) {
            //am
            am_pm = window.translation.am;
        } else {
            //pm
            am_pm = window.translation.pm;
        }
        hourStart = am_pm + " " + hourStart;

        hours = hourEnd.split(':');
        var hourInt = parseInt(hours[0]);
        if (hourInt == 0) { //am
            hourEnd = "12:" + hours[1];
        } else if (hourInt > 12) {
            hourEnd = (hourInt - 12) + ":" + hours[1];
        } else {
            hourEnd = (hourInt) + ":" + hours[1];
        }
        if (hourInt < 12) {
            //am
            am_pm = window.translation.am;
        } else {
            //pm
            am_pm = window.translation.pm;
        }
        hourEnd = am_pm + " " + hourEnd;

        text = startDate + ', ' + dayOpportunity + ', ' + hourStart + ' ' + window.translation.to + hourEnd;

    }
    return text;
}

function one_step_change_password() {
    if ($('body.page-change-password').length > 0) {
        if ($('#oneStepUrl').length > 0) {

            var oneStepValues = localStorage.getItem('log-onestep');
            if (oneStepValues !== null && oneStepValues !== undefined) {
                var itemOneStep = JSON.parse(oneStepValues);
                localStorage.removeItem('log-onestep');
                $('#oneStepUrl').val(itemOneStep.finalUrl);
            }
            $('#oneStepUrl').val();
        }
    }
}

function ajax_submit_login_ars(dataSerialized, urlRedirect, siteId) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    var urlToSend = urlSite + "/submit-ars-data";
    if (dataSerialized !== null && dataSerialized !== undefined)
        dataSerialized["waiverFields"] = JSON.stringify(dataSerialized["waiverFields"]);
    $.ajax({
        method: "POST",

        url: urlToSend,
        data: dataSerialized,
        beforeSend: function () {

        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            $('.processing_screen').hide();
            Swal.fire({
                title: textStatus,
                icon: "error",
                html: errorThrown,
                confirmButtonText: "Ok",

            });
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);
        if (jsonData.status == "ok") {
            urlRedirect = evaluate_redirect_url_after_login(urlRedirect);
            localStorage.removeItem('login-branch-logic-form-data-' + siteId);
            var oneStepValues = localStorage.getItem('ars-log-onestep');
            if (oneStepValues !== null && oneStepValues !== undefined) {
                var itemOneStep = JSON.parse(oneStepValues);
                localStorage.removeItem('ars-log-onestep');

                var finalOneStep = evaluate_redirect_url_after_login(itemOneStep.finalUrl);
                if (finalOneStep !== '/') {
                    window.location.href = itemOneStep.finalUrl;
                } else {
                    window.location.href = urlSite + urlRedirect;
                }

            } else {
                window.location.href = urlSite + urlRedirect;
            }

        } else {
            $('.processing_screen').hide();
            if (jsonData.status == "error") {
                Swal.fire({
                    title: "",
                    icon: "error",
                    html: jsonData.message,
                    confirmButtonText: "Ok",

                }, function (isConfirm) {
                    window.location.href = urlSite + "/volunteer-account-overview";
                });
            }
        }
        return false;
    });
}

function load_options_for_data_picker(startDate, endDate) {
    var optionLocale = {
        format: window.MomentDateFormat,
        separator: ' - ',
        applyLabel: window.translation.apply_option_datepicker,
        cancelLabel: window.translation.cancel,
        fromLabel: window.translation.date_from_label,
        toLabel: window.translation.date_to_label,
        customRangeLabel: window.translation.custom_option_datepicker,
        daysOfWeek: [window.translation.sun,
        window.translation.mon,
        window.translation.tue,
        window.translation.wed,
        window.translation.thu,
        window.translation.fri,
        window.translation.sat],
        monthNames: [
            window.translation.january_name,
            window.translation.february_name,
            window.translation.march_name,
            window.translation.april_name,
            window.translation.may_name,
            window.translation.june_name,
            window.translation.july_name,
            window.translation.august_name,
            window.translation.september_name,
            window.translation.october_name,
            window.translation.november_name,
            window.translation.december_name],
        firstDay: 1
    };
    var options = {};
    if (startDate != null && startDate != undefined && startDate != '')
        options.startDate = startDate;
    if (endDate != null && endDate != undefined && endDate != '')
        options.endDate = endDate;
    options.locale = optionLocale;
    return options;
}

function close_actions_privileges_modal() {

    $('#cms-privileges-table').DataTable().destroy();
    $('#cms-privileges-table > tbody').html('');
    $('.datatable-editable').removeClass('datatable-editable');
    remove_session_storage_privileges();
}

function addElementToCMSPrivileges(elementA) {
    remove_session_storage_privileges();
    var email = elementA.data('contact-email');
    var name = elementA.data('contact-name');
    var portalAccess = elementA.data('contact-portal-access');
    var userId = elementA.data('user-id');

    if ($('body').hasClass('hoc-volunteer-system') && elementA.hasClass('from-listing')) {
        var elementInput = elementA.closest('tr').find('.check-record');
        name = elementInput.attr('data-firstname') + ' ' + elementInput.attr('data-lastname');
        email = elementInput.attr('data-email');
    }
    var self = $('#cms-privileges-modal');

    self.find('#contact-name').text(name);
    self.find('#contact-email').text(email);
    self.find('#portal-access').text(portalAccess);

    //Open modal
    self.foundation('open');
    self.find('#commentsTimeline').addClass('hide-custom');
    //Reinitialize methods inside modal
    self.foundation();

    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var urlRequest = urlSite + 'get-privileges-by-user?userId=' + userId;

    var customColumnDefs = [
        {
            targets: [1],
            createdCell: function (td, cellData, rowData, row, col) {

                if ($(td).find('.standard-permission').length == 0) {
                    $(td).addClass('editable-div');
                }

            }
        }
    ];

    if ($.fn.dataTable.isDataTable('#cms-privileges-table')) {
        var tableD = $('#cms-privileges-table').DataTable();
        tableD.destroy();
    }

    var datatable = $('#cms-privileges-table')
        .DataTable({
            "ajax": {
                "url": urlRequest,
                type: "GET",
                beforeSend: function () {

                    $('#cms-privileges-modal .processing_screen').removeClass('hide-custom');

                }
            },
            initComplete: function (settings, json) {

                var jsonResult = json;

                if (jsonResult.code === 200) {

                    $('#selectedUser').val(userId);
                    var privilegeList = jsonResult.privilegeList;

                    if ($('select[name="permissionList"]').hasClass("select2-hidden-accessible")) {
                        $('select[name="permissionList"]').select2('destroy');
                        document.getElementById("select-permission-section").innerHTML = "";
                        $('#select-permission-section').append('<select id="permissionList" name="permissionList"></select >');
                    }

                    var item = '';
                    if (privilegeList != null) {
                        item += '<option value="" >' + window.translation.all + '</option>';
                        privilegeList.forEach(function (entry) {
                            item += '<option value="' + entry.value + '" >' + entry.label + '</option>';
                        });
                    }
                    $('select[name="permissionList"]').find('option')
                        .remove()
                        .end()
                        .append(item);
                    $('select[name="permissionList"]').select2({});
                    $("#select2-permissionList-container").html('Search and Select a Permission');
                    $("#select2-permissionList-container").attr("title", 'Search and Select a Permission');

                    $('select[name="permissionList"]').change(function () {
                        var text = elementA.val();
                        if (text != '') {
                            var el = document.getElementById('permissionList');
                            text = el.options[el.selectedIndex].innerText;
                        }
                        search_privileges_table(text, true);
                    });

                    init_datatable_editable_activation_privileges(this, null)
                    $('#cms-privileges-modal .processing_screen').addClass('hide-custom');
                }

            },
            "bPaginate": true,
            "bLengthChange": false,
            "pageLength": 20,
            "bProcessing": true,
            "scrollY": "350px",
            "scrollCollapse": true,
            "order": [[0, 'asc']],
            "columnDefs": customColumnDefs,
            "drawCallback": function (settings) {
                //$(document).foundation();
            }
        });
}


function cms_privileges_process() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if ($('#cms-privileges-modal button.cms-privileges-exit-button').length > 0) {
        $('body').on('click', '#cms-privileges-modal button.cms-privileges-exit-button', function (e) {
            var pendingChanges = get_pending_changes_from_local_privileges();
            if (pendingChanges && pendingChanges.changes && pendingChanges.changes.length > 0) {
                e.stopPropagation();
                var modal = $('#cms-privileges-modal');

                Swal.fire({
                    title: window.translation.discard,
                    text: window.translation.discard_changes,
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#ff0000',
                    confirmButtonText: window.translation.true_text,
                    cancelButtonText: window.translation.false_text,
                    closeOnConfirm: true
                }).then(function (result) {
                    if (result.isConfirmed) {
                        close_actions_privileges_modal();
                        modal.foundation('close');
                    }
                });

            }
            else {
                close_actions_privileges_modal();
            }
        });

    }

    $('body').on("click", "a.llama-grant-cms", function (e) {

            var data = {};
            data.idsValue = [];
            data.namesValue = [];
            data.emailCMSValues = [];
            data.usernamesValues = [];
            data.profilesValues = [];

            data.idsValue.push($(this).attr('data-idsValue'));
            data.namesValue.push($(this).attr('data-namesValue'));
            data.emailCMSValues.push($(this).attr('data-emailCMSValues'));
            data.usernamesValues.push($(this).attr('data-usernamesValues'));
            data.profilesValues.push($(this).attr('data-profilesValues'));

            Swal.fire({
                title: "Assign CMS Editor Access to " + $(this).attr('data-namesValue') + "?",
                icon: "warning",
                showCancelButton: true,
                confirmButtonClass: 'btn-danger',
                confirmButtonText: "Confirm",
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: false,
                showLoaderOnConfirm: true,
                closeOnCancel: true
            }).then(function (result) {
                if (result.isConfirmed) {
                    $.ajax({
                        type: 'POST',
                        url: urlSite + "llama-grant-cms-access",
                        data: data,
                        beforeSend: function () {
                            $('.processing_screen').show();
                        },
                        success: function (data) {
                            data = JSON.parse(data);

                            if (data.code == "200") {
                                Swal.fire({
                                    title: window.translation.success,
                                    text: 'CMS Access granted',
                                    icon: "success",
                                    showCancelButton: false,
                                    confirmButtonText: "Ok",
                                    closeOnConfirm: true
                                }).then(function (result) {
                                    location.reload();
                                });

                            } else {
                                Swal.fire({
                                    icon: "error",
                                    title: data.message,
                                    confirmButtonText: "Ok",
                                });
                            }

                        },
                        complete: function (jqXHR, textStatus) {
                            $('.processing_screen').hide();
                        }
                    });
                }
            });



        });


    $("#contacts-datatable,#llamapi-contacts-datatable,body.cms-privileges-page").delegate("a.configure-cms-access", "click", function () {
        addElementToCMSPrivileges($(this));
    });

    
    if ($('#cms-privileges-modal button.custom-button.submit-button').length > 0) {
        $('body').on('click', '#cms-privileges-modal button.custom-button.submit-button', function (e) {
            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
            var pendingChanges = get_pending_changes_from_local_privileges();
            if (pendingChanges && pendingChanges.changes && pendingChanges.changes.length > 0) {

                var dataSerialized = JSON.stringify(get_pending_changes_from_local_privileges());
                var data = new Object();
                data["info"] = dataSerialized;
                $.ajax({
                    type: 'POST',
                    url: urlSite + "set-privileges-by-user",
                    data: data,
                    beforeSend: function () {
                        $('.processing_screen').show();
                    },
                    success: function (data) {
                        data = JSON.parse(data);
                        if (data.code == "200") {
                            Swal.fire({
                                title: window.translation.success,
                                text: 'Changes applied',
                                icon: "success",
                                showCancelButton: false,
                                confirmButtonText: "Ok",
                                closeOnConfirm: true
                            });
                            close_actions_privileges_modal();
                            var modal = $('#cms-privileges-modal');
                            modal.foundation('close');

                        } else {
                            Swal.fire({
                                title: "",
                                icon: "error",
                                text: data.message,
                                confirmButtonText: "Ok",
                            });
                        }

                    },
                    complete: function (jqXHR, textStatus) {
                        $('.processing_screen').hide();
                    }
                });
            }

        });

    }

}

function init_datatable_editable_activation_privileges(datatable, afterEdit) {

    if (!$(datatable).hasClass('datatable-editable')) {

        var doAfterEdit = true;
        //double click to edit cell
        $(document).on('dblclick', '.editable-privileges table td.editable-div:not(.datatable-cell-editing):not(.datatable-cell-edited)', function (e) {
            var td = $(this);
            datatable_editable_add_input_activation_privileges(td);
        });

        //Click on edit setting btn
        $(datatable).on('click', 'span.edit-setting-btn', function (e) {
            e.stopPropagation();
            $('.title-modal-cms-priv').trigger('click');
            var td = $(this).closest('td');
            td.find('.setting-value-text').hide();
            datatable_editable_add_input_activation_privileges(td);
        });

        //Click event to finish editing
        $(document).on('click', function (e) {

            var element_to_edit;
            if ($(e.target).hasClass('switch-paddle') || $(e.target).hasClass('cmsgalleryaccessfor') ) {
                return;
            }

            if ($(e.target).hasClass('edit-setting-btn')) {
                element_to_edit = $(e.target).closest('td').find('input.input-cell-value')[0];
            }

            $(datatable).find('td.datatable-cell-editing .change-in-line input.checkbox-cell-value').each(function () {
                var edited = false;
                if (e.target != this && element_to_edit != this) {
                    var td = $(this).closest('td');
                    var originalValueCheck = td.find('.setting-value').data('original-value');
                    var defaultValueCheck = originalValueCheck.toLowerCase() == "true";

                    var originalValueText = td.find('.setting-value').data('data-original-text-value');
                    var field_name = td.find('.setting-value').data('setting-name');
                    var privilegeId = td.find('.setting-value').data('privilege-id');
                    var privilegeName = $(this).closest('tr').first('td').find('.setting-value').data('privilege-name');
                    var DataPrivilegeName = td.find('.setting-value').data('privilege-name');
                    var currentIndex = td.index();
                    var currentSettingName = td.closest('table').find('thead th').eq(currentIndex).text();
                    var displayNegative = td.closest('tr').find('.setting-value.name-privilege').hasClass('negative');

                    var thisTable = $(td).closest('table');

                    var newValueCheck = $(this).prop('checked') == true;                    
                    var newValueText = (DataPrivilegeName=='CMSGallerySettings')?$(td).find('.change-in-line select').val():'';

                    if (defaultValueCheck != newValueCheck || (DataPrivilegeName=='CMSGallerySettings' && originalValueText != newValueText)) {
                        edited = true;
                    } else {

                        td.find('label.error').remove();
                        td.removeClass('datatable-cell-editing');
                        td.removeClass('datatable-cell-edited');
                        td.find('.change-in-line').remove();
                        td.find('.setting-value').removeClass('hide');

                    }
                    if (edited) {

                        update_cell_boolean_edited_privileges(td, newValueCheck, newValueText);
                        if (displayNegative) {
                            newValueCheck = !newValueCheck;
                        }
                        store_privileges_local($('#selectedUser').val(), privilegeId, newValueCheck, td,newValueText);

                    }
                    td.find('.setting-value-text').show();
                }
            });

            if ($.isFunction(afterEdit) && doAfterEdit) afterEdit();
        });

        //Click event to reset change
        $(datatable).on('click', 'td.datatable-cell-edited span.reset-btn', function (e) {
            var td = $(this).closest('td');
            var privilege_name = td.find('.setting-value').data('privilege-name');
            var privilegeId = td.find('.setting-value').data('privilege-id');

            ////td.find('span.cell-value').html(td.find('span.cell-value').data('defaultValue') + '<span class="cell-edit-btn">&nbsp;</span>');
            var columnNumber = td.index();
            var th = td.closest('table').find('thead th').eq(columnNumber);

            var typeData = '';
            if (th.hasClass('boolean-column')) {
                var originalValueCheck = td.find('.setting-value').data('original-value');
                var defaultValueCheck = originalValueCheck.toLowerCase() == "true";
                if (defaultValueCheck) {
                    td.find('.setting-value').addClass('bool-true');
                    td.find('.setting-value').removeClass('bool-false');
                    td.find('.setting-value-bool').text("True");
                    td.find('.setting-value').data('current-value', "True");
                }
                else {
                    td.find('.setting-value').addClass('bool-false');
                    td.find('.setting-value').removeClass('bool-true');
                    td.find('.setting-value-bool').text("False");
                    td.find('.setting-value').data('current-value', "False");
                }

            }

            td.removeClass('datatable-cell-edited');
            td.parent('tr').removeClass('error');

            discard_change_privileges_session_storage($('#selectedUser').val(), privilegeId);

            //if ($.isFunction(afterEdit)) afterEdit();
        });


        $(datatable).addClass('datatable-editable');

        $(datatable).find("td.editable-div div.setting-value-text").each(function(index, el) {
            if ($(this).siblings('.setting-value-bool').text() == 'False') {
                $(this).hide();
            }
        });
    }
}

function discard_change_privileges_session_storage(userId, privilegeId) {

    var pendingChanges = get_pending_changes_from_local_privileges();

    var previousIncludedUser = false;
    var previousIncludedPrivilege = false;

    var newChanges = new Object()
    newChanges.changes = new Array();
    newChanges.timestamp = new Date().getTime();

    var atLeastOneChange = false;
    for (var i = 0; i < pendingChanges.changes.length; i++) {

        if (pendingChanges.changes[i] != null && pendingChanges.changes[i] != undefined) {

            var newChanegSet = new Object();
            newChanegSet.userId = pendingChanges.changes[i].userId;
            newChanegSet.privileges = new Array();

            if (pendingChanges.changes[i].userId == userId) {
                previousIncludedUser = true;
            }

            if (pendingChanges.changes[i].privileges != null && pendingChanges.changes[i].privileges != undefined && pendingChanges.changes[i].privileges.length > 0) {

                for (var j = 0; j < pendingChanges.changes[i].privileges.length; j++) {
                    if (pendingChanges.changes[i].privileges[j].id != privilegeId) {

                        var settingNew = new Object();
                        previousIncludedPrivilege = true;
                        settingNew.id = pendingChanges.changes[i].privileges[j].id;
                        settingNew.value = pendingChanges.changes[i].privileges[j].value;
                        newChanegSet.privileges.push(settingNew);
                        atLeastOneChange = true;
                    }
                }
            }

            newChanges.changes.push(newChanegSet);
        }
    }
    if (atLeastOneChange) {
        store_pending_changes_privileges(newChanges)
    }
    else {
        remove_session_storage_privileges();
    }
}

function remove_session_storage_privileges() {
    var key = 'pending-changes-privileges';
    sessionStorage.removeItem(key);
}

function datatable_editable_add_input_activation_privileges(td) {

    if (td.hasClass('datatable-cell-editing') || td.find("change-in-line").length > 0) {
        return;
    }

    td.removeClass('datatable-cell-edited').addClass('datatable-cell-editing');
    var columnNumber = td.index();
    var th = td.closest('table').find('thead th').eq(columnNumber);

    var currentValue = td.find('.setting-value').data('current-value');
    var current_select = td.find('.setting-value').attr('data-current-text-value');

    var field_name = td.find('.setting-value').data('privilege-name');
    var privilegeId = td.find('.setting-value').data('privilege-id');
    td.find('.setting-value').addClass('hide');


    if (th.hasClass('boolean-column')) {

        var classInput = '';

        var switchHtml ='';
        if(field_name == 'CMSGallerySettings'){
            switchHtml = '<div class="change-in-line">' +
            '<div class="switch tiny">' +
            '<input class="switch-input checkbox-cell-value ' + classInput + '" id="tinySwitch' + field_name + privilegeId + '" type = "checkbox" name = "tinySwitch' + field_name + privilegeId + '" >' +
            '<label class="switch-paddle" for="tinySwitch' + field_name + privilegeId + '">' +
            '</label>' +
            '</div >' +
            '<select class="cmsgalleryaccessfor"><option value="local_global">Local & Global</option><option value="local">Only Local</option></select>' +
            '</div >';
        }else{
            switchHtml = '<div class="change-in-line">' +
            '<div class="switch tiny">' +
            '<input class="switch-input checkbox-cell-value ' + classInput + '" id="tinySwitch' + field_name + privilegeId + '" type = "checkbox" name = "tinySwitch' + field_name + privilegeId + '" >' +
            '<label class="switch-paddle" for="tinySwitch' + field_name + privilegeId + '">' +
            '</label>' +
            '</div >' +
            '</div >';
        }
        td.append(switchHtml);
        td.find('input[type="checkbox"].checkbox-cell-value').prop('checked', currentValue.toLowerCase() === "true");
        if(current_select){
            td.find('select.cmsgalleryaccessfor').val(current_select);
        }else{
            td.find('select.cmsgalleryaccessfor').val('local_global');
        }
    }

    td.find('input.input-cell-value').val(currentValue);
    td.find('input.input-cell-value').focus();

}

function update_cell_boolean_edited_privileges(td, newValueCheck,newValueText) {
    var ValueText = '';
    if(newValueText){
        ValueText = (newValueText == 'local')?"Only Local" : "Local & Global";
        td.find('.setting-value-text').text(ValueText);
        td.find('.setting-value').attr('data-current-text-value', newValueText);
    }
    if (newValueCheck) {
        td.find('.setting-value').addClass('bool-true');
        td.find('.setting-value').removeClass('bool-false');
        td.find('.setting-value-bool').text("True");
        td.find('.setting-value').data('current-value', "True");

    }
    else {
        td.find('.setting-value').addClass('bool-false');
        td.find('.setting-value').removeClass('bool-true');
        td.find('.setting-value-bool').text("False");
        td.find('.setting-value').data('current-value', "False");
    }
    td.append('<span class="reset-btn"></span>');
    td.find('.setting-value').removeClass('hide');

    td.find('label.error').remove();
    td.find('.change-in-line').remove();

    td.removeClass('datatable-cell-editing');
    td.addClass('datatable-cell-edited');
}

function search_privileges_table(searchValue, exactSearch) {
    var idTable = '#cms-privileges-table';

    if (searchValue != null && searchValue != undefined) {
        var datatable_listing = $(idTable).dataTable().api();
        if (exactSearch) {
            var regex = '"' + searchValue + '"';
            datatable_listing.search(regex, false, true).draw();
        }
        else {
            datatable_listing.search(searchValue).draw();
        }
    }

}


function store_privileges_local(userId, privilegeId, value, td,newValueText) {
    var pendingChanges = get_pending_changes_from_local_privileges();

    var previousIncludedUser = false;
    var previousIncludedPrivilege = false;

    var newChanges = new Object()
    newChanges.changes = new Array();
    newChanges.timestamp = new Date().getTime();


    for (var i = 0; i < pendingChanges.changes.length; i++) {

        if (pendingChanges.changes[i] != null && pendingChanges.changes[i] != undefined) {

            var newChanegSet = new Object();
            newChanegSet.userId = pendingChanges.changes[i].userId;
            newChanegSet.privileges = new Array();

            if (pendingChanges.changes[i].userId == userId) {
                previousIncludedUser = true;
            }

            if (pendingChanges.changes[i].privileges != null && pendingChanges.changes[i].privileges != undefined && pendingChanges.changes[i].privileges.length > 0) {

                for (var j = 0; j < pendingChanges.changes[i].privileges.length; j++) {
                    var settingNew = new Object();
                    if (pendingChanges.changes[i].userId == userId && pendingChanges.changes[i].privileges[j].id == privilegeId) {
                        previousIncludedPrivilege = true;
                        settingNew.id = pendingChanges.changes[i].privileges[j].id;
                        settingNew.value = value;
                        settingNew.CmsGalleryAccessFor = newValueText;
                        indexToRemove = j;
                    }
                    else {
                        settingNew.id = pendingChanges.changes[i].privileges[j].id;
                        settingNew.value = pendingChanges.changes[i].privileges[j].value;
                        settingNew.CmsGalleryAccessFor = pendingChanges.changes[i].privileges[j].CmsGalleryAccessFor;
                    }
                    newChanegSet.privileges.push(settingNew);
                }

                if (pendingChanges.changes[i].userId == userId && !previousIncludedPrivilege) {
                    var settingNew = new Object();
                    settingNew.id = privilegeId;
                    settingNew.value = value;
                    settingNew.CmsGalleryAccessFor = newValueText;
                    newChanegSet.privileges.push(settingNew);
                }
            }

            newChanges.changes.push(newChanegSet);
        }
    }
    if (!previousIncludedUser) {

        var changeSet = new Object;
        changeSet.userId = userId;
        changeSet.privileges = new Array;

        var settingNew = new Object();
        settingNew.id = privilegeId;
        settingNew.value = value;
        settingNew.CmsGalleryAccessFor = newValueText;

        changeSet.privileges.push(settingNew);
        newChanges.changes.push(changeSet);

    }

    store_pending_changes_privileges(newChanges)
}

function get_pending_changes_from_local_privileges() {
    var key = 'pending-changes-privileges';

    var pendingChanges = new Object()
    pendingChanges.changes = new Array();


    var contentStorage = sessionStorage.getItem(key);
    if (contentStorage != null) {
        pendingChanges = JSON.parse(contentStorage);
    }
    return pendingChanges;
}

function store_pending_changes_privileges(newChanges) {
    var key = 'pending-changes-privileges';
    sessionStorage.setItem(key, JSON.stringify(newChanges));
}

function handleLocationVirtualForFilterControls(selectorIdLocationType, fieldsToUpdate) {

    $(selectorIdLocationType).on("change", function () {

        if ($(this).val() == 'Virtual') {
            changesWhenIsVirtualLocation(fieldsToUpdate);

        }
        else {
            undoChangesWhenIsVirtualLocation(fieldsToUpdate);

        }

    });

}

function changesWhenIsVirtualLocation(fieldsToUpdate) {

    fieldsToUpdate.forEach(function (field) {
        if ($(field.Id).length > 0) {

            $(field.Id).prop('disabled', 'disabled');
            if (field.StoreInHidden) {
                $(field.HiddenId).val($(field.Id).val());

            }

            if ($(field.Id).hasClass('jqmsLoaded')) {
                $(field.Id).val('');
                $(field.Id).multiselect('reload');
                $(field.Id).multiselect('disable', true);
            }

            $(field.Id).val(field.ValueForVirtual);
        }
    });
}

function undoChangesWhenIsVirtualLocation(fieldsToUpdate) {

    fieldsToUpdate.forEach(function (field) {
        if ($(field.Id).length > 0) {
            $(field.Id).removeAttr('disabled');

            if (field.StoreInHidden && $(field.HiddenId) != undefined && $(field.HiddenId).val() != '') {
                $(field.Id).val($(field.HiddenId).val());
            }
            if ($(field.Id).hasClass('jqmsLoaded')) {

                $(field.Id).multiselect('disable', false);
            }

        }
    });
}

function getRelatedFieldsToVirtualInAdvancedSearchBox() {

    var fieldsToUpdate = new Array();

    var field = new Object();
    field.Id = '#searchvo_zip';
    field.StoreInHidden = true;
    field.ValueForVirtual = '';
    field.HiddenId = '#temporal_auxiliar';
    fieldsToUpdate.push(field);

    field = new Object();
    field.Id = '#searchvo_distance';
    field.StoreInHidden = false;
    field.ValueForVirtual = 'Any';
    fieldsToUpdate.push(field);
    return fieldsToUpdate;
}

function getRelatedFieldsToVirtualInCalendar() {

    var fieldsToUpdate = new Array();

    var field = new Object();
    field.Id = '#searchvo_zip';
    field.StoreInHidden = true;
    field.ValueForVirtual = '';
    field.HiddenId = '#temporal_auxiliar';
    fieldsToUpdate.push(field);

    field = new Object();
    field.Id = '#searchvo_distance';
    field.StoreInHidden = false;
    field.ValueForVirtual = '';
    fieldsToUpdate.push(field);
    return fieldsToUpdate;
}

function getRelatedFieldsToVirtualInSearchResultBlock() {

    var fieldsToUpdate = new Array();

    var field = new Object();
    field.Id = '.basic-search input#location';
    field.StoreInHidden = true;
    field.ValueForVirtual = '';
    field.HiddenId = '.basic-search input#temporal_auxiliar';
    fieldsToUpdate.push(field);

    field = new Object();
    field.Id = '.basic-search #select-any select[name="distance"]';
    field.StoreInHidden = false;
    field.ValueForVirtual = 'Any';
    fieldsToUpdate.push(field);
    return fieldsToUpdate;
}

function getRelatedFieldsToVirtualInBasic() {

    var fieldsToUpdate = new Array();

    var field = new Object();
    field.Id = '#searchvo_zip';
    field.StoreInHidden = true;
    field.ValueForVirtual = '';
    field.HiddenId = '#temporal_auxiliar';
    fieldsToUpdate.push(field);

    field = new Object();
    field.Id = '#searchvo_distance';
    field.StoreInHidden = false;
    field.ValueForVirtual = 'Any';
    fieldsToUpdate.push(field);
    return fieldsToUpdate;
}

function eventsRelatedToVirtualLocationInSearch() {

    if ($('#advanced-search-filters-form').length > 0) {

        var selectorIdLocationType = '#searchvo_location_type';
        var fieldsToUpdate = getRelatedFieldsToVirtualInAdvancedSearchBox();

        handleLocationVirtualForFilterControls(selectorIdLocationType, fieldsToUpdate);
    }
    if ($('form#search_calendar').length > 0) {

        var selectorIdLocationType = '#searchvo_location_type';
        var fieldsToUpdate = getRelatedFieldsToVirtualInCalendar();

        handleLocationVirtualForFilterControls(selectorIdLocationType, fieldsToUpdate);
    }
    if ($('#opportunities-search-block').length > 0) {

        var selectorIdLocationType = '.basic-search #select-location-type select[name="location-type"]';
        var fieldsToUpdate = getRelatedFieldsToVirtualInSearchResultBlock();

        handleLocationVirtualForFilterControls(selectorIdLocationType, fieldsToUpdate);
    }
    if ($('#form-basic-search-filters-options').length > 0) {

        var selectorIdLocationType = '#searchvo_location_type';
        var fieldsToUpdate = getRelatedFieldsToVirtualInCalendar();

        handleLocationVirtualForFilterControls(selectorIdLocationType, fieldsToUpdate);
    }
    if ($('#opportunity-search-form').length > 0) {

        var selectorIdLocationType = '#searchvo_location_type';
        var fieldsToUpdate = getRelatedFieldsToVirtualInBasic();

        handleLocationVirtualForFilterControls(selectorIdLocationType, fieldsToUpdate);
    }
}

function llamapi_contact_list() {


    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var urlRequest = urlSite + 'get-llamapi-contacts-list';

    if ($('table#llamapi-contacts-datatable').length > 0) {

        var datatable = $('table#llamapi-contacts-datatable')
            .DataTable({
                "ajax": {
                    "url": urlRequest,
                    type: "GET",
                    data: function (d) {
                        d.term = $("#search-contacts-field").val();

                        if ($("#llamapi-contacts-datatable_startRecord").val() != '') {
                            d.firstNameToSearch = $("#llamapi-contacts-datatable_startRecord").val();

                        }
                    },
                    beforeSend: function () {
                        //$('#cms-privileges-modal .processing_screen').removeClass('hide-custom');
                    }
                },
                initComplete: function (settings, json) {
                    custom_dropdown_button();
                    LlamaPiSetHiddenFieldsForLoadMore("llamapi-contacts-datatable", json.firstContactNameResult, json.lastContactNameResult, json.data.length, 1000, $("#llamapi-contacts-datatable_startRecord").val() == '', json.data.length >= 1000 || $("#llamapi-contacts-datatable_startRecord").val() != '');

                    if (json.data.length >= 1000) {
                        $('#llamapi-contacts-datatable').data('datatable-more-than-1k-records', true);
                    }

                    var fromValue = $("#" + "llamapi-contacts-datatable" + "_startRecord").val();
                    var toValue = $("#" + "llamapi-contacts-datatable" + "_endRecord").val();
                    var infoText = window.translation.loaded_records + ": " + window.translation.from_text + " '" + fromValue + "' " + window.translation.to_text + " '" + toValue + "'";
                    $("#llamapi-contacts-datatable_info").text(infoText);
                },
                "fnInfoCallback": function (oSettings, iStart, iEnd, iMax, iTotal, sPre) {
                    //custom_dropdown_button();
                    if ($('#llamapi-contacts-datatable').data('datatable-more-than-1k-records') == true && iMax >= 1000 || $("#llamapi-contacts-datatable_startRecord").val() != '') {
                        LlamaPiAddLoadMoreButtonDataTable("llamapi-contacts-datatable", iMax < 1000 && $("#llamapi-contacts-datatable_startRecord").val() != '', $("#llamapi-contacts-datatable_startRecord").val() == '');
                    }
                    else {
                        LlamaPiRemoveLoadMoreButtonDataTable("llamapi-contacts-datatable");
                    }
                    var fromValue = $("#" + "llamapi-contacts-datatable" + "_startRecord").val();
                    var toValue = $("#" + "llamapi-contacts-datatable" + "_endRecord").val();
                    return window.translation.loaded_records + ": " + window.translation.from_text + " '" + fromValue + "' " + window.translation.to_text + " '" + toValue + "'";;
                },
                "bPaginate": true,
                "bLengthChange": false,
                "pageLength": 20,
                "bProcessing": true,
                //"scrollY": "350px",
                "scrollCollapse": true,
                "order": [[0, 'asc']],
                //"columnDefs": customColumnDefs,
                "drawCallback": function (settings) {
                    //$(document).foundation();
                    custom_dropdown_button();
                }
            });
        $("#llamapi-contacts-datatable_filter").remove();
        $("#llamapi-contacts-datatable_wrapper .dt-buttons").hide();


        $("#search-contacts-field").keyup(function () {

            $("#llamapi-contacts-datatable_startRecord").val('');
            var datatable = $('#llamapi-contacts-datatable').dataTable().api();
            var more_than_1k_records = $('#llamapi-contacts-datatable').data('datatable-more-than-1k-records');
            if (more_than_1k_records) {
                funcDonetyping(function () {
                    datatable.ajax.reload();
                }, 1000);
            } else {
                datatable.search($("#search-contacts-field").val()).draw();
            }
        });
        $("#search-datatable-button").click(function () {

            $("#llamapi-contacts-datatable_startRecord").val('');
            var datatable = $('#llamapi-contacts-datatable').dataTable().api();
            if (datatable.data().count() == 1000) {
                datatable.ajax.reload();
            } else {
                datatable.search($("#search-contacts-field").val()).draw();
            }
        });

    }
}

function LlamaPiSetHiddenFieldsForLoadMore(tableId, startRecord, endRecord, requestRecordNumber, setRecordNumber, firstRecordSet, addLoadOptions) {


    $("#" + tableId + "_startRecord").val(startRecord);
    $("#" + tableId + "_endRecord").val(endRecord);
    $("#" + tableId + "_firstRecordSet").val(firstRecordSet);
    var lastRecorSet = requestRecordNumber < setRecordNumber;
    $("#" + tableId + "_lastRecordSet").val(lastRecorSet);
    if (addLoadOptions) {
        if (tableId == "llamapi-contacts-datatable") {
            LlamaPiAddLoadMoreButtonDataTable(tableId, lastRecorSet, $("#contacts-datatable_startRecord").val() == '');
        }
    }

}

function LlamaPiAddLoadMoreButtonDataTable(tableId, onlyFirst, onlyLast) {


    //Add class to set visible tableInfo
    if ($("#" + tableId + "_wrapper .dataTables_info").length > 0) {
        $("#" + tableId + "_wrapper .dataTables_info").addClass("custom-info");
    }

    if ($("#" + tableId + "_paginate  a.paginate_button").length > 0) {
        var button_id = $("#" + tableId + "_paginate a.paginate_button").length - 1;

        //Add new button to get first records if not first set
        if ($("#" + tableId + "_firstRecordSet").length > 0 && $("#" + tableId + "_firstRecordSet").val() != "true" && $("#" + tableId + "_firstAction").length == 0) {
            $("#" + tableId + "_paginate").last("a.paginate_button").prepend('<a id="' + tableId + '_firstAction" class="paginate_button" aria-controls="' + tableId + '" data-dt-idx="' + button_id + '" tabindex="0" role="link">' + window.translation.first_result + '</a>');

            $("#" + tableId + "_firstAction").click(function () {

                //Assign value for restart the load of datatable

                if (tableId == "llamapi-contacts-datatable") {
                    $("#" + tableId + "_startRecord").val('');
                    $("#" + tableId).DataTable().destroy();
                    llamapi_contact_list();
                }
            });

            button_id = button_id + 1;
        }

        //Add new button to get more records if not last set
        if ($("#" + tableId + "_lastRecordSet").length > 0 && $("#" + tableId + "_lastRecordSet").val() != "true" && $("#" + tableId + "_loadAction").length == 0) {
            $("#" + tableId + "_paginate").last("a.paginate_button").append('<a id="' + tableId + '_loadAction" class="paginate_button" aria-controls="' + tableId + '" data-dt-idx="' + button_id + '" tabindex="0" role="link">' + window.translation.load_more + '</a>');
            $("#" + tableId + "_loadAction").click(function () {

                //Assign value for restart the load of datatable

                if (tableId == "llamapi-contacts-datatable") {
                    $("#" + tableId + "_startRecord").val($("#" + tableId + "_endRecord").val());
                    $("#" + tableId).DataTable().destroy();
                    llamapi_contact_list();
                }
            });
        }

        if (onlyFirst && $("#" + tableId + "_loadAction").length > 0) {
            $("#" + tableId + "_loadAction").remove();
        }


        if (onlyLast && $("#" + tableId + "_firstAction").length > 0) {
            $("#" + tableId + "_firstAction").remove();
        }
    }
}

function LlamaPiRemoveLoadMoreButtonDataTable(tableId) {

    if ($("#" + tableId + "_wrapper .dataTables_info").length > 0) {
        $("#" + tableId + "_wrapper .dataTables_info").removeClass("custom-info");
    }
    if ($("#" + tableId + "_loadAction").length > 0) {
        $("#" + tableId + "_loadAction").remove();
    }
    if ($("#" + tableId + "_firstAction").length > 0) {
        $("#" + tableId + "_firstAction").remove();
    }
}

var funcDonetyping = (function () {
    var timer = 0;
    return function (callback, ms) {
        clearTimeout(timer);
        timer = setTimeout(callback, ms);
    };
})();

function custom_dropdown_button() {
    $('body').on('click', 'button.dropbtn-custom',  function () {
        if (!$(this).hasClass('active-dropbtn-custom')) {
            $('.active-dropbtn-custom').removeClass('active-dropbtn-custom');
            $('.dropdown-content-custom.show-custom').removeClass('show-custom');
            $(this).parent().find('.dropdown-content-custom').addClass('show-custom');
            $(this).addClass('active-dropbtn-custom');
        }
        else {
            $('.active-dropbtn-custom').removeClass('active-dropbtn-custom');
            $('.dropdown-content-custom.show-custom').removeClass('show-custom');
        }
    });

    $("#llamapi-contacts-datatable").delegate("button.dropbtn-custom", "click", function () {
        if (!$(this).hasClass('active-dropbtn-custom')) {

            $('.active-dropbtn-custom').removeClass('active-dropbtn-custom');
            $('.dropdown-content-custom.show-custom').removeClass('show-custom');
            $(this).parent().find('.dropdown-content-custom').addClass('show-custom');
            $(this).addClass('active-dropbtn-custom');
        }
        else {

            $('.active-dropbtn-custom').removeClass('active-dropbtn-custom');
            $('.dropdown-content-custom.show-custom').removeClass('show-custom');
        }
    });


    window.onclick = function (event) {
        if (!event.target.matches('.dropbtn-custom')) {

            $('.active-dropbtn-custom').removeClass('active-dropbtn-custom');
            var dropdowns = document.getElementsByClassName("dropdown-content-custom");
            var i;
            for (i = 0; i < dropdowns.length; i++) {
                var openDropdown = dropdowns[i];
                if (openDropdown.classList.contains('show-custom')) {
                    openDropdown.classList.remove('show-custom');
                }
            }
        }
    }
}


/**** Opportunity Detail Page v2 *****/


function process_volunteer_detail() {
    if ($('body.volunteer-opportunity-detail-page-v2').length > 0) {
        process_sign_up_now_button();
        process_occ_list();
        fix_image_slider_opp_v2();
        fix_share_button();
    }

    if ($('body.volunteer-opportunity-detail-page-v3').length > 0) {
        process_sign_up_now_button();
        process_occ_list();
        fix_share_button();
    }

    if ($('body.volunteer-opportunity-detail-page').length > 0) {

        fix_share_configuration();
    }
}

function fix_share_configuration() {
    var socialNetwork = $('input[name="socialNetworkMultiple"]').val();
    if (socialNetwork !== undefined && socialNetwork !== null && socialNetwork !== "") {
        var values = socialNetwork.split(',');
        var facebook = false;
        var twitter = false;
        var email = false;
        var linkedin = false;
        //var selector = '.share-section .addthis_inline_share_toolbox .at-share-btn-elements';
        var selector = '.share-section .sharethis-inline-share-buttons';

        values.forEach(function (value, index) {
            if (value == 'facebook') {
                facebook = true;
            }
            if (value == 'twitter') {
                twitter = true;
            }
            if (value == 'email') {
                email = true;
            }
            if (value == 'linkedin') {
                linkedin = true;
            }
        });

        setTimeout(function () {
            $(selector).find('.st-btn').css('display', 'inline-block');
            if (facebook === false) {
                //$(selector).find('a.at-svc-facebook').css('display', 'none');
                $(selector).find('.st-btn[data-network="facebook"]').css('display', 'none');
            }

            if (twitter === false) {
                //$(selector).find('a.at-svc-twitter').css('display', 'none');
                $(selector).find('.st-btn[data-network="twitter"]').css('display', 'none');
            }

            if (email === false) {
                //$(selector).find('a.at-svc-email').css('display', 'none');
                $(selector).find('.st-btn[data-network="email"]').css('display', 'none');
            }

            if (linkedin === false) {
                //$(selector).find('a.at-svc-linkedin').css('display', 'none');
                $(selector).find('.st-btn[data-network="linkedin"]').css('display', 'none');
            }
            $('.share-section').removeClass('hide');
        }, 2000);



    }
}

function fix_share_button() {
    /*$('.vo-share-section').hide();
    var id = setInterval(function () {
        $('.share-list-v2 #atstbx .at-share-btn-elements a.at-share-btn span.at-label').text(window.translation.share_option);
        setTimeout(id);
        $('.vo-share-section').show();
    }, 1000);*/

    if ($('body.volunteer-opportunity-detail-page-v3').length > 0) {
        $('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .share-list-v3').addClass('hide');
        //$('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .custom-share-v3 a.btn-share').on('click', function () {
        //    if ($('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .share-list-v3').hasClass('hide')) {
        //        $('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .share-list-v3').removeClass('hide');
        //    } else {
        //        $('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .share-list-v3').addClass('hide');
        //    } 
        //});

        $('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .custom-share-v3 a.btn-share').hover(function () {
            if ($('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .share-list-v3').hasClass('hide')) {
                $('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .share-list-v3').removeClass('hide');
            }
            $(this).addClass('hide');
        });

        $('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .share-list-v3').hover(function () {

        }, function () {
            $('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .share-list-v3').addClass('hide');
            $('body.volunteer-opportunity-detail-page-v3').find('.vo-share-section .custom-share-v3 a.btn-share').removeClass('hide');
        });
    }
}


function process_occ_list() {
    if ($('body.volunteer-opportunity-detail-page-v2').length !== 0 || $('body.volunteer-opportunity-detail-page-v3').length !== 0) {

        var description = $(".vo-desc-section");
        if ($('body.volunteer-opportunity-detail-page-v3').length > 0)
            var description = $('.vo-opportunity-content');
        var salesforceDomain = $("#salesforceDomain").val();
        var multiTimeZone = $('.opportunity-detail-content input[name="multitimezone"]').val();

        //Fix to description images and links
        description.find('img').each(function () {
            if ($(this).attr('src') !== undefined && $(this).attr('src').match(/^www/) == null &&
                $(this).attr('src').match(/^http/) == null) {
                $(this).attr('src', salesforceDomain + '/' + $(this).attr('src'));
            }
        });
        description.find('a').each(function () {
            var text = $(this).attr('href');
            if (text !== undefined && text != null && text.indexOf('mailto') === -1 &&
                text.match(/^www/) == null &&
                text.match(/^http/) == null) {
                $(this).attr('href', salesforceDomain + '/' + $(this).attr('href'));
            }
        });
        //Fix to dates of ocurrences widget
        //var currentLocale = locale.split('-')[1].toLowerCase();
        var currentLanguage = window.translation['language_iso'];
        var currentLocale = window.translation['locale_iso'];
        moment.locale(currentLanguage);
        if ($('.express-interest-container').length !== 0) {
            $('.express-interest-block').each(function () {
                var startDate = $(this).attr('data-occ-start-date-time');
                var endDate = $(this).attr('data-occ-end-date-time');
                var ocTitle = $(this).find('.fieldset-title legend span.oc-title').html();
                var occIDInTitle = $(this).find('.fieldset-title input.occurrence-id').val();
                var spotsAvailables = $(this).find('input[name="spotsAvailablesV2"]').val();

                if (ocTitle == null || ocTitle == undefined)
                    ocTitle = '';
                var timezoneUser = window.translation['time_zone'];
                //Generate datetime in the opp detail for express interest
                if (startDate !== undefined && endDate !== undefined) {
                    if (toTimeZone(startDate, timezoneUser, 'MMMM DD, YYYY') === toTimeZone(endDate, timezoneUser, 'MMMM DD, YYYY')) {

                        var dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, LL");
                        if (MomentDateFormat.indexOf("D-M") !== -1 || MomentDateFormat.indexOf("D/M") !== -1) {
                            dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, DD MMMM, YYYY");
                        }
                        var timezoneInformation = $(this).find('input[name="timezoneInformation"]').val();

                        moment.locale(currentLocale);// to set the time to the site locale
                        var hourStart = toTimeZone(startDate, timezoneUser, MomentTimeFormat + " " + timezoneInformation + " - ");
                        var hourEnd = toTimeZone(endDate, timezoneUser, MomentTimeFormat);
                        moment.locale(currentLanguage); // to set the moment librtary to the locale acording to the selected language



                        var titleToDisplay = dayOpportunity + '\xa0\xa0' + window.translation.date_from_label + '\xa0' + hourStart + hourEnd + '\u000A' + timezoneInformation;
                        $(this).find('.fieldset-title legend').text('');
                        $(this).find('.fieldset-title legend').append('<span class="oc-date">' + titleToDisplay + '</span>');
                        //traditional chinese format
                        var titleInChinesse = traditional_chinese_format(dayOpportunity, hourStart, hourEnd, startDate);
                        if (titleInChinesse != '') {
                            titleToDisplay = titleInChinesse;
                        }

                        if (ocTitle !== null && ocTitle !== undefined && ocTitle !== '') {
                            $(this).find('.fieldset-title legend').append('<span class="oc-name">' + ocTitle + '</span>');
                        }
                        var titleForSelect = titleToDisplay;
                        if (spotsAvailables !== null && spotsAvailables !== undefined && spotsAvailables.trim() !== '') {
                            titleForSelect = titleForSelect + ' | ' + spotsAvailables;
                        }
                        $('select#dropdown-select-date option[value="' + occIDInTitle + '"]').text(titleForSelect);
                    }
                    else {
                        var dayStartOpportunity = toTimeZone(startDate, timezoneUser, "LLLL");
                        var dayEndOpportunity = toTimeZone(endDate, timezoneUser, "LLLL");
                        if (MomentDateFormat.indexOf("D-M") !== -1 || MomentDateFormat.indexOf("D/M") !== -1) {
                            dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, DD MMMM, YYYY " + MomentTimeFormat);
                            dayEndOpportunity = toTimeZone(endDate, timezoneUser, "dddd, DD MMMM, YYYY " + MomentTimeFormat);
                        }
                        var titleToDisplay = dayStartOpportunity + '\xa0\xa0' + window.translation.date_to_label + '\xa0\xa0' + dayEndOpportunity;
                        $(this).find('.fieldset-title legend').text(titleToDisplay);
                        var titleForSelect = titleToDisplay;
                        if (spotsAvailables !== null && spotsAvailables !== undefined && spotsAvailables.trim() !== '') {
                            titleForSelect = titleForSelect + ' | ' + spotsAvailables;
                        }
                        $('select#dropdown-select-date option[value="' + occIDInTitle + '"]').text(titleForSelect);
                    }

                }
            });
        }

        if ($('.sign-up-container').length !== 0) {
            $('.sign-up-block').each(function () {
                var startDate = $(this).attr('data-occ-start-date-time');
                var endDate = $(this).attr('data-occ-end-date-time');
                var ocTitle = $(this).find('.fieldset-title legend span.oc-title').html();
                var occIDInTitle = $(this).find('.fieldset-title input.occurrence-id').val();
                var occTimeZone = $(this).find('.fieldset-title input.occtimezone').val();
                var timezoneUser = window.translation['time_zone'];
                var spotsAvailables = $(this).find('input[name="spotsAvailablesV2"]').val();

                if (multiTimeZone !== undefined && (multiTimeZone === 'true' || multiTimeZone === 'True') && occTimeZone !== undefined && occTimeZone !== '')
                    timezoneUser = occTimeZone;

                moment.locale(currentLocale);
                //Generate datetime in the opp detail for sign up
                if (toTimeZone(startDate, timezoneUser, 'MMMM DD, YYYY') === toTimeZone(endDate, timezoneUser, 'MMMM DD, YYYY')) {
                    moment.locale(currentLanguage);// to set the moment librtary to the locale acording to the selected language
                    var dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, LL");
                    if (MomentDateFormat.indexOf("D-M") !== -1 || MomentDateFormat.indexOf("D/M") !== -1) {
                        dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, DD MMMM, YYYY");
                    }

                    dayOpportunity = capitalize_opportunity_day_name(dayOpportunity, currentLanguage);
                    var timezoneInformation = $(this).find('input[name="timezoneInformation"]').val();
                    moment.locale(currentLocale);// to set the time to the site locale
                    var hourStart = toTimeZone(startDate, timezoneUser, MomentTimeFormat) + " " + timezoneInformation + " - ";
                    var hourEnd = toTimeZone(endDate, timezoneUser, MomentTimeFormat);
                    moment.locale(currentLanguage);// to set the moment librtary to the locale acording to the selected language

                    var titleToDisplay = dayOpportunity + '\xa0\xa0' + window.translation.date_from_label + '\xa0' + hourStart + hourEnd + '\u000A' + timezoneInformation;
                    //traditional chinese format
                    var titleInChinesse = traditional_chinese_format(dayOpportunity, hourStart, hourEnd, startDate);
                    if (titleInChinesse != '') {
                        titleToDisplay = titleInChinesse;
                    }
                    $(this).find('.fieldset-title legend').text('');
                    $(this).find('.fieldset-title legend').append('<span class="oc-date">' + titleToDisplay + '</span>');
                    if (ocTitle !== null && ocTitle !== undefined && ocTitle !== '') {
                        $(this).find('.fieldset-title legend').append('<span class="oc-name">' + ocTitle + '</span>');
                    }
                    var titleForSelect = titleToDisplay;
                    if (spotsAvailables !== null && spotsAvailables !== undefined && spotsAvailables.trim() !== '') {
                        titleForSelect = titleForSelect + ' | ' + spotsAvailables;
                    }
                    $('select#dropdown-select-date option[value="' + occIDInTitle + '"]').text(titleForSelect);

                }
                else {
                    var dayStartOpportunity = toTimeZone(startDate, timezoneUser, "LLLL");
                    var dayEndOpportunity = toTimeZone(endDate, timezoneUser, "LLLL");
                    if (MomentDateFormat.indexOf("D-M") !== -1 || MomentDateFormat.indexOf("D/M") !== -1) {
                        dayOpportunity = toTimeZone(startDate, timezoneUser, "dddd, DD MMMM, YYYY " + MomentTimeFormat);
                        dayEndOpportunity = toTimeZone(endDate, timezoneUser, "dddd, DD MMMM, YYYY " + MomentTimeFormat);
                    }
                    var titleToDisplay = dayStartOpportunity + '\xa0\xa0' + window.translation.date_to_label + '\xa0\xa0' + dayEndOpportunity;

                    $(this).find('.fieldset-title legend').text(titleToDisplay);
                    if (spotsAvailables !== null && spotsAvailables !== undefined && spotsAvailables.trim() !== '') {
                        titleForSelect = titleForSelect + ' | ' + spotsAvailables;
                    }
                    $('select#dropdown-select-date option[value="' + occIDInTitle + '"]').text(titleForSelect);

                }
            });
        }

        if ($('.opportunity-detail-info').hasClass('dropdown-mode-view')) {
            var selector = "select#dropdown-select-date";
            if ($(selector).length > 0) {
                var valSelected = $(selector).val();
                if (valSelected !== undefined && valSelected !== null) {
                    $('.item-occ').each(function () {
                        if ($(this).hasClass('item-' + valSelected)) {
                            $(this).find('.fieldset-content').css('display', 'block');
                            $(this).show();
                        } else {
                            $(this).hide();
                        }
                    });
                }

                $(selector).on('change', function () {
                    var valSelected = $(this).val();
                    $('.item-occ').each(function () {
                        if ($(this).hasClass('item-' + valSelected)) {
                            $(this).find('.fieldset-content').show();
                            $(this).show();
                        } else {
                            $(this).hide();
                        }
                    });



                });
            }
        }

        var qs = getQueryString();

        if (qs['prerequisitesuccess']) { // Display confirmation message after prerequisite signup
            if ($('input#prerequisiteOpportunityName').length > 0) {
                var prerequisiteoppname = $('input#prerequisiteOpportunityName').val();
                var success_message = window.translation.opportunity_prerequisite_success.replace('{0}', prerequisiteoppname).replace('{1}', $('h2.title-opportunity').first().text());

                Swal.fire({
                    title: "",
                    text: success_message,
                    icon: "success"
                }).then(function (result) {
                    var currentOccId = $('.opportunity-detail-content > #occurrence_id').val();
                    $('html,body').animate({
                        scrollTop: $('.occurrence-id[value="' + currentOccId + '"]').closest('.row.fieldset-step').offset().top
                    }, 'fast');
                    var registeringWithTeam = qs['registeringWithTeam'] ? (qs['registeringWithTeam'] == 'true') : false;
                    if (registeringWithTeam) {
                        $('.occurrence-id[value="' + currentOccId + '"]').closest('.row.fieldset-step').find('a.signup-team').click();
                    }
                    else {
                        $('.occurrence-id[value="' + currentOccId + '"]').closest('.row.fieldset-step').find('a.signup-individual').click();
                    }


                });

            }
        }

        // Hide buttons in the prerequisite opportunity according to selection in the opportunity with prerequisite
        if ($('#prerequisite-notice').length > 0) {
            var registeringWithTeam = $('#prerequisite-notice').data('registeringwithteam');
            if (registeringWithTeam) {
                var button_text = $('.sign-up-container').length > 0 ? window.translation.sign_up_with_a_team : window.translation.express_interest_w_team;
                $('a.signup-individual').hide();
                $("a.signup-team").removeClass("border-left");
                $("a.signup-team").html(button_text);
            }
            else {
                $("a.signup-team").hide();
                $("a.signup-team").next("a.help").hide();
            }
        }

        if (qs['OneStepSignUp']) {
            var occId = $('#occurrence_id').val();
            $('input.occurrence-id[value="' + occId + '"]').closest('.row.fieldset-step').find('a.signup-individual').click();
        }
        else if (qs['OneStepSignUpWTeam']) {
            var occId = $('#occurrence_id').val();
            $('input.occurrence-id[value="' + occId + '"]').closest('.row.fieldset-step').find('a.signup-team').click();
        }

    }

}

function process_sign_up_now_button() {
    if ($(".current-occ-quick-buttons .button-section a.custom-button").length > 0) {
        $(".current-occ-quick-buttons .button-section a.custom-button").on('click', function (e) {
            e.preventDefault();
            go_to_scroll("opportunity-list-detail");
            return false;
        });
    }
}


function go_to_scroll(id) {
    $('html,body').animate({
        scrollTop: $("#" + id).offset().top - 100
    }, 'slow');
}

function add_hoc_verification_code_events() {
    var isVolRegistrationForm = false;
    var isPersonalInformationForm = false;
    var formSelector = "";
    var emailFieldId = "";

    if ($('#volunteer-register-form').length > 0) {
        isVolRegistrationForm = true;
        formSelector = "#volunteer-register-form";
        emailFieldId = "email";
    } else if ($('#personal-information-form').length > 0) {
        isPersonalInformationForm = true;
        formSelector = "#personal-information-form";
        emailFieldId = "Email";
    }

    if (isVolRegistrationForm === true || isPersonalInformationForm === true) {
        //verification-code-section
        //     var formSelector = '#volunteer-register-form';

        $('body').on('click', formSelector + ' .verification-code-section a.cancel-verification-code', function (event) {
            event.preventDefault();
            // then the email fields must be editable and the Submmit/Next button visible and the verification code section hiden
            $(formSelector + ' input.email-field').removeClass('custom-disabled-opacity');
            $(formSelector + ' .input-group-button.submit-button').show();
            $(formSelector + ' .verification-code-section').hide();

            if (isVolRegistrationForm === true) {
                if ($(formSelector + ' .actions_branch_logic a.next_option').length > 0 && $(formSelector + ' .actions_branch_logic a.next_option').attr('disabled') == 'disabled') {
                    $(formSelector + ' .actions_branch_logic a.next_option').removeAttr('disabled');
                }
            }

        });


        $('body').on('click', formSelector + ' .verification-code-section a.verify-code', function (event) {
            event.preventDefault();
            hide_verificationcode_error_element_hoc($(formSelector))
            verify_verification_code_hoc($(formSelector), $(formSelector + ' input#verificationtoken').val(), $(formSelector + ' input#verificationCode').val())

        });

        $('body ' + formSelector).on('input blur', 'input#' + emailFieldId, function () {

            var errorValue = $('label#email-error').css('display');

            var isErrorValue = false;
            if (errorValue == "block")
                isErrorValue = true;

            // take care of ARS when is using the back option
            var emailOriginalValue = $(this).data('original-value');

            //if is back of ARS, then add a new field that contains the currentInputEmail, to validate if a new verification code must be requested

            var currentInputValue = $.trim($(this).val());

            if (currentInputValue === '' || currentInputValue === undefined)
                $(this).closest(formSelector).find('p.info-email-code').hide();
            else if (emailOriginalValue !== currentInputValue && isErrorValue === false) {
                $(this).closest(formSelector).find('p.info-email-code').show();
            } else
                $(this).closest(formSelector).find('p.info-email-code').hide();

        });


        $('body ' + formSelector).on('keypress', 'input[name="verificationCode"]', function (e) {
            //if the letter is not digit then display error and don't type anything
            if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
                return false;
            }
        });

        $('body ' + formSelector).on('input', 'input[name="verificationCode"]', function (event) {

            if ($(formSelector + ' .verification-code-section a.verify-code').hasClass('custom-disabled-opacity')) {
                return false;
            }

            var elementCheckmark = $(this).closest(formSelector).find('.small-check-mark');

            if (elementCheckmark !== undefined && elementCheckmark.is(':visible')) {
                elementCheckmark.hide();
            }


            if ($(this).val().length >= 5) {
                console.log('triggering because the code contains 5 digits')
                hide_verificationcode_error_element_hoc($(formSelector))
                verify_verification_code_hoc($(formSelector), $(formSelector + ' input#verificationtoken').val(), $(this).val())
            }
        });


        $('body ' + formSelector).on('click', 'a.resend-code', function (event) {
            event.preventDefault();

            if ($(this).hasClass('custom-disabled-opacity')) {
                return false;
            }

            $(formSelector + ' .actions-section a.verify-code').removeClass('custom-disabled-opacity');
            $(formSelector + ' .actions-section a.verify-code').prop('disabled', false);
            hide_verificationcode_error_element_hoc($(formSelector));
            is_needed_verification_code_hoc(formSelector, true);
        });
    }
}

function hide_verificationcode_error_element_hoc(containerElement) {
    var elementError = containerElement.find('#verificationCode-error');
    if (elementError !== undefined && elementError.is(':visible')) {
        elementError.hide();
    }

    var elementCheckmark = containerElement.find('.small-check-mark');
    if (elementCheckmark !== undefined && elementCheckmark.is(':visible'))
        elementCheckmark.hide();
}

function verify_verification_code_hoc(containerElement, token, inputValue) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var hideProcessingScreens = true;
    var isRegistrationProcess = containerElement.find('#volunteer-register-form').length > 0;

    $.ajax({
        method: "POST",
        url: urlSite + "user/ValidateVerificationCode",
        data: { token: token, code: inputValue },
        beforeSend: function () {
            containerElement.find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status === "ok") {

            hideProcessingScreens = false;
            var emailElement = containerElement.find('#email');
            if (emailElement !== undefined)
                emailElement.data('original-value', emailElement.val());
            containerElement.find('.verification-code-section').addClass('custom-disabled-opacity');

            if (isRegistrationProcess === false) {
                // The contaionerElement is the form of volunteer personal information
                containerElement.submit();
            } else
                process_volunteer_registration_submit();

        } else if (jsonResult.status === "error" && jsonResult.code === 401) {

            var name = 'verificationCode';
            var fieldIdentifier = 'label[id="' + name + '-error"]';
            var label = '<label id="' + name + '-error" class="error" style="display:block;">' + jsonResult.message + '</label>';
            if ($('#' + name).parents('.fields-section').find(fieldIdentifier).length > 0) {
                $('#' + name).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
            } else {
                $('#' + name).parent().append(label);
            }

            if (jsonResult.token !== undefined) {
                containerElement.find('#verificationtoken').val(jsonResult.token);
            }

            if (jsonResult.blockRetries === true) {
                var verifyButton = containerElement.find('.verification-code-section .actions-section a.verify-code');
                if (verifyButton !== undefined) {
                    verifyButton.prop('disabled', true);
                    verifyButton.addClass('custom-disabled-opacity')
                }
            }

        } else {
            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });
        }

    }).always(function () {
        if (hideProcessingScreens === true)
            containerElement.find('.processing_screen').hide();
    });
}

function process_volunteer_registration_submit() { //Events to Volunteer Registration Branch Logic
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    volunteer_registration_branch_logic('volunteer-register-form');

    //Redirect to next if meet conditions of branch logic, if not meet conditions apply submit normally
    var branchLogicInputRedirect = $('form#volunteer-register-form').find('input#branch-logic-redirect');

    if (branchLogicInputRedirect.val() != '' && branchLogicInputRedirect.val() != null && branchLogicInputRedirect.val() != '/volunteer-confirmation-registration') {
        var form = $("form#volunteer-register-form");
        var postData = form.serializeObject();
        var donationTransactionId = '';
        var donationAmount = '';
        var donationAuthorizationId = '';

        // Building Custom Questions Format
        var qfields = form.find(".custom-questions input, .custom-questions textarea, .custom-questions select");
        postData['questions'] = qfields.serializeObject();

        //Disable submit to prevent multiples
        form.find(".submit-button").attr("disabled", true);
        form.find(".processing_screen").show();

        // the first called must be deleted and read it from form

        var siteId = form.find('input[name="siteReference"]').val();

        $.ajax({
            type: 'POST',
            url: urlSite + '/user/EncryptAES',
            data: { password: postData['password'] },
            success: function (data) {
                var passwordEncrypted = data;

                postData['password'] = passwordEncrypted;
                postData['retype_password'] = passwordEncrypted;
                postData['back-branch-logic'] = [];

                var urlObject = {};
                urlObject.urlCurrent = urlSite + branchLogicInputRedirect.val();
                urlObject.urlBack = window.location.pathname;

                postData['back-branch-logic'].push(urlObject);

                //Validate if exists value in localStorage
                if (localStorage.getItem('vol-branch-logic-form-data-' + siteId) !== null && localStorage.getItem('vol-branch-logic-form-data-' + siteId) !== 'null') {
                    //Get values of donation if exists
                    var volForm = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));

                    donationTransactionId = (volForm['donationTransactionId']) ? volForm['donationTransactionId'] : '';
                    donationAmount = (volForm['donationAmount']) ? volForm['donationAmount'] : '';
                    donationAuthorizationId = (volForm['donationAuthorizationId']) ? volForm['donationAuthorizationId'] : '';


                    postData['donationTransactionId'] = donationTransactionId;
                    postData['donationAmount'] = donationAmount;
                    postData['donationAuthorizationId'] = donationAuthorizationId;
                }

                _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, postData);

                remove_form_restriction(form, '4');
                //Redirect to next step
                window.location.href = urlSite + branchLogicInputRedirect.val();
            }
        });


    }
    else {
        var form = $("form#volunteer-register-form");
        var postData = form.serializeObject();

        // Building Custom Questions Format
        var qfields = form.find(".custom-questions input, .custom-questions textarea, .custom-questions select");
        postData['questions'] = qfields.serializeObject();

        $.ajax({
            type: 'POST',
            url: urlSite + '/user/EncryptAES',
            data: { password: postData['password'] },
            success: function (data) {
                var passwordEncrypted = data;

                postData['password'] = passwordEncrypted;

                var securityKey = getClientSecurityKey();
                var recalculateToken = false;
                if (securityKey != undefined) {
                    // compare the current time vs the time when the token eas generated
                    var initialTime = $('form#volunteer-register-form input[name="user_response_time"]').val();
                    var currentTime = new Date().getTime();

                    var diff = currentTime - initialTime;

                    if (diff > 90000)
                        recalculateToken = true;

                }

                if (recalculateToken === true) {
                    $('#volunteer-register-form').find(".submit-button").attr("disabled", true);
                    var actionName = $('form#volunteer-register-form input[name="pageactioname"]').val();

                    grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {

                        if ($('form#volunteer-register-form input[name="user_response"]').length > 0) {
                            var currentTime = new Date().getTime();
                            currentTime = currentTime + (24 * 60 * 60 * 1000);
                            $('form#volunteer-register-form input[name="user_response"]').val(token);
                            $('form#volunteer-register-form input[name="user_response_time"]').val(currentTime);
                        }
                        postData["user_response"] = token;
                        remove_form_restriction(form, '20');
                        ajax_submit_event(null, postData, '/volunteer-confirmation-registration');
                    });
                } else {
                    remove_form_restriction(form, '21');
                    ajax_submit_event(null, postData, '/volunteer-confirmation-registration');
                }


            }
        });
    }
}


function is_needed_verification_code_hoc(formSelector, isresendAction) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var pathService = "user/VerifyNewEmail";
    var emailIdField = "email";
    var postData = undefined;
    var contactName = "";

    var token = $(formSelector + ' input#verificationtoken').val();
    var code = $(formSelector + ' input#verificationCode').val();

    var isRegistrationProcess = formSelector === "#volunteer-register-form";

    if (isRegistrationProcess === false) {
        emailIdField = "Email";
        var emailToUpdate = $(formSelector + ' input#' + emailIdField).val();
        var oldEmail = $(formSelector + ' input#' + emailIdField).data('original-value');
        pathService = "user/VerifyChangeEmail";

        var elementInput = $(formSelector).find('#FirstName');
        if (elementInput !== undefined)
            contactName += elementInput.val() + " ";

        elementInput = $(formSelector).find('#LastName');
        if (elementInput !== undefined)
            contactName += elementInput.val();


        postData = { newEmail: emailToUpdate, oldEmail: oldEmail, contactName: contactName, token: token };
    } else {
        var emailToRegister = $(formSelector + ' input#' + emailIdField).val();
        var firstFormData = null;

        if (USE_NEW_VERIFICATION_CODE_FLOW == 1) {
            // Is needed add the current form data
            let formId = formSelector.substring(1)
            firstFormData = prepare_first_page_vol_form_data(formId, true);
            var siteId = $(formSelector + ' input[name="siteReference"]').val();
            _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, firstFormData);

            firstFormData = JSON.stringify(firstFormData)
        }

        var elementInput = $(formSelector).find('#first_name');
        if (elementInput !== undefined)
            contactName += elementInput.val() + " ";

        elementInput = $(formSelector).find('#last_name');
        if (elementInput !== undefined)
            contactName += elementInput.val();

        postData = { email: emailToRegister, token: token, verificationCode: code, contactName: contactName, internalData: firstFormData };
    }

    var hideProcessingScreens = true;

    if (isresendAction === undefined)
        isresendAction = false;

    $(formSelector + ' input.email-field').addClass('custom-disabled-opacity');
    // here if it is register then redirect to new page

    $.ajax({
        method: "POST",
        url: urlSite + pathService,
        data: postData,
        beforeSend: function () {
            var emailOriginalValue = $(formSelector + ' #' + emailIdField).data("original-value");
            if (emailOriginalValue !== undefined && emailOriginalValue !== '' && emailOriginalValue != emailToRegister)
                $(formSelector + ' p.info-email-code').show();

            $(formSelector).find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status === "ok") {

            if (jsonResult.requireCode === true) {

                if (jsonResult.verificationCodeInAddtionalPage == true) {
                    remove_form_restriction($(formSelector));
                    window.location.href = urlSite + 'verification-code-step?userverification=' + jsonResult.hash;
                } else {
                    $(formSelector + ' #verificationtoken').val(jsonResult.token);
                    $(formSelector + ' #verificationCode').val('');

                    if (isresendAction === false) {
                        $(formSelector + ' .input-group-button.submit-button').hide();
                        $(formSelector + ' .verification-code-section').show();
                        $(formSelector + ' p.info-email-code').show();
                        $(formSelector + ' #verificationCode').focus();
                        //go_to_scroll("verificationCode");
                    } else {
                        $(formSelector + ' .small-check-mark').css('display', 'inline-block');
                    }
                }
            } else {
                hideProcessingScreens = false;
                $(formSelector + ' .verification-code-section').addClass('custom-disabled-opacity');
                if (isRegistrationProcess === false) {
                    $(formSelector).submit();
                }
                else {
                    process_volunteer_registration_submit();
                }
            }

        } else if (jsonResult.status === "error" && jsonResult.code !== 500) {

            if (isresendAction === false) {
                var name = emailIdField;
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + jsonResult.message + '</label>';
                if ($('#' + name).parent('div').find(fieldIdentifier).length > 0) {
                    $('#' + name).parent('div').find(fieldIdentifier).replaceWith(label);
                } else {
                    $('#' + name).parent("div").append(label);
                }

                $(formSelector + ' p.info-email-code').hide();

                $(formSelector + ' input.email-field').removeClass('custom-disabled-opacity');
                go_to_scroll(emailIdField);

                if ($('label#' + name + '-info').length > 0) {
                    $('label#' + name + '-info').hide();
                }
                if (isresendAction === false && $(formSelector + ' .actions_branch_logic a.next_option').length > 0 && $(formSelector + ' .actions_branch_logic a.next_option').attr('disabled') == 'disabled') {
                    $(formSelector + ' .actions_branch_logic a.next_option').removeAttr('disabled');
                }
            } else {
                var name = 'verificationCode';
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="error" style="display:block;">' + jsonResult.message + '</label>';
                if ($('#' + name).parents('.fields-section').find(fieldIdentifier).length > 0) {
                    $('#' + name).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                } else {
                    $('#' + name).parent().append(label);
                }


                if (jsonResult.blockResendCode === true) {
                    var resendCodeButton = $(formSelector + ' .verification-code-section .resend-code-section a.resend-code');
                    if (resendCodeButton !== undefined) {
                        {
                            resendCodeButton.prop('disabled', true);
                            resendCodeButton.addClass('custom-disabled-opacity')
                        }
                    }
                }
            }

        }
        else {
            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });

            $(formSelector + ' input.email-field').removeClass('custom-disabled-opacity');
            if (isresendAction === false && $(formSelector + ' .actions_branch_logic a.next_option').length > 0 && $(formSelector + ' .actions_branch_logic a.next_option').attr('disabled') == 'disabled') {
                $(formSelector + ' .actions_branch_logic a.next_option').removeAttr('disabled');
            }
        }

    }).always(function () {
        if (hideProcessingScreens === true)
            $(formSelector).find('.processing_screen').hide();
    });

}

function verify_actions_branch_logic_buttons() {
    try {
        if ($('div.actions_branch_logic').length > 0) {

            if ($('div.next_option').length > 0 && $('div.back_option').length == 0) {
                $('div.actions_branch_logic').css('text-align', 'center');
                $('div.next_option').css('float', 'none');
            } else if ($('div.next_option').length == 0 && $('div.back_option').length > 0) {
                $('div.actions_branch_logic').css('text-align', 'center');
                $('div.next_option').css('float', 'none');
            }
        }
    } catch (e) {
        window.console && console.error(e)
    }
}


function ajax_submit_registration_ars_llamapi(self, dataTosend, urlToRedirect) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var requestVerificationToken = dataTosend["registrationData"]["__RequestVerificationToken"] !== null ? dataTosend["registrationData"]["__RequestVerificationToken"] : "";
    var valuesToSend = JSON.stringify(dataTosend);
    var siteId = dataTosend['connection-id'];
    $.ajax({
        method: "POST",
        url: urlSite + "ARS/ProcessLlamaPiRegistrationWithArs",
        data: {
            jsonData: valuesToSend,
            "__RequestVerificationToken": requestVerificationToken
        }

    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.code == '200') {
            remove_form_backup_from_session_storage();
            localStorage.removeItem('vol-branch-logic-form-data-' + siteId);
            if (self.find('form').length > 0) {
                remove_form_restriction(self.find('form').first(), '0');
            }

            //Verifying the ARS Registration
            if ($('body').hasClass('hoc-volunteer-system')) {
                let oneStepData = sessionStorage.getItem('onestepDataForRegisterHOC4');
                if (oneStepData !== null && oneStepData !== '') {
                    let data = JSON.parse(oneStepData);
                    if (data !== null && data.occSelectedBeforeLogin !== null && data.occSelectedBeforeLogin !== '') {
                        if (data.isMultiSignUp !== null && data.isMultiSignUp !== undefined && data.isMultiSignUp === true) {
                            if (data.firstOccId !== null && data.firstOccId !== undefined && data.firstOccId !== '') {
                                urlToRedirect = urlSite + 'opportunity/' + data.firstOccId + '?OneStepSignUp=true&isMultiSignUp=true&itemsId=' + data.items;
                            }
                        } else {
                            urlToRedirect = urlSite + 'opportunity/' + data.occSelectedBeforeLogin;
                            if (data.signUpBeforeLoginWTeam !== null && data.signUpBeforeLoginWTeam !== '') {
                                urlToRedirect += '?OneStepSignUpWTeam=true';
                            } else {
                                urlToRedirect += '?OneStepSignUp=true';
                            }
                        }

                    }
                }
                sessionStorage.removeItem('onestepDataForRegisterHOC4');
            }
            window.location.href = urlToRedirect;
        } else {
            Swal.fire({
                title: '',
                icon: 'error',
                html: jsonResult.message,
                confirmButtonText: 'Ok',
                closeOnConfirm: true,
            });
            $('.processing_screen').removeAttr('style');
            $('.processing_screen').addClass('hide-custom');
            $('.actions_branch_logic').find('.next_option a.button').removeAttr('disabled');
            $('.actions_branch_logic').find('.back_option a.button').removeAttr('disabled');
        }
    });

}

function print_version_behaviors() {
    if ($('.print-button-section a.print-button').length > 0) {
        $('.print-button-section a.print-button').on('click', function (e) {
            e.preventDefault();
            window.print();
            return false;
        });
    }
}


function is_signup_time_out_enabled() {
    var response = false;
    if ($('.opportunity-detail-content #isTimeOutForSingupEnabled').length > 0) {
        var timeoutValue = $('.opportunity-detail-content #isTimeOutForSingupEnabled').val();

        if (timeoutValue === "true")
            response = true;
    }

    return response;
}

function timer_for_swal_timeout(closeInSeconds) {
    if (closeInSeconds == undefined)
        closeInSeconds = 30;
    $('.sweet-alert.server-full .sa-button-container .sa-confirm-button-container').addClass('custom-disabled-opacity');
    $('.sweet-alert.server-full .sa-button-container .sa-confirm-button-container button.confirm').prop('disabled', true);

    var timer = setInterval(function () {

        closeInSeconds--;

        if (closeInSeconds <= 0) {
            $('.sweet-alert.server-full .sa-button-container .sa-confirm-button-container').removeClass('custom-disabled-opacity');
            $('.sweet-alert.server-full .sa-button-container .sa-confirm-button-container button.confirm').prop('disabled', false);
            clearInterval(timer);
        }

        $('.sweet-alert > p span.counter').text(closeInSeconds);

    }, 1000);
}

function remove_cookie_signupevent_timeout() {

    var oppIdEvent = $('.opportunity-detail-content input#opportunityId').val();
    var signupeventcookiename = "signupevent" + oppIdEvent;
    var signupeventvalue = getCookie(signupeventcookiename);
    var signupevent;
    //var allowSignUpEvent = true;

    if (signupeventvalue !== "") {
        signupevent = JSON.parse(signupeventvalue);
        signupevent.action = 'none';
        setCookie(signupeventcookiename, JSON.stringify(signupevent), -1);
    }
}

function load_rss() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if ($('.rssblock').length > 0) {

        $('.rssblock').each(function (index, el) {
            var self = $(this);
            var feedUrl = self.find('input[name="feed-url"]').val();
            var numberPost = self.find('input[name="number-post"]').val();
            var formData = self.find('form').serializeObject();
            $.ajax({
                url: urlSite + 'read-rss',
                data: { formData: formData },
                method: 'POST'

            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.code == 200) {
                    if (jsonResult.feeds !== null && jsonResult.feeds !== undefined) {
                        var contenedor = '';
                        var counter = 0;
                        jsonResult.feeds.forEach(function (item) {
                            if (counter < numberPost) {

                                var author = '';
                                if (item.Author !== null && item.Author !== undefined && item.Author !== '') {
                                    author = '<span>' + window.translation.by + ' ' + item.Author + '</span>';
                                }

                                var row = '<div class="story">' +
                                    '<h3 class="title">' +
                                    '<a href="' + item.Link + '" target="_blank">' + item.Title + '</a>' +
                                    '</h3 >' +
                                    '<div class="story-body">' +
                                    '<div tabindex="0" class="story-content">' +
                                    '<p class="author_date">' + author +

                                    ' ' + item.PubDate +
                                    '</p>' +
                                    '<div class="content">' +
                                    '<p>' + item.Description + '</p>' +
                                    '</div>' +
                                    '</div>' +
                                    '</div>' +
                                    '</div >';
                                contenedor += row;

                            }
                            counter++;
                        });
                        self.find('.container-stories').html(contenedor);
                        self.find('.container-stories').append('<div class="last-line"></div>');
                        validateRssBlock();
                        fix_rss_latest_news();
                    }
                } else {
                    Swal.fire({
                        title: '',
                        icon: 'error',
                        html: jsonResult.message,
                        confirmButtonText: 'Ok',
                        closeOnConfirm: true,
                    });
                }
            });

        });
    }
}

function load_social_network_colors() {
    if ($('.socialnetworkblock').length > 0) {
        $('.socialnetworkblock').each(function () {
            var self = $(this);
            var colorLink = self.find('input[name="colorLink"]').val();
            var colorHover = self.find('input[name="colorLinkHover"]').val();
            if ((colorLink !== null && colorLink !== undefined && colorLink !== '') || (colorHover !== null && colorHover !== undefined && colorHover !== '')) {
                var styles = '<style>';
                var baseRule = '#' + self.attr('id') + ' li a';
                if (colorLink !== null && colorLink !== undefined && colorLink !== '') {
                    var rule = baseRule + ':before{ color: ' + colorLink + ' !important;}';
                    rule += baseRule + '.tiktok svg .tiktokicon{ fill: ' + colorLink + ' !important;}';
                    styles += rule;
                }

                if (colorHover !== null && colorHover !== undefined && colorHover !== '') {
                    var rule = baseRule + ':hover:before{ color:#FFF !important; background-color:' + colorHover+'}';
                    rule += baseRule + '.tiktok:hover svg .tiktokicon{ fill:' + colorHover + ' !important;}';
                    styles += rule;
                }
                styles += '</style>';
                $('head').append(styles);
            }

        });
    }
}

function timer_for_custom_control_page() {

    if ($('body.control-request-page')) {
        var hiddenCustomValue = $('#waitFor').val();
        var closeInSeconds = 30;

        if (hiddenCustomValue !== undefined)
            closeInSeconds = hiddenCustomValue;

        $('.control-request-page .submit-button').addClass('custom-disabled-opacity');
        $('.control-request-page .submit-button a.custom-button').prop('disabled', true);

        var timer = setInterval(function () {

            closeInSeconds--;

            if (closeInSeconds <= 0) {
                $('.control-request-page .submit-button').removeClass('custom-disabled-opacity');
                $('.control-request-page .submit-button a.custom-button').prop('disabled', false);
                clearInterval(timer);
            }

            $('.control-request-page p span.counter').text(closeInSeconds);

        }, 1000);
    }
}


function get_geo_url(actionType) {
    // This flag allow to control if use external service or internal geo services. Added by RB
    var use_external_geo_service = false;
    var urlValue = "";

    if (use_external_geo_service === true) {
        if (actionType == "geolocation")
            urlValue = "https://apihoc2.handsonconnect.org/afg/rest/v1/getGeoLocation/";
        else
            urlValue = "https://apihoc2.handsonconnect.org/afg/rest/v1/getReverseGeoLocation/";
    } else {
        if (actionType == "geolocation")
            urlValue = "/getgeolocation/";
        else
            urlValue = "/getReverseGeoLocation/";
    }

    return urlValue;
}

function is_valid_password_sequential(password, maxN) {

    if (maxN === undefined || maxN == 0 || password === undefined) { return true; }

    // We also need to check that there are no reverse sequenses
    var passwordArray = password.split('');
    var passwordArrayReverse = passwordArray.reverse();
    var passwordReverese = passwordArrayReverse.join('');

    return validate_password_sequential(passwordReverese, maxN) && validate_password_sequential(password, maxN);
}

function validate_password_sequential(password, maxN) {
    //Validate if there are sequential characters or numbers in the password.
    var maxSequential = parseInt(maxN);
    var passArray = password.split('');
    var counter = 0;
    var prevValue = -1;
    for (var pos = 0; pos < passArray.length; pos++) {

        var c = '' + passArray[pos];
        if (!isNaN(c)) {//is a valid number

            var currentVal = parseInt(c);
            if (prevValue != -1 && (currentVal == (prevValue + 1) || currentVal === (prevValue + 1))) {
                counter++;

                if (counter === maxSequential) {
                    return false;
                }
            } else {
                counter = 0;
            }

            prevValue = currentVal;
        }
        else {
            prevValue = -1;
            counter = 0;
        }
    }

    return true;
}

function is_valid_password_repetitive(password, maxN) {

    if (maxN === undefined || maxN === 0 || maxN == 0 || password === undefined) { return true; }

    var maxRepetitive = parseInt(maxN);
    var passArray = password.split('');
    var counter = 0;
    var prevCharacter = '';
    for (var pos = 0; pos < passArray.length; pos++) {

        var c = passArray[pos];
        if (prevCharacter != '' && c == prevCharacter) {
            counter++;
        } else {
            counter = 0;
        }

        prevCharacter = c;
        if (counter == maxRepetitive) {
            return false;
        }
    }

    return true;
}

function remove_escape_query_string() {

    try {
        var currentUrl = window.location.href;
        if (currentUrl != undefined && currentUrl != '' && window.location.search.indexOf('qscp') > 0) {
            var params = new URLSearchParams(window.location.search);
            params.delete('qscp');

            history.pushState('', document.title, window.location.pathname + '?' + params);

        }
    }
    catch (e) {
        window.console && console.error(e)
    }
    //window.location.href
}


function get_country_from_locale(locale) {
    let country = 'US'
    try {
        if (locale !== null && locale !== undefined) {
            let localeParts = locale.trim().split('-');
            if (localeParts.length > 1)
                country = localeParts[1];
            else
                country = localeParts[0];

        }
    } catch (error) {
        console.error(error);
    }

    return country;
}

function get_start_day_of_week(country) {
    let startWeekDay = 0;

    try {
        country = country.trim().toUpperCase();

        switch (country) {
            case 'US':
                startWeekDay = 0;
                break;
            case 'AU': case 'FI': case 'FR': case 'GF': case 'GE': case 'DE': case 'GR': case 'HU': case 'IS': case 'IN': case 'ID': case 'IE': case 'IT': case 'KZ': case 'KG': case 'LV': case 'LB': case 'LT': case 'LU': case 'MK': case 'MY': case 'MC': case 'MN': case 'MA': case 'NL': case 'NZ': case 'NO': case 'PK': case 'PY': case 'PL': case 'PT': case 'RO': case 'RU': case 'RS': case 'SG': case 'SK': case 'ES': case 'SE': case 'CH': case 'TH': case 'TN': case 'TR': case 'UA': case 'GB': case 'UY': case 'VN':
                startWeekDay = 1;
                break;
            case 'AF': case 'DZ': case 'BH': case 'EG': case 'IR': case 'JO': case 'KW': case 'LY': case 'OM': case 'QA': case 'SA': case 'SY': case 'AE': case 'YE':
                startWeekDay = 6;
                break;
            default:
                startWeekDay = 0;
        }

    } catch (error) {
        console.error(error);
        startWeekDay = 0;
    }

    return startWeekDay;
}

function get_start_day_of_week_from_locale() {
    if (window.translation !== null && window.translation !== undefined)
        return get_start_day_of_week(get_country_from_locale(window.translation['locale_iso']));
    else
        return 0;
}

function process_payment_component_in_ars(paymentComponent, formBlock, self) {

    paymentComponent.find('input[name="redirectToAfterProcess"]').val('');
    var redirectURL = paymentComponent.find('input[name="urlToProcess"]').val();
    if (redirectURL !== null && redirectURL !== undefined && redirectURL.trim() !== "") {
        formBlock.find('form').attr('action', redirectURL);

        if (paymentComponent.hasClass('stripe-donation')) {
            var stTran = getParameterByName('stTran');
            var form = formBlock.find('form');
            var isrecurrentbillingform = $(form).find('input[name="isrecurrentbillingform"]').prop('checked');
            if (isrecurrentbillingform) {
                $(form).find('input[name="isrecurrentbillingform"]').val(true);
            }
            var url = form.attr('action');
            var data = form.serialize();
            $.ajax({
                method: "POST",
                url: url,
                data: data,
                beforeSend: function () {
                    //ativate loading
                }
            }).done(function (data) {

                var formBlockToPRocess = formBlock.find('form');
                remove_form_restriction(formBlockToPRocess, '8');

                var stripe = Stripe(data.publishable);
                return stripe.redirectToCheckout({ sessionId: data.id });
            });

        } else if (paymentComponent.hasClass('authorizenet-donation')) {
            var form = formBlock.find('form');
            var url = form.attr('action');
            var data = form.serialize();
            $.ajax({
                method: "POST",
                url: url,
                data: data,
                beforeSend: function () {
                }
            }).done(function (data) {
                var form = document.createElement("form");
                form.method = 'post';
                form.action = data.action;
                var input = document.createElement('input');
                input.type = "hidden";
                input.name = "token";
                input.value = data.token;
                form.appendChild(input);
                $('body').append(form);


                var formBlockToPRocess = formBlock.find('form');
                remove_form_restriction(formBlockToPRocess, '9');

                form.submit();
            });
        } else {
            var formBlockToPRocess = formBlock.find('form');
            var isrecurrentbillingform = $(formBlockToPRocess).find('input[name="isrecurrentbillingform"]').prop('checked');
            if (isrecurrentbillingform) {
                $(formBlockToPRocess).find('input[name="isrecurrentbillingform"]').val(true);
            }
            remove_form_restriction(formBlockToPRocess, '7');
            formBlock.find('form').submit();
        }

    } else {
        Swal.fire({
            title: '',
            icon: 'error',
            text: "Error to process the donation",
            confirmButtonText: 'Ok',
            closeOnConfirm: true
        });

        self.closest('.formBlock').find('.submit-button').removeClass('disabled');
        self.closest('.formBlock').find('.submit-button').removeAttr('disabled');
        self.closest('.formBlock').find('.processing_screen').hide();
        self.closest('.formBlock').find('.spinner').hide();
        return false;
    }

    return false;
}

function send_multi_signup_event(occIds, dateTimesInfo) {
    var registerTypeMode = get_register_type_mode();

    $('form#signup-questions-form input#occIds').val(occIds.join(","));
    $('form#signup-questions-form input#isMultiSignup').val("true");
    $('form#signup-questions-form input#registerTypeMode').val(registerTypeMode);

    if (!check_opportunity_prerequisite(null, null, false, true, occIds.join(","), dateTimesInfo)) {
        $('.processing_screen').hide();
        return false;
    }

    let encodeDateTimes = utf8ToBase64(JSON.stringify(dateTimesInfo));
    $('form#signup-questions-form input#occDateTimes').val(encodeDateTimes)

    var qs = $('#signup-questions').find('.question');
    if (qs.length > 0) {
        //  Reload multiselect
        $('#signup-questions select[multiple="multiple"]').multiselect();
        $('.processing_screen').hide();
        $('#signup-questions').foundation('open');
    } else {
        //  Trigger button action in Sigunp questions
        $('#signup-questions-form input[type="submit"]').trigger('click');
    }
}

function set_multi_signup_event() {
    if ($('div.multi-sign-up-mode-grid a.button-primary').length > 0) {
        $('div.multi-sign-up-mode-grid a.button-primary').removeAttr('data-open');
        $('div.multi-sign-up-mode-grid a.button-primary').click(function (event) {
            event.preventDefault();

            let occsChecked = 0;
            let occIds = [];
            let dateTimesInfo = [];
            $('table#multi-sign-up-table tr input.check-connection:checked').each(function () {
                occIds.push($(this).val());

                let infoData = $(this).parents("tr").find("td:eq(1) label");
                occsChecked++;
                dateTimesInfo.push(infoData.html());

            });

            //return false;
            if (occsChecked > 0) {
                //save and procced

                let titleMessage = null;
                var registerTypeModePage = get_register_type_mode();

                if (registerTypeModePage === 0)
                    titleMessage = window.translation.multi_sign_up_confirm_message;
                else
                    titleMessage = window.translation.multi_express_interest_confirm_message;

                Swal.fire({
                    title: titleMessage.replaceAll("{occsChecked}", occsChecked),
                    icon: "warning",
                    showCancelButton: true,
                    confirmButtonClass: 'btn-danger',
                    confirmButtonText: window.translation.yes,
                    cancelButtonText: window.translation.cancel,
                    closeOnConfirm: false,
                    showLoaderOnConfirm: true,
                    closeOnCancel: true,
                }).then(function (result) {
                    if (result.isConfirmed) {
                        send_multi_signup_event(occIds, dateTimesInfo);
                    }

                });


            } else {
                //show message error
                Swal.fire({
                    title: 'You must choose at least one item',
                    icon: "warning",
                    showCancelButton: false,
                    confirmButtonClass: 'btn-danger',
                    confirmButtonText: window.translation.email_send,
                    closeOnConfirm: false,
                    showLoaderOnConfirm: false,
                });
            }

        });
    }
}
// 0 = signup , 1 = express interent , -1 any other
function get_register_type_mode() {

    let modeType = -1;
    if ($('.sign-up-container').length > 0)
        modeType = 0;
    else if ($('.express-interest-container').length > 0)
        modeType = 1;
    return modeType;

}

function get_selected_occs_multi_signup() {
    let occIds = [];
    $('table#multi-sign-up-table tr input.check-connection:checked').each(function () {
        occIds.push($(this).data('item'));
    });
    return occIds.join();
}

function get_gmap_api_key() {
    let gmapapivalue = '';
    if ($('input[name="key-address-suggestion"]').length > 0) {
        gmapapivalue = $('input[name="key-address-suggestion"]:first').val();
    }
    return gmapapivalue;

}

function is_googlemapapi_loaded() {

    if (typeof google === 'object' && typeof google.maps === 'object') {
        return true;
    }

    return false;
}

function load_google_map_api(includePlacesLibrary, callback) {

    const gapikey = get_gmap_api_key();
    let urlToLoad = "https://maps.googleapis.com/maps/api/js?key=" + gapikey;

    if (includePlacesLibrary === true)
        urlToLoad = "https://maps.googleapis.com/maps/api/js?libraries=places&key=" + gapikey;

    $.getScript(urlToLoad)
        .done(function (script, textStatus) {
            // Load the Visualization API and the corechart package. At this moment the v49 is the most stable version
            if (callback !== undefined)
                callback(false);
        })
        .fail(function (jqxhr, settings, exception) {
            console.log('exception', exception);
            Swal.fire({
                title: "Error",
                icon: "error",
                text: "error loading gogle map API",
                confirmButtonText: "Ok"
            });
        });
}

function S4() {
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}

function generate_basic_uuid() {
    var guid = (S4() + S4() + "-" + S4() + "-4" + S4().substr(0, 3) + "-" + S4() + "-" + S4() + S4() + S4()).toLowerCase();
    return guid;
}

function get_session_token() {

    var sessionTokenData = sessionStorage.getItem("session_token");
    var sessionToken = null;
    var regenerateToken = false;


    if (sessionTokenData !== undefined && sessionTokenData !== '' && sessionTokenData !== null) {

        sessionTokenData = JSON.parse(sessionTokenData);

        if (sessionTokenData.sessionToken !== undefined) {

            var now = new Date();
            if (now.getTime() > sessionTokenData.timestamp) {
                regenerateToken = true;
            } else
                sessionToken = sessionTokenData.sessionToken;

        } else
            regenerateToken = true;
    } else
        regenerateToken = true;


    if (regenerateToken === true) {
        sessionToken = generate_basic_uuid();
        var expireTime = new Date();
        expireTime.setMinutes(expireTime.getMinutes() + 5);

        sessionStorage.setItem("session_token", JSON.stringify({ 'sessionToken': sessionToken, 'timestamp': expireTime.getTime() }));
    }


    return sessionToken;
}

function process_autocomplete_location_data(data, theOriginalData, formSelector, dataMachineName, formId) {
    var submitTheForm = true;

    try {
        data = JSON.parse(data);
        var itemsToReturn = [];

        if (data.code === 200) { // at least one items was returned
            //
            var theData = $.trim(theOriginalData.toLowerCase().replaceAll(',', ''));


            data.items.forEach(function (item) {
                var itemData = $.trim(item.name.toLowerCase().replaceAll(',', ''));
                if (theData !== itemData) {
                    itemsToReturn.push([item.place_id, item.name + " <span class='important-information'>(Suggested address)</span>"]);
                }
            });


            if (itemsToReturn.length > 0) {
                submitTheForm = false;
                itemsToReturn.unshift(['original', theOriginalData + "<span class='important-information'>(Original address)</span>"]);
                var isTheFirstSuggested = true;
                $('#address-lookup').foundation('open');

                var table = $('#address-lookup-datatable');
                $('#address-lookup #chooseaddress').data('selectedAddressComponent', dataMachineName);
                var datatable_address = $('#address-lookup-datatable').DataTable({
                    data: itemsToReturn,
                    "bPaginate": false,
                    "bLengthChange": false,
                    "bProcessing": true,
                    "destroy": true,
                    initComplete: function (settings, json) {
                        table.closest('.dataTables_wrapper').find(".dataTables_filter").remove();
                        $(this).addClass('tfoot-filters');

                        $('.choose-address-section #chooseaddress').removeAttr('disabled');
                        $('.choose-address-section .spinner').hide();

                    },
                    rowCallback: function (row, data, index) {

                        $(row).attr('data-value', data[0]);
                        $(row).attr('data-display-value', data[1]);
                    },
                    columnDefs: [
                        {
                            "targets": "_all",

                        },
                        {
                            "targets": [0],
                            "width": "1%",
                            "orderable": false,
                            "render": function (data, type, row) {

                                if (row[0] !== "original" && isTheFirstSuggested === true) {
                                    isTheFirstSuggested = false;
                                    return '<input type="radio" checked name="addressId" class="address-item" value="' + row[0] + '"/>';
                                }
                                else
                                    return '<input type="radio" name="addressId" class="address-item" value="' + row[0] + '"/>';
                            },

                        }
                    ]
                });
            }
        } else if (data.code === 404) {
            submitTheForm = false;

            Swal.fire({
                title: window.translation.it_is_not_valid_address,
                html: window.translation.address_no_suggestion_warning,
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: '#c1c1c1',
                confirmButtonText: window.translation.continue_text,
                cancelButtonText: window.translation.check_address,
                closeOnConfirm: false,
                showLoaderOnConfirm: true,
                closeOnCancel: true,
                customClass: "Custom_Cancel"

            }).then(function (result) {
                if (result.isConfirmed) {
                    submitTheForm = true;
                    // the user accept use the current address, then submit  the form
                    sessionStorage.removeItem("session_token");
                    if (formSelector !== undefined && formSelector !== null) {
                        $(formSelector).submit();
                    } else if ($('#volunteer-opportunity-additional-occurrences').length > 0) {
                        $('#create-volunteer-opportunity-additional-occ-form').append('<input type="hidden" name="action" id="action" value="add" />');
                        var datatableAddOcc = $('#volunteer-opportunity-additional-occurrences').DataTable();
                        add_additional_occurrence(datatableAddOcc);
                        Swal.close();
                    } else if (dataMachineName !== undefined && formId !== undefined) {// can be from formbuilder
                        $('.section.address-component-use-address-suggestion[data-machine-name="' + dataMachineName + '"]').addClass('address-suggestion-completed')

                        if ($('.section.address-component-use-address-suggestion[data-machine-name="' + dataMachineName + '"]').parents('.formBlock.blockContainer').hasClass('arsBlock')) {
                            $('.actions_branch_logic .next_option a').trigger('click');
                        } else {
                            $('#form-custom-' + formId).find('.submit-group a.submit-button').trigger('click');
                        }
                    }

                }
            });

        }

    } catch (e) {
        window.console && console.error(e)
    }

    return submitTheForm;

}

function prepare_first_page_vol_form_data(formId, calculateBranchLogic) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    if (calculateBranchLogic == true)
        volunteer_registration_branch_logic(formId);

    //Redirect to next if meet conditions of branch logic, if not meet conditions apply submit normally
    var branchLogicInputRedirect = $('input#branch-logic-redirect');
    var form = $("form#" + formId);
    var postData = form.serializeObject();
    var donationTransactionId = '';
    var donationAmount = '';
    var donationAuthorizationId = '';
    var siteId = form.find('input[name="siteReference"]').val();

    // Building Custom Questions Format
    var qfields = form.find(".custom-questions input, .custom-questions textarea, .custom-questions select");
    postData['questions'] = qfields.serializeObject();

    //Disable submit to prevent multiples
    form.find(".submit-button").attr("disabled", true);
    form.find(".processing_screen").show();

    //var passwordEncrypted = data;

    //postData['password'] = passwordEncrypted;
    //postData['retype_password'] = passwordEncrypted;
    postData['back-branch-logic'] = [];

    var urlObject = {};
    urlObject.urlCurrent = urlSite + branchLogicInputRedirect.val();
    urlObject.urlBack = window.location.pathname;
    urlObject.currentIsSuccessPage = branchLogicInputRedirect.attr('data-issuccess');

    postData['back-branch-logic'].push(urlObject);

    //Validate if exists value in localStorage
    if (localStorage.getItem('vol-branch-logic-form-data-' + siteId) !== null && localStorage.getItem('vol-branch-logic-form-data-' + siteId) !== 'null') {
        //Get values of donation if exists
        var volForm = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));

        donationTransactionId = (volForm['donationTransactionId']) ? volForm['donationTransactionId'] : '';
        donationAmount = (volForm['donationAmount']) ? volForm['donationAmount'] : '';
        donationAuthorizationId = (volForm['donationAuthorizationId']) ? volForm['donationAuthorizationId'] : '';


        postData['donationTransactionId'] = donationTransactionId;
        postData['donationAmount'] = donationAmount;
        postData['donationAuthorizationId'] = donationAuthorizationId;
    }

    // _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, postData);

    //remove_form_restriction(form, '4');
    //Redirect to next step
    //window.location.href = urlSite + branchLogicInputRedirect.val();

    return postData;
}

function prepare_first_page_vol_form_data_llamapi(formId, formForm) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    //Redirect to next if meet conditions of branch logic, if not meet conditions apply submit normally
    var branchLogicInputRedirect = $('input#branch-logic-redirect');
    var form = $("form#" + formId);
    // var postData = formForm; // form.serializeJSON();

    if (formForm === undefined || formForm == null)
        formForm = form.serializeJSON();

    var _formId = form.closest('.formBlock').data('form-id');

    formForm['formId'] = _formId;
    formForm['save_complete_later'] = false;

    var dataToStore = {};

    var siteId = form.find('input[name="siteReference"]').val();

    //Disable submit to prevent multiples
    form.find(".submit-button").attr("disabled", true);
    form.find(".processing_screen").show();

    dataToStore['back-branch-logic'] = [];
    dataToStore["registrationData"] = formForm;
    dataToStore["connection-id"] = siteId;

    let urlCurrentUrl = null;
    if (branchLogicInputRedirect.length > 0)
        urlCurrentUrl = urlSite + branchLogicInputRedirect.val();

    var urlObject = {};
    urlObject.urlCurrent = urlCurrentUrl;
    urlObject.urlBack = window.location.pathname;

    dataToStore['back-branch-logic'].push(urlObject);

    //review the querystring
    if ($('body').hasClass('hoc-volunteer-system') && $('body').hasClass('hoc-volunteer-system-hybrid')) {
        //verify the query string
        var occSelectedBeforeLogin = retrieveGetParameter("occSelectedBeforeLogin");
        var confirmationUrl = retrieveGetParameter("confirmationUrl");
        var waitlistAllowed = retrieveGetParameter("waitlistAllowed");
        var signUpBeforeLoginWTeam = retrieveGetParameter("signUpBeforeLoginWTeam");
        if (occSelectedBeforeLogin !== null && occSelectedBeforeLogin !== undefined) {
            var objOneStep = {
                occSelectedBeforeLogin: occSelectedBeforeLogin,
                confirmationUrl: confirmationUrl,
                waitlistAllowed: waitlistAllowed,
                signUpBeforeLoginWTeam: signUpBeforeLoginWTeam,
            };

            dataToStore['oneStepSignup'] = JSON.stringify(objOneStep);
        }
    }


    return dataToStore;
}

function is_necessary_recalculate_recaptcha_token(initialTime) {
    var recalculateToken = false;
    var securityKey = getClientSecurityKey();

    if (securityKey != undefined) {
        var currentTime = new Date().getTime();

        var diff = currentTime - initialTime;

        if (diff > 90000)
            recalculateToken = true;
    }

    return recalculateToken;
}

function invoke_verification_code_additional_page_hoc_inner(self, formSelector, origin) {
    // it can be invoked from  button verify or automatically after set the five digits

    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    let processingElement = self.parents("form").find(".processing_screen");
    let labelErrorElement = self.parents("form").find('#verificationCode-error');

    labelErrorElement.html("");
    labelErrorElement.css("display", "none");

    if (processingElement !== undefined && processingElement.length > 0) {
        processingElement.removeClass("hide-custom");
    }

    let dataForm = $(formSelector).serializeArray();

    if (origin !== undefined) {
        let originObject = { name: 'originRequest', value: origin }
        dataForm.push(originObject)
    }

    $.ajax({
        type: 'POST',
        url: urlSite + 'user/ProcessVerificationCodeInAdditionalPage',
        data: dataForm,
        success: function (data) {
            var response = JSON.parse(data);
            if (response.code == 200) {
                // set data in local storage to continue with the submit process
                let internalData = JSON.parse(response.internalData);
                _assign_value_json_local_storage('vol-branch-logic-form-data-' + response.siteId, internalData);

                var defaultSubmit = true;
                var finalRedirection = '/volunteer-confirmation-registration';
                if (internalData) {
                    let infoRedirect = internalData['back-branch-logic'][0];
                    if (infoRedirect['urlCurrent'] != undefined && infoRedirect['urlCurrent'] != null) {
                        let urlToRedirect = "";

                        let urlSiteWithoutSlash = urlSite;
                        if (urlSiteWithoutSlash.endsWith('/')) {
                            urlSiteWithoutSlash = urlSite.substring(0, urlSiteWithoutSlash.length - 1);
                        }
                        if (IS_LLAMAPI_ENABLED) {
                            if (infoRedirect['urlCurrent'] != '/success-registration') {
                                defaultSubmit = false;

                                urlToRedirect = infoRedirect['urlCurrent'];

                                if ($('body').hasClass('hoc-volunteer-system') &&
                                    internalData["oneStepSignup"] !== null &&
                                    internalData["oneStepSignup"] !== undefined) {
                                    oneStepData = internalData["oneStepSignup"];
                                    //verifying OneStepSignup
                                    let url = internalData['registrationData']['url_with_query_string'];
                                    if (url !== null && url !== undefined && url !== '') {
                                        if (url.indexOf('isMultiSignUp=true') != -1) {
                                            //should Reform OneStepData
                                            let items = url.split('?');
                                            let queryString = '';

                                            if (items.length > 1) {
                                                queryString = items[1];
                                            }
                                            let queryStringObj = getQueryString(queryString);
                                            let dataObj = JSON.parse(oneStepData);
                                            dataObj['isMultiSignUp'] = true;
                                            dataObj['firstOccId'] = queryStringObj['firstOccId'];
                                            dataObj['items'] = queryStringObj['itemsId'];
                                            oneStepData = JSON.stringify(dataObj);
                                        }
                                    }
                                    sessionStorage.setItem('onestepDataForRegisterHOC4', oneStepData);


                                }


                                window.location.href = urlToRedirect;

                            }
                        } else {
                            if (infoRedirect['currentIsSuccessPage'] !== null && infoRedirect['currentIsSuccessPage'] !== undefined && infoRedirect['currentIsSuccessPage'] == 'true') {
                                defaultSubmit = true;
                                finalRedirection = infoRedirect['urlCurrent'];
                            }
                            else if(infoRedirect['urlCurrent'] != "/" && infoRedirect['urlCurrent'] != ""
                                && infoRedirect['urlCurrent'] != '/volunteer-confirmation-registration' && infoRedirect['urlCurrent'] != urlSiteWithoutSlash
                                && !infoRedirect['urlCurrent'].endsWith('/volunteer-confirmation-registration')) {
                                defaultSubmit = false;
                                urlToRedirect = infoRedirect['urlCurrent'];

                                window.location.href = urlToRedirect;
                            }

                        }
                    }
                }

                if (defaultSubmit === true) {

                    if (IS_LLAMAPI_ENABLED) {
                        var oneStepData = null;
                        if ($('body').hasClass('hoc-volunteer-system') &&
                            internalData["oneStepSignup"] !== null &&
                            internalData["oneStepSignup"] !== undefined) {
                            oneStepData = internalData["oneStepSignup"];
                        }
                        internalData["registrationData"]["verificationtoken"] = internalData.verificationtoken;
                        submit_form(self, internalData["registrationData"], false, true, oneStepData);

                    } else {
                        //verify recaptcha for vol registration
                        var recalculateToken = is_necessary_recalculate_recaptcha_token(internalData["user_response_time"]);

                        if (recalculateToken === true) {
                            var actionName = 'volunteer_registration'

                            grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {
                                var currentTime = new Date().getTime();
                                currentTime = currentTime + (24 * 60 * 60 * 1000);
                                internalData["user_response"] = token;
                                internalData["user_response_time"] = currentTime;
                                ajax_submit_event(null, internalData, finalRedirection)
                            });
                        } else {
                            ajax_submit_event(null, internalData, finalRedirection)
                        }
                    }

                }
                else {
                }
            } else {
                if (processingElement !== undefined && processingElement.length > 0) {
                    labelErrorElement.html(response.message);
                    labelErrorElement.css("display", "block");
                    processingElement.addClass("hide-custom");
                }

                if (response.code == 401) {
                    let verifyButtonElement = $(formSelector + ' .buttons-section input.verify-code-button');
                    //'custom-disabled-opacity'
                    if (verifyButtonElement !== undefined) {
                        verifyButtonElement.addClass('custom-disabled-opacity');
                    }
                }
            }
        }
    });
}

function verification_code_additional_page_hoc_actions() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';


    if ($('.page-section-verification-code .section-wrapper').length > 0) {

        let formSelector = '.page-section-verification-code .section-wrapper #verification-code-page';

        $(formSelector + ' input.verify-code-button').on('click', function () {
            // verify by jquery validate
            invoke_verification_code_additional_page_hoc_inner($(this), formSelector,'clicked button')
        });


        $('body ' + formSelector).on('input', 'input[name="verificationCode"]', function (event) {

            if ($(formSelector + ' .verification-code-section a.verify-code').hasClass('custom-disabled-opacity')) {
                return false;
            }

            //  var elementCheckmark = $(this).closest(formSelector).find('.small-check-mark');

            /*
            if (elementCheckmark !== undefined && elementCheckmark.is(':visible')) {
                elementCheckmark.hide();
            }*/


            if ($(this).val().length >= 5) {
                console.log('length code is 5, auto triggering')
                hide_verificationcode_error_element_hoc($(formSelector))
                invoke_verification_code_additional_page_hoc_inner($(this), formSelector, 'auto trigger');
            }
        });

        $('body ' + formSelector).on('click', 'a.resend-code', function (event) {
            event.preventDefault();

            if ($(this).hasClass('custom-disabled-opacity')) {
                return false;
            }


            hide_verificationcode_error_element_hoc($(formSelector));
            let userverification = $(formSelector + ' input[name="token"]').val()

            $.ajax({
                method: "GET",
                url: urlSite + "user/ResendVerificationCodeInAdditionalPage?userverification=" + userverification,
                beforeSend: function () {

                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                if (jsonResult.status === "ok") {

                    $(formSelector + ' .small-check-mark').css('display', 'inline-block');
                    let verifyButtonElement = $(formSelector + ' .buttons-section input.verify-code-button');

                    if (verifyButtonElement !== undefined) {
                        verifyButtonElement.removeClass('custom-disabled-opacity');
                    }

                } else if (jsonResult.status === "error") {

                    let labelErrorElement = $(formSelector + ' #verificationCode-error');
                    if (labelErrorElement !== undefined) {
                        labelErrorElement.html(jsonResult.message);
                        labelErrorElement.css("display", "block");
                    }

                    if (jsonResult.code == 401) {
                        $(formSelector + ' a.resend-code').parent("p").addClass("custom-disabled-opacity");

                    }

                }

            }).always(function () {

            });

        });
    }
}

function init_date_picker_widget_pp() {
    $('.date-picker-pp').each(function () {
        var data = $(this).data();
        var DatePickerFormat = data.shortDatePattern;
        $(this).fdatepicker({
            format: DatePickerFormat,
            weekStart: get_start_day_of_week_from_locale(),
        }).on('changeDate', function (ev) {
            var element_data = $(ev.target).data();
            if ('endDateField' in element_data) {
                var element = $(ev.target);
                var end_date = $('#' + data.endDateField + '');
                if (end_date.val() != '') {
                    var startDateData = element_data;
                    var endDateData = end_date.data();
                    var endDateDatePicker = endDateData.datepicker;
                    var startDate = moment(element.val(), startDateData.shortDatePattern.toUpperCase());
                    var endDate = moment(end_date.val(), endDateData.shortDatePattern.toUpperCase());
                    if (startDate.diff(endDate, 'days') > 0) {
                        var newDate = startDate.add(1, 'days').toDate();
                        endDateDatePicker.update(newDate);
                    }
                }
            }
            else if ('startDateField' in element_data) {
                var element = $(ev.target);
                var start_date = $('#' + data.startDateField + '');
                if (start_date.val() != '') {
                    var startDateData = start_date.data();
                    var endDateData = element_data;
                    var startDateDatePicker = startDateData.datepicker;
                    var startDate = moment(start_date.val(), startDateData.shortDatePattern.toUpperCase());
                    var endDate = moment(element.val(), endDateData.shortDatePattern.toUpperCase());
                    if (startDate.diff(endDate, 'days') > 0) {
                        var newDate = endDate.subtract(1, 'days').toDate();
                        startDateDatePicker.update(newDate);
                    }
                }
            }

            if ($(this).closest('form.validate-pp').length > 0 && $(this).rules() != null) {
                $(this).valid();
            }
        });
    });
}

function latlong_exist_in_array(array, lat, lng) {
    var countItemExist = 0;
    for (var i = 0; i < array.length; i++) {
        if (array[i].lat.startsWith(lat) && array[i].lng.startsWith(lng)) {
            countItemExist++;
        }
    }
    return countItemExist;
}

function utf8ToBase64(str) {
    return btoa(unescape(encodeURIComponent(str)));
}

function capitalize_opportunity_day_name(sentence, currentLanguage) {
    try {
        if (currentLanguage !== null && currentLanguage !== undefined && !currentLanguage.startsWith('en-')) {
            sentence = capitalize_first_letter(sentence);
        }
    } catch (e) {
        window.console && console.error(e)
    }
    return sentence;
}

function capitalize_first_letter(word) {
    // Check if the input is not an empty string
    if (word.length === 0) {
        return word;
    }
    // Capitalize the first letter and concatenate it with the rest of the word
    return word.charAt(0).toUpperCase() + word.slice(1);
}

function calculate_express_interest_label_for_individual_schedule_opportunity(mode) {
    try {
        let originalLabel = $('#iso-form input[name="express_interest_original_label"]').val();

        if (mode == 'RRS') {
            let dateRangeProvided = false;
            let startDate = $('#iso-form input.date-picker-iso.startdate').val();
            let endDate = $('#iso-form input.date-picker-iso.enddate').val();
            let recurrenceDaysProvided = $("#added-days-table .body div.dynamic-row").length > 0;

            if (startDate !== undefined && startDate != null && startDate.trim().length > 0 &&
                endDate !== undefined && endDate != null && endDate.trim().length > 0)
                dateRangeProvided = true;

            if (dateRangeProvided === true && recurrenceDaysProvided === true) {
                $("#iso-form a.custom-button-link.signup-iso").text(originalLabel);
                $("#iso-form a.custom-button-link.signup-iso").removeClass("custom-disabled-opacity");
                $("#added-days-table .body .no-rows-added").hide();
            } else if (!recurrenceDaysProvided) {
                $("#iso-form a.custom-button-link.signup-iso").addClass("custom-disabled-opacity");
                $("#iso-form a.custom-button-link.signup-iso").text(originalLabel + " (" + window.translation.add_at_least_one_config_to_schedule + ")");
                $("#added-days-table .body .no-rows-added").show();
            } else {
                $("#added-days-table .body .no-rows-added").hide();
                $("#iso-form a.custom-button-link.signup-iso").addClass("custom-disabled-opacity");
                $("#iso-form a.custom-button-link.signup-iso").text(originalLabel + " (" + window.translation.set_start_date_end_date + ")");
            }
        } else if (mode == 'SDT') {
            let date = $('#iso-form #iso-specific-date-time input.date-picker-iso.start-date').val();
            let startTime = $('#iso-form #iso-specific-date-time input.timepicker.start-time').val();
            let endTime = $('#iso-form #iso-specific-date-time input.timepicker.end-time').val();
            let timeRangeProvided = false;
            let dateProvided = false;


            if (startTime !== undefined && startTime != null && startTime.trim().length > 0 &&
                endTime !== undefined && endTime != null && endTime.trim().length > 0)
                timeRangeProvided = true;

            if (date !== undefined && date !== null && date.trim().length > 0)
                dateProvided = true;

            if (timeRangeProvided === true && dateProvided === true) {
                //Enable button with original label
                $("#iso-form a.custom-button-link.signup-iso").removeClass("custom-disabled-opacity");
                $("#iso-form a.custom-button-link.signup-iso").text(originalLabel);
            } else {
                $("#iso-form a.custom-button-link.signup-iso").addClass("custom-disabled-opacity");
                $("#iso-form a.custom-button-link.signup-iso").text(originalLabel + " (" + window.translation.set_start_date_time_start_end + ")");
            }
        }
    } catch (e) {
        window.console && console.error(e)
    }
}
let formSubmitted = false;

function ajax_reset_password_submit_function() {
    $("form.reset-password-form").submit(function (e) {
        
        if (formSubmitted) {
            event.preventDefault();
            return false;
        }
        formSubmitted = true;
        let isValid = $(this).valid();
        if (!isValid)
        {
            formSubmitted = false;
            return false;
        }
        $('.processing_screen').show();
    });
}

function htmlEncode(value) {
    const namedEntities = {
        '&': '&amp;',
        '<': '&lt;',
        '>': '&gt;',
        '"': '&quot;',
        "'": '&#x27;'
    };

    return value.replace(/[&<>"']/g, char => namedEntities[char] || `&#${char.charCodeAt(0)};`);
}

let externalRedirectConfig = {
    enabled: false,
    allowedDomains: []
};

function initializeExternalRedirectConfig(config) {
    externalRedirectConfig = config;
}

function isExternalUrl(url) {
    if (!url) return false;

    try {
        // Handle relative URLs
        if (url.startsWith('/') || url.startsWith('#') || url.startsWith('./') || url.startsWith('../')) {
            return false;
        }

        const currentDomain = window.location.hostname.toLowerCase();
        const urlObj = new URL(url);
        const urlDomain = urlObj.hostname.toLowerCase();

        // If it's the same domain, it's not external
        return currentDomain !== urlDomain;
    } catch {
        // If URL parsing fails, consider it non-external for safety
        return false;
    }
};
/*
    Custom events and methods to form builder functionality 
*/

var IS_LLAMAPI_ENABLED = false;
var active_from_registration = false;
var dragulaFormBuilder = null;
var active_from_update_user_information = false;
var form_builder_save_field_new_approach = true;


function LoadMethodsWithResources() {
    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();
    set_llamapi_environment();
    IS_LLAMAPI_ENABLED = (window.is_llamapi !== undefined && window.is_llamapi !== null ? window.is_llamapi : false);
    if(window.translation) {
        OpenFormBuilder();
    }
    // Load data saved when form block has complete later active. 
    PopulateFromBlockWithTemporalData();
    EventsForsMentionsFeature();
}

function add_events_form_builder() {
    $(document).on('change', '.form_builder_block select[name="display_picklist_mode"]', function () {
        var value = $(this).val();



        if (value == '0') {
            // show
            $('#form-builder-block .sf-listview-default-value').removeClass('hidden');

            // Hide
            $('#form-builder-block .number_of_columns_checkbox').addClass('hidden');
            $(".form_builder_block .textRatingScale").addClass('hidden');
            $(".form_builder_block .scale_color_section").addClass('hidden');
            $(".form_builder_block .display_inline_inputs").addClass("hidden");
            $(".form_builder_block .validatior_code_text").addClass("hidden");
        } else if (value == '1' || value == '6') {
            //show
            $(".form_builder_block .textRatingScale").removeClass('hidden');
            $(".form_builder_block .scale_color_section").removeClass('hidden');

            //Hide
            $(".form_builder_block .display_inline_inputs").addClass('hidden');
            $('#form-builder-block .number_of_columns_checkbox').addClass('hidden');
            $(".form_builder_block .validatior_code_text").addClass("hidden");

        } else if (value == '2') {
            //show
            $(".form_builder_block .textRatingScale").removeClass('hidden');
            $(".form_builder_block .scale_color_section").removeClass('hidden');

            //Hide
            $(".form_builder_block .display_inline_inputs").addClass('hidden');
            $('#form-builder-block .number_of_columns_checkbox').addClass('hidden');
            $(".form_builder_block .validatior_code_text").addClass("hidden");
        }else if (value == '3') {
            //show
            $(".form_builder_block .display_inline_inputs").removeClass('hidden');
            $('#form-builder-block .sf-listview-default-value').removeClass('hidden');
            $('#form-builder-block .number_of_columns_checkbox').removeClass('hidden');

            //hide
            $(".form_builder_block .scale_color_section").addClass('hidden');
            $(".form_builder_block .validatior_code_text").addClass("hidden");
        } else if (value == '4') {
            // show
            $('#form-builder-block .sf-listview-default-value').removeClass('hidden');
            $(".form_builder_block .validatior_code_text").removeClass("hidden");

            // Hide
            $('#form-builder-block .number_of_columns_checkbox').addClass('hidden');
            $(".form_builder_block .textRatingScale").addClass('hidden');
            $(".form_builder_block .scale_color_section").addClass('hidden');
            $(".form_builder_block .display_inline_inputs").addClass("hidden");
        }
        ShowHideForPaginationFeature();
    });

    $(document).on('change', '.form_builder_block input[name="redirect_to_previous_page"]', function () {
        if ($(this).prop('checked')) {
            $('.form_builder_block input[name="url_redirect_to"]').val('');
            $('.form_builder_block input[name="url_redirect_to"]').attr('disabled','disabled');
        }
        else {
            $('.form_builder_block input[name="url_redirect_to"]').removeAttr('disabled');
        }
    });

    $(document).on('change', '.form_builder_block select[name="display_as"]', function () {
        var value = $(this).val();
        if (value == '2' || value == '3' || value == '4') {
            $(".form_builder_block .textRatingScale").removeClass('hidden');
            $(".form_builder_block .scale_color_section").removeClass('hidden');

        } else {
            $(".form_builder_block .textRatingScale").addClass('hidden');
            $(".form_builder_block .scale_color_section").addClass('hidden');
            $(".form_builder_block .validatior_code_text").addClass("hidden");

            $("#form-builder-block form ul.tabs li a").each(function () {
                var langId = $(this).data('language-id');
                var topminimum = 'top_minimum_label-' + langId;
                var topmaximum = 'top_maximum_label-' + langId;

                $("#form-builder-block form input[name='" + topminimum + "']").val('');
                $("#form-builder-block form input[name='" + topmaximum + "']").val('');

            });
        }
        if (value == 0) {
            $(".form_builder_block .build-field-settings .show_format").removeClass('hidden');
            $(".form_builder_block .build-field-settings .step_value").addClass('hidden');
        } else {
            $(".form_builder_block .build-field-settings .show_format").addClass('hidden');
            $(".form_builder_block .build-field-settings .step_value").removeClass('hidden');

        }
    });

    $(document).on('change', '.form_builder_block input[name="show_format"]', function () {
        if ($(this).prop('checked')) {
            $('.form_builder_block .decimal_mark').addClass("hidden");
        }else{
            $('.form_builder_block .decimal_mark').removeClass("hidden");
        }
    });

    
    $(document).on('change', '.form_builder_block input[name="auto_suggest"]', function () {
        ShowHideForPaginationFeature();
    })

    $(document).on('click', 'a.remove-condition', function () {
        let th = $(this);

        Swal.fire({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_condition,
            icon: "warning",
            showCancelButton: true,
            confirmButtonColor: "#ff0000",
            confirmButtonText: window.translation.yes_delete_it,
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false

        }).then(function (result) {
            if (result.isConfirmed) {
                let condition = th.closest('.condition');
                condition.remove();
                Swal.close();

            }
        });

    });
}


function OpenFormBuilder() {
    //Method to implement logic to show form builder fields
    FormBuilderVisibilityFields();
    BackActionFormBuilder();
    EventDisplaySalesforceMappingSection();
    EventShowTimeFormatField();
    EventDisplayRedirectTo();
    EventShowDateValidations();
    AsignValueCalculateItems();
    EventAutoSelectRequiredLogin();
    ShowTimeFormatField();
    //ShowDateValidations();
    SetActiveField();
    AddOptionToDropdownOrMultiselect();
   // DeleteOptionDropdownOrMultiselect();
    EventsDetectValidateField();
    EventOpenFormInModal();
    SaveAndEditFieldType();
    EventsAddTimeToPreview();
    EventsValidateRequiredField();
    EventsValidateIfHideLabel();
    LoadSalesForceFields();
    SetSalesforceFieldObject();
    DetectFormChange();
    DeleteFieldtype();
    DisplayLogicConfig();
    RedirectLogicConfig();
    AddDisplayCondition();
    SaveOrEditFormBuilder();
    DisplayFieldChange();
    SaveDisplayLogic();
    SelectClearExtensions();
    EventsResetModal();
    //EventsPopulateFieldsFormBuilder();
    ShowSfListviewObjects();
    ShowSfFieldPullValues();
    ShowDisplayAsCheckBoxesValues();
    ShowDisplayAsRadioButtonsValues();
    ShowSalesforceFilesValues();
    ShowMultipleFilesActions();
    HandleEventRemoveFiles();
    AllowSFEncryptedFields();
    OnlySFRichTextFields();
    //EventPopulateDefaultValueFields();
    AddEventToDisplayFilename();
    AddEventToClearSelectedFile();
    EventsToManageUpdateRecordFeature();
    //PopulateFromBlockWithDataFromSF();
    SharingPortalSettings();

    validateOnlyImage();
    EventAlertHandleDateTimeAsDate();
    EventsValidateColumnsNumber();
    EventActiveBorder();
    ValidateAccessToAdvancedSettings();
    ValidateAdditionalLabelSettings();
    EventDisplayOptionsSaveDataIn();
    EventShowHideCalculatedFields();
    
    if (!is_backend_page()) return;
    $(document).on('click', 'a[data-element-reveal="form-builder-block"]', function () {
        EventCancelButtonOptions();
        var formSelector = '#form-builder-block';
        std_visibility_per_role_block(formSelector);
        remove_dependency_salesforce_fields();
        var isGlobalAdmin = $('.form_builder_block input[name="is-global-user"]').val() == 'true';
        var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
       
        $(formSelector).foundation("open");
        $(formSelector).foundation();

        $(formSelector).removeAttr('data-workflow');
        $(formSelector).removeData('workflow');

        $(formSelector).find('.not-reload-section').removeClass('hidden');
        $(formSelector).find('.open-in-modal-section').removeClass('hidden');
        $(formSelector).find('input[name="partial_reload"]').prop("checked", false);
        ShowHideListingToReload(false);
        $(formSelector).find('input[name="display_as_modal"]').prop("checked", false);
        $(formSelector).find('input[name="do_not_save_data_in_db"]').prop("checked", false);
        ShowHideButtonOpenModal(false, false);
        ShowHideButtonHiddenAutosubmit(false, false, false);
        apply_backend_multiselect_group(formSelector + ' select[name="listing-cms-related"]', false, '');

        var sourceInvoked = $(this).attr('source-invoked');

        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        //  Fix to add data-workflow attribute v3.31.3
        var dataworkflow = $(this).attr('data-modal-from');

        $(formSelector).attr('data-workflow', dataworkflow);

        //localStorage.removeItem("display-logic-rules");
        //localStorage.setItem("display-logic-rules", "");
        sessionStorage.removeItem("display-logic-rules");
        sessionStorage.setItem("display-logic-rules", "");
        initializeDescriptionField();
        var currentdate = new Date();
        var formTokenStore = currentdate.getDate() + "_" + (currentdate.getMonth() + 1) + "_" + currentdate.getFullYear() + "_" + currentdate.getHours() + "_" + currentdate.getMinutes() + "_" + currentdate.getSeconds();
        var siteInfo = $(formSelector).find('input[name="site-hocid"]').val();
        formTokenStore += siteInfo;
        formTokenStore = formTokenStore.replaceAll('_', '');
        $(formSelector).find('input[name="form-hash-token"]').val(formTokenStore);
        $(formSelector).removeClass("ars");
        var ars = false;
        var elementId = $(this).parents('.ars_block.blockContainer').data('element-id');
        
        if (elementId) {
            //Add to formBuilder current elementId to delete it when will be saved
            $(formSelector).attr('data-elementId', elementId);
        }
        else {
            $(formSelector).removeAttr('data-elementId');
        }

        if ($(this).hasClass('edit-ars-component') && !$(formSelector).hasClass('ars')) {
            $(formSelector).addClass('ars');
            ars = true;
        }
        //Method to implement logic to show form builder fields
        blockId = $(this).data("block-id");
        $(formSelector).find('input[name="block_id"]').val(blockId);

        //add autocomplete suggestions
        var autocompleteOptions = get_data_for_autocomplete_filter_field_formbuilder([], false, false, true);

        $(formSelector + ' input[name="url_required_params"]').autocomplete({
            minLength: 1,
            source: function (request, response) {
                response($.ui.autocomplete.filter(
                    autocompleteOptions, extractLast(request.term)));
            },
            focus: function () {
                var terms = split(this.value);
                terms.pop();
                terms.push(ui.item.value);
                this.value = terms.join(', ');
                return false;
            },
            select: function (event, ui) {
                var terms = split(this.value);
                terms.pop();
                terms.push(ui.item.value);
                terms.push('');
                this.value = terms.join(', ');
                return false;
            }
        });


        if (parseInt(blockId) == 0) {
            //For new
            initialize_form_builder_for_new(formTokenStore, ars, formSelector, 'cms');

            $(formSelector).find('.required-url-custom-message-section').addClass('hidden');

            if(ars){
                $(formSelector).find('.form-builder-message-for-advanced').addClass('hidden');
            }
            if (!ars) {
                $(formSelector).find('select[name="type-form-success"]').val('1');
                $(formSelector).find('.success-confirmation-text').removeClass('hidden');
                $(formSelector).find('.form-confirmation-message-section').removeClass('hidden');
                $(formSelector).find('input[name="form_builder_visible_to"][value="2"]').prop('checked', true);
                $(formSelector).find('#form_builder_exception_url_container').removeClass('is-hidden');
            }
            else
                $(formSelector).find('.form-confirmation-message-section').addClass('hidden');

        } else {
            activeLoading();
            $(formSelector).find('.required-url-custom-message-section').addClass('hidden');

            if (!ars) {
                dataworkflow = 'cms';
            }

            if(ars){
                $(formSelector).find('.form-builder-message-for-advanced').addClass('hidden');
            }
            initialize_for_edit_form(ars, formSelector, dataworkflow);

            if (!ars) {
                $(formSelector).find('.delete_block').show();
                $(formSelector).find('.required_login_row').removeClass('hidden');
                if (!$('#sharing-portal-form').is(':checked'))
                    $(formSelector).find('.enable_debug_mode').removeClass('hidden');
                else {
                    $(formSelector).find('.enable_debug_mode').addClass('hidden');
                    $(formSelector).find('.region').addClass('hidden');
                    $(formSelector).find('.kiosk-form').addClass('hidden');
                }
                    
                $(formSelector).find('.update_record_row').removeClass('hidden');
                DisplayDontPopulateAccountSetting();
                $(formSelector).find('.url_redirect_to').parent().removeClass('hidden');
                validate_include_gallery("form-builder");

                if (IS_LLAMAPI_ENABLED === true) {
                    $(formSelector).find('.update_user_information_row').removeClass('hidden');
                    $(formSelector).find('.registration_from_salesforce_row').removeClass('hidden');
                    $(formSelector).find('fieldset.form-public-site-users').removeClass('hidden');
                }
            }
            else {
                //Hide fields "required login" and "update record"
                $(formSelector).find('.required_login_row').addClass('hidden');
                $(formSelector).find('.enable_debug_mode').addClass('hidden');
                $(formSelector).find('.update_record_row').addClass('hidden');
                DisplayDontPopulateAccountSetting();
                $(formSelector).find('.url_redirect_to').parent().addClass('hidden');
                $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
                $(formSelector).find('.sharing-portal-form').parent().addClass('hidden');
                $(formSelector).find('.save_complete_later').addClass('hidden');
                $(formSelector).find('.sharing-portal-form').parent().addClass('hidden');
                validate_include_gallery("form-builder");

                if (IS_LLAMAPI_ENABLED === true) {
                    $(formSelector).find('.update_user_information_row').addClass('hidden');
                    $(formSelector).find('fieldset.registration_from_salesforce_row').addClass('hidden');
                    $(formSelector).find('fieldset.form-public-site-users').addClass('hidden');
                }
            }
            $(formSelector).find('.settings-builder-form-clone').show();
            //Call method to load local storage.
            $.ajax({
                method: "POST",
                url: urlSite + "Admin/GetLocalFormBuilderStorage",
                data: { blockId: blockId },
                beforeSend: function () {
                    activeLoading();
                }
            }).done(async function (data) {
                var jsonResult = JSON.parse(data);
                var isArs = (jsonResult['is_ars'] === 'YES') ? true : false;
                //LoadFormDataUsingOldLogic(formSelector, jsonResult, false, sourceInvoked);
                
                
                var modalFrom = $(formSelector).attr('data-workflow');

                var workflowName = '';
                var hideProcessingScreen = true;

                setDataToSessionStore("", formTokenStore);
                //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, "");
                $('.form_builder_block > h3.title').text(window.translation.edit + " " + window.translation.form);

                // Loading data of form
                $(formSelector).find('span.code-form').text("form-custom-" + jsonResult.form_id);
                $(formSelector).find('input[name="form-id"]').val(jsonResult.form_id);
                $(formSelector).find('select[name="form_build_region"]').val(jsonResult.region);
                $(formSelector).find('input[name="form_builder_blocsortk_id"]').val(jsonResult.blockId);
                $(formSelector).find('input[name="form_builder_form_name"]').val(jsonResult.formName);
                $(formSelector).find('input[name="showTitle"]').prop("checked", jsonResult.show_title);
                $(formSelector).find('input[name="enabled"]').prop("checked", jsonResult.enable);
                $(formSelector).find('#form_builder_visibility_' + jsonResult.visible_to).prop("checked", true);
                $(formSelector).find('input[name="have_redirect_to"]').prop("checked", jsonResult.have_redirect_to);

                $(formSelector).find('select[name="save_data_on"]').val(jsonResult.save_data_on);
                if($(formSelector).find('input[type="hidden"][name="save_data_on"]').length > 0){
                    $(formSelector).find('input[type="hidden"][name="save_data_on"]').val(jsonResult.save_data_on);
                }
                if (jsonResult.add_more_records === true) {
                    $(formSelector).find('input[name="enable_add_records_button"]').prop("value", jsonResult.add_more_records);
                }

                $(formSelector).find('input[name="partial_reload"]').prop("checked", jsonResult.partial_reload);
                ShowHideListingToReload(jsonResult.partial_reload);

                $(formSelector).find('input[name="display_as_modal"]').prop("checked", jsonResult.open_in_modal);
                $(formSelector).find('input[name="autosubmit_and_hidden"]').prop("checked", jsonResult.autosubmit_and_hidden); 
                $(formSelector).find('input[name="do_not_save_data_in_db"]').prop("checked", jsonResult.do_not_save_data_in_db);
                if($(formSelector).find('input[type="hidden"][name="do_not_save_data_in_db"]').length > 0){
                    $(formSelector).find('input[name="do_not_save_data_in_db"]').val(jsonResult.do_not_save_data_in_db);
                }
                ShowHideButtonOpenModal(jsonResult.open_in_modal, jsonResult.hide_modal_button, jsonResult.autosubmit_and_hidden);
                ShowHideButtonHiddenAutosubmit(jsonResult.autosubmit_and_hidden, jsonResult.hide_modal_button, jsonResult.open_in_modal);
                var width_modal = (jsonResult.width_modal > 0)?jsonResult.width_modal:'';
                $(formSelector).find('input[name="width_modal"]').val(width_modal);
                var listing_to_reload = jsonResult.listing_to_reload ? jsonResult.listing_to_reload.split(',') : [];                
                apply_backend_multiselect_group(formSelector + ' select[name="listing-cms-related"]', false, listing_to_reload);

                $(formSelector).find('input[name="form_builder_allow_submitted_data"]').prop("checked", jsonResult.allow_submitted_data);
                $(formSelector).find('input[name="form_builder_enable_print_button_on_form"]').prop("checked", jsonResult.enable_print_button_on_form);
                $(formSelector).find('input[name="disable_confirm_modal_after_submit"]').prop("checked", jsonResult.disable_confirm_modal);
                $(formSelector).find('input[name="enable_debug_mode"]').prop("checked", jsonResult.enable_debug_mode);
                $(formSelector).find('input[name="include_related_objects"]').prop("checked", jsonResult.include_related_objects);
                if (jsonResult.include_related_objects) {
                    $('.redirect-section-section').find('.related-field-section-help').show();
                }
                else {
                    $('.redirect-section-section').find('.related-field-section-help').hide();
                }

                if (isArs) {
                    $(formSelector).find('.enable_debug_mode').addClass('hidden');
                }

                if (jsonResult.have_redirect_to === true) {
                    $(formSelector).find('.disable_modal_confirm').addClass('hidden');
                } else if (isArs === false) {
                    $(formSelector).find('.disable_modal_confirm').removeClass('hidden');
                } else if (isArs === true) {
                    $(formSelector).find('.disable_modal_confirm').addClass('hidden');
                }

                $(formSelector).find('input[name="redirect_to_previous_page"]').prop("checked", jsonResult.redirect_to_previous_page);
                if (jsonResult.redirect_to_previous_page) {
                    $(formSelector).find('input[name="url_redirect_to"]').val('');
                    $(formSelector).find('input[name="url_redirect_to"]').attr('disabled', 'disabled');
                }
                else {
                    $(formSelector).find('input[name="url_redirect_to"]').removeAttr('disabled');
                }
                $(formSelector).find('input[name="url_redirect_to"]').val(jsonResult.url_redirect_to);
                $(formSelector).find('input[name="required_login"]').prop("checked", jsonResult.required_login);
                $(formSelector).find('input[name="populate_from_salesforce"]').prop("checked", jsonResult.populate_from_salesforce);
                if (jsonResult.populate_from_salesforce) {
                    $('#form-builder-block').find('.update_record_row').show();
                }
                else {
                    $('#form-builder-block').find('.update_record_row').hide();
                }
                
                $(formSelector).find('input[name="css_class"]').val(jsonResult.css_class);
                if (jsonResult.subsite_id !== '0' && jsonResult.subsite_id !== 0) {
                    if ($(formSelector).find('select[name="subsite_id"]').length > 0) {
                        $(formSelector).find('select[name="subsite_id"]').val(jsonResult.subsite_id);
                    } else {
                        $(formSelector).find('input[name="subsite_id"]').val(jsonResult.subsite_id);
                    }
                }

                if (jsonResult.populate_from_salesforce === true) {
                    $(formSelector).find('.dependency-from-salesforce').show();
                } else {
                    $(formSelector).find('.dependency-from-salesforce').hide();
                }
                $(formSelector).find('input[name="registration_from_salesforce"]').prop("checked", jsonResult.is_external_registration);
                $(formSelector).find('input[name="update_user_information"]').prop("checked", jsonResult.is_update_user_information);
                $(formSelector).find('select[name="registration_profile"]').val(jsonResult.profile_selected);
                $(formSelector).find('input[name="url_required_params"]').val(jsonResult.url_required_params);
                if (jsonResult.url_required_params !== null && jsonResult.url_required_params !== undefined && jsonResult.url_required_params.length > 0) {
                    $(formSelector).find('.required-url-custom-message-section').removeClass('hidden');
                } else {
                    $(formSelector).find('.required-url-custom-message-section').addClass('hidden');
                }
                $(formSelector).find('input[name="custom_parameter_name"]').val(jsonResult.custom_parameter_name);

                if (jsonResult.custom_message !== null && jsonResult.custom_message !== '') {
                    var customMessages = JSON.parse(jsonResult.custom_message);
                    if (customMessages) {
                        customMessages.forEach(function (item) {
                            $(formSelector).find('textarea[name="' + item.name + '"]').val(item.value);
                            if (CKEDITOR.instances[item.name]) {
                                setTimeout(function () { CKEDITOR.instances[item.name].setData(item.value); }, 1200);

                            }
                        });
                    }
                }

                if (jsonResult.authorization_settings) {
                    loadAuthorizedForBlock('#form-builder-block', JSON.parse(jsonResult.authorization_settings));
                }

                if (isArs === false) {
                    $(formSelector).find('.form-confirmation-message-section').removeClass('hidden');
                    
                    $(formSelector).find('select[name="type-form-success"]').val(jsonResult.type_success_confirmation);

                    if (jsonResult.type_success_confirmation === '0' || jsonResult.type_success_confirmation === 0) {
                        $(formSelector).find('.success-confirmation-text').addClass('hidden');
                    } else {
                        $(formSelector).find('.success-confirmation-text').removeClass('hidden');
                    }

                    if (jsonResult.type_success_confirmation === '3' || jsonResult.type_success_confirmation === 3) {
                        $(formSelector).find('.redirect-section-section').addClass('hidden');
                    } else {
                        $(formSelector).find('.redirect-section-section').removeClass('hidden');
                    }


                    if (jsonResult.type_success_confirmation !== '0' || jsonResult.type_success_confirmation !== 0) {
                        if (jsonResult.confirmation_message !== null && jsonResult.confirmation_message !== '') {
                            var customMessages = JSON.parse(jsonResult.confirmation_message);
                            if (customMessages) {
                                customMessages.forEach(function (item) {
                                    $(formSelector).find('textarea[name="' + item.name + '"]').val(item.value);
                                    if (CKEDITOR.instances[item.name]) {
                                        setTimeout(function () { CKEDITOR.instances[item.name].setData(item.value); }, 1200);

                                    }
                                });
                            }
                        }
                    }


                }
                else {
                    $(formSelector).find('.form-confirmation-message-section').addClass('hidden');
                    $(formSelector).find('.not-reload-section').addClass('hidden');
                    $(formSelector).find('.open-in-modal-section').addClass('hidden');
                }

                if (jsonResult.open_in_modal || jsonResult.autosubmit_and_hidden) {
                    if (jsonResult.button_text_modal !== null && jsonResult.button_text_modal !== '') {
                        var customButtonText = JSON.parse(jsonResult.button_text_modal);
                        if (customButtonText) {
                            customButtonText.forEach(function (item) {
                                $(formSelector).find('input[name="' + item.name + '"]').val(item.value);
                            });
                        }
                    }
                }
               

                if (jsonResult.is_external_registration == true) {
                    $(formSelector).find('.subsite-settings').addClass('hidden');

                    $(formSelector).find('.registration_form_profile').removeClass('hidden');
                    $(formSelector).find('select[name="salesforce_object"]').attr('disabled', 'disabled');
                    $(formSelector).find('.update_user_information_row').addClass('hidden');
                    $(formSelector).find('input[name="update_user_information"]').prop("checked", false);
                    $('#form-builder-block fieldset.form-public-site-users').removeClass('hidden');
                    $('#form-builder-block a.link-refresh-sobjects-llamapi').addClass('hidden');
                    $('#form-builder-block fieldset.form-public-site-users').addClass('expanded');
                } else {
                    $(formSelector).find('.registration_form_profile').addClass('hidden');
                    $(formSelector).find('select[name="salesforce_object"]').removeAttr('disabled');
                    $('#form-builder-block fieldset.form-public-site-users').removeClass('expanded');

                    if (jsonResult.is_update_user_information == true) {
                        $(formSelector).find('.registration_from_salesforce_row').addClass('hidden');
                        $(formSelector).find('select[name="salesforce_object"]').attr('disabled', 'disabled');
                        $('#form-builder-block fieldset.form-public-site-users').removeClass('hidden');
                        $('#form-builder-block a.link-refresh-sobjects-llamapi').addClass('hidden');
                    }
                    
                }
                $(formSelector).find('input[name="save_complete_later"]').prop("checked", jsonResult.save_complete_later);
                $(formSelector).find('input[name="kiosk_form"]').prop("checked", jsonResult.kiosk_form);

                var isKioskForm = jsonResult.kiosk_form;
                //Titles info
                if(jsonResult.titlesInfo) {
                    jsonResult.titlesInfo.forEach(function(titleInfo) {
                        $(formSelector).find('input[name="title-'+ titleInfo.languageID +'"]').val(titleInfo.title);
                    });
                }

                //Message in field update record
                if ((jsonResult.salesforce_object === 'Contact' && jsonResult.update_record) || !jsonResult.update_record) {
                    $(formSelector).find('.message_sid_querystring').addClass('hidden');
                    if (jsonResult.salesforce_object === 'Contact' && jsonResult.populate_from_salesforce) {
                        $(formSelector).find('.enforce_session_section').removeClass('hidden');
                    }
                }
                else if (jsonResult.salesforce_object && jsonResult.update_record) {
                    $(formSelector).find('.message_sid_querystring').removeClass('hidden');
                    DisplayDontPopulateAccountSetting();
                }

                $(formSelector).find('input[name="form_builder_enable_multilanguage"]').prop('checked', false);


                if (jsonResult.salesforce_object) {
                    //Field update record
                    $(formSelector).find('.update_record_row').removeClass('hidden');
                    if (!ars) {
                        $(formSelector).find('.populate_from_salesforce_row').removeClass('hidden');
                        if (jsonResult.sp_form_type != 0) {
                            $(formSelector).find('.enable_debug_mode').addClass('hidden');
                        }
                        else {
                            $(formSelector).find('.enable_debug_mode').removeClass('hidden');                            
                        }

                    }
                    //Populate update record field
                    $(formSelector).find('input[name="update_record"]').prop("checked", jsonResult.update_record);
                    DisplayDontPopulateAccountSetting();
                    VerifyAdditionalLabelSettingAfterLoad(jsonResult.salesforce_object);
                    if (jsonResult.form_builder_enable_multilanguage === true) {
                        $(formSelector).find('input[name="form_builder_enable_multilanguage"]').prop('checked', true);
                    }

                    await LoadPicklistValues(jsonResult.salesforce_object, blockId);

                }
                else {
                    //Field update record
                    $(formSelector).find('.update_record_row').addClass('hidden');
                    $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
                }

                // Show populate from salesforce field 
                if (jsonResult.update_record && jsonResult.is_compliance == 0) {
                    $(formSelector).find('.populate_from_salesforce_row').removeClass('hidden');
                } 

                //Field redirect to
                if (jsonResult.have_redirect_to) {
                    $(formSelector).find('.url_redirect_to').removeClass('hidden');
                }
                // show save and complete later if required_login is true
                if (jsonResult.required_login && jsonResult.update_record == false) {
                    $(formSelector).find('.save_complete_later').removeClass('hidden');
                    $(formSelector).find('.allow_submitted_data').removeClass('hidden');
                } else {
                    $(formSelector).find('.save_complete_later').addClass('hidden');
                    $(formSelector).find('.allow_submitted_data').addClass('hidden');
                }

                $(formSelector).find('input[name="dont_populate_direct_account"]').prop('checked', jsonResult.dont_populate_account == true);


                //Compliance
                var isCompliance = (jsonResult.is_compliance == 0) ? false : true;
                $(formSelector).find('input[name="isCompliance"]').val(isCompliance);

                //Visible To
                if (jsonResult.visible_to == 1 || jsonResult.visible_to == 2) {
                    $(formSelector).find('#form_builder_exception_url_container').removeClass('is-hidden');
                }
                $(formSelector).find('textarea[name="form_builder_visibility_urls"]').text(jsonResult.visibility_urls);

                //Fields
                setDataToSessionStore(jsonResult.fields, formTokenStore);
                //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(jsonResult.fields));
                if (jsonResult.save_data_salesforce == true) {
                    workflowName = $('#vol-workflow-form input[name="workflow-label"]').val();
                    var isPartnerRegistration = modalFrom === 'create-page-partner';
                    $(formSelector).find('input[name="save_data_salesforce"]').prop("checked", true);
                    await LoadSalesForceObjects(jsonResult.salesforce_object, true, isPartnerRegistration, false, isKioskForm);
                    await AjaxPreLoadSalesForceFields(jsonResult.salesforce_object);
                    await AjaxLoadSalesForceFieldsAll(false, jsonResult.salesforce_object);
                    hideProcessingScreen = false;
                    $(formSelector).find('.salesforce-mapping-section').removeClass("hidden");
                    $('#form-builder-block .field_to_mention_section').removeClass("hidden");
                    $(formSelector).find('.salesforce-mapping-section-notrf').removeClass("hidden");
                    $(formSelector).find('.pc_sync_with_salesforce').removeClass('hidden');

                    if (isArs) {
                        workflowName = $('#vol-workflow-form').attr('data-from');
                        if (modalFrom === 'create-page-vol' || modalFrom === 'create-page-log-in') {
                            $(formSelector).find('.salesforce_object_msg').removeClass('hidden');
                            $(formSelector).find('.salesforce_object').addClass('hidden');
                        }
                        else {
                            $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                            $(formSelector).find('.salesforce_object').removeClass('hidden');
                        }
                        if (isCompliance) {
                            // Display select if is compliance form
                            $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                            $(formSelector).find('.salesforce_object').removeClass('hidden');
                        }



                        var isComplianceFormSettings = $('.form_builder_block input#isCompliance').val();
                        if (isComplianceFormSettings === "true") {
                            //Display require and update row
                            $(formSelector).find('.required_login_row').removeClass('hidden');
                            $(formSelector).find('.update_record_row').removeClass('hidden');

                        }

                        $(formSelector).find("fieldset.form-public-site-users").hide();
                    }

                    //Block outside of ARS
                    if(!isArs) {
                        $(formSelector).find('.salesforce_object').removeClass("hidden");
                        $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                    }

                    if (isKioskForm) {
                        $(formSelector).find('.subsite-settings').addClass('hidden');
                        $(formSelector).find('.sharing-portal-form').addClass('hidden');
                        $(formSelector).find('.redirection-section').addClass('hidden');
                        $(formSelector).find('.required_login_row').addClass('hidden');
                        $(formSelector).find('.update_record_row').addClass('hidden');
                        $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
                        $(formSelector).find('.save_complete_later').addClass('hidden');
                        $(formSelector).find('.allow_submitted_data').addClass('hidden');

                    }
                }
                else {
                    $(formSelector).find('.salesforce-mapping-section').addClass("hidden");
                    $('#form-builder-block .field_to_mention_section').addClass("hidden");
                    $(formSelector).find('.salesforce-mapping-section-notrf').addClass("hidden");
                    $(formSelector).find('input[name="save_data_salesforce"]').prop("checked", false);
                    $(formSelector).find('.salesforce_object').addClass('hidden');
                    $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                    $(formSelector).find('.pc_sync_with_salesforce').addClass('hidden');
                    if (isKioskForm) {
                        $(formSelector).find('.subsite-settings').addClass('hidden');
                    }
                }
                
                //  If is a SP form
                if (jsonResult.sp_form_type !== 0) {
                    //  Hide unused fields
                    $(formSelector).find('.subsite-settings').addClass('hidden');
                    $(formSelector).find('.enable_debug_mode').addClass('hidden');
                    $(formSelector).find('form#form-builder .sharing-portal-form-object').removeClass('hidden'); //  show objects drowdown
                    $(formSelector).find('form#form-builder .region').addClass('hidden');  //  hide regions section
                    $(formSelector).find('.kiosk-form').addClass('hidden');
                    $(formSelector).find('form#form-builder .save_data_salesforce').addClass('hidden');   //  hide save_data_salesforce section
                    $(formSelector).find('form#form-builder .salesforce_object').addClass('hidden');
                    $(formSelector).find('form#form-builder .url_redirect_to').parent().addClass('hidden');   //  hide url_redirect_to
                    $(formSelector).find('.required_login_row').addClass('hidden');
                    $(formSelector).find('.update_record_row').addClass('hidden');
                    $(formSelector).find('form#form-builder .populate_from_salesforce_row').addClass('hidden'); //  hide populate_from_salesforce_row
                    $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').addClass('hidden');    //  hide order section
                    $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').next().addClass('hidden');    //  hide order section
                    $(formSelector).find('#form_builder_exception_url_container').prev().addClass('hidden');   //  hide visible to section
                    $(formSelector).find('#form_builder_exception_url_container').addClass('hidden');   //  hide visible to section

                    $(formSelector).find('input[name="sharing_portal_form"]').prop("checked", true);
                    $(formSelector).find('form#form-builder input[name="save_data_salesforce"]').prop('checked', true);
                    $(formSelector).find('form#form-builder input[name="required_login"]').prop('checked', true);
                    $(formSelector).find('form#form-builder input[name="update_record"]').prop('checked', true);
                    $(formSelector).find('form#form-builder input[name="populate_from_salesforce"]').prop('checked', true);
                    $('#form-builder-block').find('.update_record_row').show();
                    $(formSelector).find('form#form-builder .retrieve_info_from_salesforce').removeClass("hidden");
                    $(formSelector).find('select[name="sharing_portal_form_object_select"]').val(jsonResult.sp_form_type);
                    $(formSelector).find('.region').addClass('hidden');
                    if (jsonResult.sp_form_type === 1) {
                        await LoadSalesForceObjects('Contact', true);
                        $(formSelector).find('form#form-builder select[name="salesforce_object"]').val('Contact');
                    } else if (jsonResult.sp_form_type === 2) {
                        await LoadSalesForceObjects(instancePrefix + 'Volunteer_Opportunity__c', true);
                        $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Volunteer_Opportunity__c');
                    } else if (jsonResult.sp_form_type === 3) {
                        await LoadSalesForceObjects(instancePrefix + 'Connection__c', true);
                        $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Connection__c');
                    } else if (jsonResult.sp_form_type === 4) {
                        await LoadSalesForceObjects(instancePrefix + 'Occurrence__c', true);
                        $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Occurrence__c');
                    } else if (jsonResult.sp_form_type === 5) {
                        await LoadSalesForceObjects(instancePrefix + 'Recurrence__c', true);
                        $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Recurrence__c');
                    } else if (jsonResult.sp_form_type === 6) {
                        await LoadSalesForceObjects(instancePrefix + 'Volunteer_Team__c', true);
                        $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Volunteer_Team__c');
                    }
                    await AjaxLoadSalesForceFields('0', false);
                } else {
                    $(formSelector).find('form#form-builder .sharing-portal-form-object').addClass('hidden');
                    $(formSelector).find('form#form-builder .save_data_salesforce').removeClass('hidden');
                    $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').removeClass('hidden');    //  hide order section
                    $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').next().removeClass('hidden');    //  hide order section
                    $(formSelector).find('#form_builder_exception_url_container').prev().removeClass('hidden');
                    
                }

                //ARS Validations
                if(isArs) {
                    $(formSelector).find('a.remove-link').hide();
                    $(formSelector).find('a.advanced-link').hide();
                    $(formSelector).find('.update_record_row').addClass('hidden');
                    if (modalFrom === "create-page-log-in") {
                        $(formSelector).find('.update_record_row').removeClass('hidden');
                        $(formSelector).find('.required_login_row').removeClass('hidden');
                    }
                }
                else {
                    $(formSelector).find('a.remove-link').show();
                    $(formSelector).find('a.advanced-link').css('display', 'inline-block');


                    if (jsonResult.populate_from_salesforce === true && jsonResult.enforce_session_settings) {
                        var customFilters = JSON.parse(jsonResult.enforce_session_settings);

                        $(formSelector).find('.filter_rules .rule').remove();
                        if (customFilters.criteria != null) {
                            //$(formSelector).find('input[name="advanced-criteria-input"]').val(customFilters.criteria);
                        }
                        else {
                            $(formSelector).find('input[name="advanced-criteria-input"]').val('');
                        }
                        if (customFilters.filters && customFilters.filters.length > 0) {
                            $(formSelector).find('.without_rules').addClass('hide-custom');
                            customFilters.filters.forEach(function (item) {
                                addRuleFilterFormBuilder(item.field, item.friendlyFieldName, item.comparisonValue, item.operator);
                            });
                        }
                        $('.form_builder_block select[name="field_to_filter"]').trigger('change');
                    } else {
                        $(formSelector).find('.filter_rules .rule').remove();
                        $(formSelector).find('.without_rules').removeClass('hide-custom');
                        $(formSelector).find('input[name="advanced-criteria-input"]').val('');
                    }

                }

                $(formSelector).find('.form-preview .row-fields .field-row').remove();
                loadFieldsFromLocalStorage(blockId);
                $(formSelector).find('.field-list').removeClass('hidden');
                $(formSelector).find('.form-preview').removeClass('full-width');
                $(formSelector).find('.build-field-settings').removeClass('is-hidden');
                $(formSelector).find(".submit-row").trigger("click");

                //Manage multiregions
                if(jsonResult.regionsMultiple) {
                    //Apply multiselect widget to region select
                    apply_backend_multiselect_group(formSelector + ' select[name="form_build_region_multiple"]', false, jsonResult.regionsMultiple);
                }

                if (jsonResult.is_external_registration == true) {
                    //add the class for the case of username
                }

                if (jsonResult.redirectRules) {
                    
                    $("#form-builder-block").find('.custom-redirection-rules-actions .row').remove();

                    var fieldIdFirst = 0;
                    var valueFirst = '';
                    var conditionFirst = '';
                    
                    var splitChar = '';
                    jsonResult.redirectRules.forEach(function (item) {
                        var flagCondition = false;
                        var flagLabel = false;
                        var conditions = item.Conditions;
                        splitChar = conditions.indexOf("&&") != -1 ? "&&" : "||";
                        var cond = conditions.split(splitChar);
                        var conditionList =[];
                        cond.forEach(function (entry) {
                            var conditionDetail = {};
                            var split = entry.indexOf("==") != -1 ? "==" :
                                (entry.indexOf("!=") != -1 ? "!=" :
                                    (entry.indexOf("like") != -1 ? "like" :
                                        (entry.indexOf("_not_contain_") != -1 ? "_not_contain_" :
                                            (entry.indexOf("_contain_") != -1 ? "_contain_" :
                                                (entry.indexOf(">=") != -1 ? ">=" :
                                                    (entry.indexOf(">") != -1 ? ">" :
                                                        (entry.indexOf("<=") != -1 ? "<=" :
                                                            (entry.indexOf("_not_equal_empty_") != -1 ? "_not_equal_empty_" :
                                                                (entry.indexOf("_equal_empty_") != -1 ? "_equal_empty_" :
                                                                    "<")))))))));


                            var condition = entry.replaceAll(split, "*");
                            if (!flagCondition) {
                                fieldIdFirst = condition.split('*')[0];
                                valueFirst = condition.split('*')[1];
                                conditionFirst = split;
                                flagCondition = true;
                            }
                            conditionDetail.field = condition.split('*')[0];
                            conditionDetail.data = condition.split('*')[1];
                            conditionDetail.op = split;
                            conditionList.push(conditionDetail);
                        });
                        var labelForFirstVal = '';
                        var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);
                        
                        if (varJson != null && varJson != '') {
                            var fields = JSON.parse(varJson);
                            fields.forEach(function (itemField) {
                                    if (itemField.fieldId == fieldIdFirst) {
                                        
                                        var _label = 'label-' + window.translation.language;
                                        itemField.properties.forEach(function (property) {
                                            
                                            if (property.name == _label &&
                                                itemField.delete == false &&
                                                (itemField.typeField == 'dropdown' ||
                                                    itemField.typeField == 'radio' ||
                                                    itemField.typeField == 'checkbox' ||
                                                    itemField.typeField == 'number' ||
                                                    itemField.typeField == 'multiselect')) {
                                                if (!flagLabel) {
                                                    labelForFirstVal = property.value;
                                                    flagLabel = true;
                                                }
                                            }
                                        });
                                    }
                            });
                        }
                        var jsonInfo = JSON.stringify(conditionList).replaceAll('"', '~');
                        var conditionText = '';
                        switch (conditionFirst) {
                            case '==':
                                conditionText = window.translation.equals_to;
                                break;
                            case '!=':
                                conditionText = window.translation.not_equals_to;
                                break;
                            case '>':
                                conditionText = window.translation.more_than;
                                break;
                            case '>=':
                                conditionText = window.translation.greater_than_or_equal_to;
                                break;
                            case '<':
                                conditionText = window.translation.less_than;
                                break;
                            case '<=':
                                conditionText = window.translation.less_than_or_equal_to;
                                break;
                            case '_equal_empty_':
                                conditionText = window.translation.is_equal_to_empty;
                                break;
                            case '_not_equal_empty_':
                                conditionText = window.translation.is_equal_not_empty;
                                break;
                        }
                        $("#form-builder-block").find('.custom-redirection-rules-actions').append(load_redirection_rule(item.ID, labelForFirstVal, item.RedirectionURL, valueFirst, conditionText, jsonInfo, splitChar, conditionList && conditionList.length>1, 1));
                    });
                }

                if(jsonResult.required_login == true){
                    $(formSelector).find('.allow_submitted_data').removeClass('hidden');
                }
                //Hide processing screen
                //if (hideProcessingScreen) {
                    finishLoading();
                //}

                if (sourceInvoked != null && sourceInvoked != undefined && sourceInvoked == 'gallery') {
                    $(formSelector + " .settings-builder-form-clone").hide();
                    $(formSelector + " .region").addClass('hidden');
                } else {
                    $(formSelector + " .settings-builder-form-clone").show();
                    if (!isArs && $('body.new-template-system').length > 0 && !$(formSelector).find('#sharing-portal-form').is(':checked')) {
                        $(formSelector + " .region").removeClass('hidden');
                    }
                }

                if (jsonResult.customSessionVar !== null && jsonResult.customSessionVar !== undefined) {
                    var customSessionVar = JSON.parse(jsonResult.customSessionVar);
                    validate_default_value_text(formSelector, customSessionVar);
                }
                
                //ValidateAdditionalLabelSettings();
                //end of block
            });

            //until here donde body
        }


        if (ars === false) {
            $(formSelector).find('select[name="type-form-success"]').on('change', function () {
                var value = $(this).val();
                if (value !== '3' && value !== 3) {
                    $(formSelector).find('.redirect-section-section').removeClass('hidden');
                    
                } else {
                    $(formSelector).find('.redirect-section-section').addClass('hidden');
                    
                }

                if ((value === '0' || value === 0)) {
                    $(formSelector).find('.success-confirmation-text').addClass('hidden');
                } else {
                    $(formSelector).find('.success-confirmation-text').removeClass('hidden');
                }
            });

            initializeConfirmationMessageField();

            $(formSelector).find('input[name="url_required_params"]').keyup(function (event) {
                var value = $(formSelector).find('input[name="url_required_params"]').val();
                if (value.length > 0) {
                    $(formSelector).find('.required-url-custom-message-section').removeClass('hidden');
                } else {
                    $(formSelector).find('.required-url-custom-message-section').addClass('hidden');
                }
            });
        }
        initiate_dragula_form_builder();
        initiate_dragula_drop_down_options();
        initiate_jquery_validate_reveal($('#form-builder'), 'form-builder');

        //Hide current label errors
        $(formSelector).find('#form-builder label.error').hide();

        add_events_form_builder();
        
        return false;
    });
}



function recalculateHiddenNames() {
    var indexHidden = 1;
    $('.field-row[data-type-field="hidden"]:not(.hidden)').each(
        function () {
            var nameInfo = 'Hidden #' + indexHidden;
            $(this).attr('data-hidden-name', nameInfo);
            if ($(this).find('.content .left label.label_preview_hidden').length >0)
                $(this).find('.content .left label.label_preview_hidden').remove();
            if ($(this).find('.content .left label.label_preview').length > 0)
                $(this).find('.content .left label.label_preview').remove();
            $(this).find('.content .left').append('<label class="label_preview_hidden">' + nameInfo + '</label>')
            indexHidden++;
        }
    );

    if ($('.field-row.active').length > 0 && $('.field-row.active').data('type-field') == 'hidden') {
        $('.field-configuration h3.title').text($('.field-row.active').data('hidden-name'));
    }
}

function recalculatecopytolabel() {
    $(".field-row[data-copy-to-hidden]").each(function() {
        var value = $(this).attr("data-copy-to-hidden");
        var hiddenElement = $(".field-row[data-element-field-id='" + value + "']").attr("data-hidden-name");
        $(this).find('span.copy-to-hidden-element').remove();
        $(this).append('<span class="copy-to-hidden-element">Copy to:'+hiddenElement+'</span>');
    });
}
function loadHiddenFiledsToCopy() {
    if ($('.form_builder_block select[name="copy_to_hidden"]').length > 0) {
        var options = HiddenFieldsOptions();
        if (options != '') {
            $('.form_builder_block select[name="copy_to_hidden"] option').each(function () {
                $(this).remove();
            });
            $('.form_builder_block select[name="copy_to_hidden"]').append(options);
        }
        else {
            $('.form_builder_block select[name="copy_to_hidden"]').parent().parent().addClass("hidden");
        }
    }
}

function initiate_dragula_form_builder() {
   
    if ($('form#form-builder').length !== 0) {
        //  Event to show move icon
        var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
        if(dragulaFormBuilder !== null) { dragulaFormBuilder.destroy() }

        $('.field-list a.move-field').hover(function() { 
            $(this).toggleClass('hover'); 
        });

        dragulaFormBuilder = dragula(
            [document.getElementById('fields-list'), document.getElementById('row-fields')],
            {
                moves: function (el, container, handle) {
                    return handle.className.indexOf('move') !== -1;
                },
                copy: function(el, source) {
                    return source === document.getElementById('fields-list');
                },
                accepts: function (el, target) {
                    var isSectionField = $(el).hasClass('section') || $(el).data('type-field') === 'section';
                    var isSectionRegion = $(target).hasClass('section-container');
                    let elIsAddressComponentElement = $(el).hasClass('addresscomponent') || $(el).data('type-field') === 'addresscomponent' || $(el).data('data-type') === 'addresscomponent';
                    var accept = target !== document.getElementById('fields-list');
                    if (isSectionField && isSectionRegion) {
                        accept = false;
                    } else if (elIsAddressComponentElement) {
                        
                        let elComponentId = $(el).parents('div[data-type-field="addresscomponent"]').data('element-id');
                        let targetComponentId = $(target).parents('div[data-type-field="addresscomponent"]').data('element-id');


                        if (elComponentId != targetComponentId)
                            accept = false;

                    }

                    return accept;
                },
                isContainer: function (el) {
                    return el.classList.contains('section-container') || el.classList.contains('container-form');
                },
                direction: 'vertical'
            })
            .on('drag', function (el) {
            }).on('drop', async function (el, target, source, sibling) {
                var type = $(el).attr('data-type');
                var targetElement = $(target);
                //  If element is moving from fields section (When element has a data-type attribute)

                if(type && target) {
                   await AddFieldsToPreviewWorkflow($(el), true, targetElement);
                }

                //  Update weights values
                var weight = 0;
                $('.row-fields.container-form').find('div.field-row').each(function(){
                    var element = $(this);
                    var elementId = element.data('element-id');
                    var weightHTML = 0;

                    //Assign new weigths
                    var dataLocalStorage = sessionStorage.getItem('json-form-builder-data-' + formTokenStore);
                    var dataJson = JSON.parse(dataLocalStorage);

                    // Assigning region to field
                    var sectionId = '';
                    if (element.parent().hasClass('section-container')) {
                        var sectionElmentId = element.parent().parent('.field-row').data('element-id');

                        if (sectionElmentId !== '') {
                            var sectionField = dataJson.find(function (item) { return item.elementId === sectionElmentId });

                            if (sectionField && sectionField.fieldId !== 0 && sectionField.fieldId !== '' && sectionField.fieldId !== null) {
                                sectionId = sectionField.fieldId;
                            } else {
                                sectionId = 'element-' + sectionElmentId;
                            }
                        }
                    } 

                    for (var i = 0; i < dataJson.length; i++) {
                        if(dataJson[i].elementId === elementId) {
                            dataJson[i].weight = weight;
                            dataJson[i].sectionId = sectionId;
                        }
                    }

                    //Modify HTML with new weigths
                    $('.row-fields.container-form').find('.field-row').each(function(){
                        $(this).attr('data-order', weightHTML);

                        weightHTML = weightHTML + 1;
                    });

                    //Assign again value to localStorage
                    setDataToSessionStore(dataJson, formTokenStore);
                    //sessionStorage.setItem('json-form-builder-data-' + formTokenStore, dataSetLocalStorage);

                    recalculateHiddenNames();
                    weight = weight + 1;
                });
            }).on('dragend', function (el) {
            });

            var $container = $('.form-preview');
            $(document).on('mousemove', function(e) {
                if ($('.field-row.gu-transit').length > 0) {
                    var containerOffset = $container.offset();
                    var containerHeight = $container.height();
                    var offset = 20;
                    var speed = 5;
                    if (e.pageY - containerOffset.top < offset) {
                        $container.scrollTop($container.scrollTop() - speed);
                    } else if (containerOffset.top + containerHeight - e.pageY < offset) {
                        $container.scrollTop($container.scrollTop() + speed);
                    }
                }
            });
    }
}

function initiate_dragula_drop_down_options() {
    if ($('form#form-builder').length !== 0) {
        $('form#form-builder .field-configuration .tabs-content .tabs-panel').each(function(){
            var lanId = $(this).data('language-id');
            var dinamycId =  'dinamyc-' + lanId;
            dragula
            ([document.getElementById(dinamycId)],
            {
                moves: function (el, container, handle) {
                    return handle.className === 'move';
                },
                direction: 'vertical'
            })
            .on('drag', function (el) {
            }).on('drop', function (el) {
                var weight = 0;
                var field = $(el).parents('.dinamyc').find('div.option');

                field.each(function(){
                    var element = $(this);
                    var elementId = element.attr('data-element-id');
                    element.attr('data-sort-order', weight);

                    var tabs_content = element.closest('.tabs-content');
                    var tabs_panel = $(tabs_content).find('.tabs-panel:not(.is-active)');

                    tabs_panel.each(function(){
                        var tab = $(this);
                        var _field = $(tab).find('div.option[data-element-id="' + elementId + '"]');
                        $(_field).attr('data-sort-order', weight);
                    });

                    weight = weight + 1;
                });
            }).on('dragend', function (el) {
                var tabs_content = $(el).closest('.tabs-content');
                var tabs_panel = $(tabs_content).find('.tabs-panel:not(.is-active)');

                tabs_panel.each(function(){
                    var tab = $(this);
                    var fields = $(tab).find('.dinamyc .option');
                    var dinamyc = $(tab).find('.dinamyc');
                    $(fields).sort(function (a, b) {
                      var contentA = parseInt( $(a).attr('data-sort-order'));
                      var contentB = parseInt( $(b).attr('data-sort-order'));
                      return (contentB < contentA) ? 1 : -1;
                   }).appendTo($(dinamyc));
                });
                $(".form_builder_block .save_section button.save_field").trigger("click");

            });
        });
    }
}

function SelectClearExtensions(){
    $(document).on('click', 'a.ext_select_all, a.ext_clear', function () {
        var self = $(this);
        var fieldset = self.closest('.fieldset');

        var className = self.attr('class');

        if(className == 'ext_clear'){
            fieldset.find('input[name="extension_allowed"]').each(function () {
                $(this).prop('checked',false);
            });
        }
        else if(className == 'ext_select_all'){
            fieldset.find('input[name="extension_allowed"]').each(function () {
                if (!$(this).is(':disabled')) {
                    $(this).prop('checked', true);
                }                
            });
        }
    });
}

function get_delete_option_form_builder_preview(customClass, additionalClass, fieldRuleInPage, elementId ) {
    let cancelButton =  '<a title="Delete Field" class="delete-field ' + additionalClass + '" data-page-rule="' + fieldRuleInPage + '" data-element-id="' + elementId + '"></a>';

    if (customClass !== undefined && customClass !== null && customClass !== '' && customClass.indexOf('address-component') > -1 ) {
        cancelButton = '';
    }

    return cancelButton;
}

function calculate_data_attribute_address_component(customCssClass) {
    let dataAttribute = '';
    if (customCssClass !== undefined && customCssClass !== null) {
        if (customCssClass.indexOf('address-component-latitude') > -1) {
            dataAttribute = ' data-address-component="latitude"';
        } else if (customCssClass.indexOf('address-component-longitude') > -1) {
            dataAttribute = ' data-address-component="longitude"';
        }
    }
    return dataAttribute;
}
function loadFieldsFromLocalStorage(blockId) {
    var border_option_status = '';
    if (!is_backend_page()) return;

    var numElement = 0;
    var form_preview = $('.form_builder_block .form-preview');
    var jsonData = GetLocalFormBuilderStorage();
    let fieldidsAutocomplete = [];
    if (jsonData != undefined && jsonData != "" && jsonData !== null && jsonData !== undefined) {
        var json = JSON.parse(jsonData);
        var band = false;

        json.forEach(async function (item) {
            var elementId = parseInt(item.elementId);
            var fieldRuleInPage = parseInt(item.FieldInPageRule);
            var ruleId = parseInt(item.ruleId);
            var ruleActive = (item.hasConditions != null && item.hasConditions == true) ? 'active' : '';
            var fieldId = parseInt(item.fieldId);
            var typeField = item.typeField;
            var langId = $("#form-builder-block form ul.tabs li a:first").data('language-id');
            var label = "", labeltextArea = "", classRequired = "", classHidden = "", helptext = "",labelgptbtn="";
            var backButtonLabel = "";
            var cancelButtonLabel = "";
            var nextButtonLabel = "";
            var is_validate = false, allow_time = false, default_datetime = false,hide_placeholder=false; 
            var is_validate_text = false;
            var is_required = false;
            var do_not_save_field_to_database = false;
            var include_signature_transaction_info = false;
            var display_format = false;
            var time_format = -1;
            var weight = parseInt(item.weight);
            var sectionId = item.sectionId;
            var options = [];
            var checkbox_default = "";
            var default_values = [];
            var checkbox_option = "";
            var default_value = "";
            var copy_to_hidden ="";
            var specialClass = "";
            var topminimumlabel = "";
            var topmaximumlabel = "";
            var check_button_text = "";
            var alignselected = "";
            var columnsSection = 1;
            var SalesforceObject = "";
            var SalesforceObjectField = "";
            var PullValuesFromSf ="";
            var get_save_data_salesforce = "";
            let customCssClass = '';
            if (item.specialClass !== undefined && item.specialClass !== null && item.specialClass !== '') {
                specialClass = item.specialClass;
            }

            item.properties.forEach(function (p) {

                if (p.name=='copy_to_hidden') {
                    copy_to_hidden = p.value;
                }
                if (p.name=='salesforce_object_field') {
                    SalesforceObject = p.value;
                }
                if (p.name=='salesforce_field') {
                    SalesforceObjectField = p.value;
                }

                if (p.name=='pull_values_from_sf') {
                    PullValuesFromSf = p.value;
                }
                if (p.name=='save_data_salesforce') {
                    get_save_data_salesforce = p.value;
                }
                

                if (p.name == "label-" + langId) {
                    label = p.value;
                }

                if (p.name == "label-gpttext-btn-" + langId) {
                    labelgptbtn = p.value;
                }
                if (typeField === 'submit') {
                    if (p.name == 'back_button_label-' + langId) {
                        backButtonLabel = p.value;
                        if (backButtonLabel !== '') {
                            $('.form_builder_block  input[name="back_button_label-' + langId + '"]').val(backButtonLabel);
                        }
                    }
                    else if (p.name == 'next_button_label-' + langId) {
                        nextButtonLabel = p.value;
                        if (backButtonLabel !== '') {
                            $('.form_builder_block  input[name="next_button_label-' + langId + '"]').val(nextButtonLabel);
                        }
                    }
                    else if (p.name == 'cancel-label-' + langId) {
                        cancelButtonLabel = p.value;
                        if (cancelButtonLabel !== '') {
                            $('.form_builder_block  input[name="cancel-label-' + langId + '"]').val(cancelButtonLabel);
                        }
                    } else if (p.name == 'addrecord-label-' + langId) {
                        if(p.value !== '')
                            $('.form_builder_block  input[name="addrecord-label-' + langId + '"]').val(p.value);
                    }

                    
                }

                if (p.name == "label-textarea-" + langId) {
                    labeltextArea = p.value;
                }
                if (p.name == "top_minimum_label-" + langId) {
                    topminimumlabel = p.value;
                    $('.form_builder_block  input[name="top_minimum_label-' + langId + '"]').val(topminimumlabel);
                }
                if (p.name == "top_maximum_label-" + langId) {
                    topmaximumlabel = p.value;
                    $('.form_builder_block  input[name="top_maximum_label-' + langId + '"]').val(topmaximumlabel);
                }
                if (p.name == "text_to_check-" + langId) {
                    check_button_text = p.value;
                    $('.form_builder_block  input[name="text_to_check-' + langId + '"]').val(check_button_text);
                }
                if (p.name == "is_required") {
                    if (p.value == true) {
                        classRequired = "required";
                        is_required = true;
                        $(".form_builder_block  #is_required").prop("checked", true);
                    } else {
                        $(".form_builder_block  #is_required").prop("checked", false);
                    }
                }
                if (p.name == "do_not_save_field_to_database") {
                    if (p.value == true) {
                        do_not_save_field_to_database = true;
                        $(".form_builder_block  #do_not_save_field_to_database").prop("checked", true);
                    } else {
                        $(".form_builder_block  #do_not_save_field_to_database").prop("checked", false);
                    }
                }
                if (p.name == "include_signature_transaction_info") {
                    if (p.value == true) {
                        include_signature_transaction_info = true;
                        $(".form_builder_block  #include_signature_transaction_info").prop("checked", true);
                    } else {
                        $(".form_builder_block  #include_signature_transaction_info").prop("checked", false);
                    }
                }
                
                if (p.name == "show_format") {
                    if (p.value == true) {
                        show_format = true;
                        $('.form_builder_block  input[name="show_format"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="show_format"]').prop("checked", false);
                    }
                }
                if (p.name == "hide_label") {
                    if (p.value == true) {
                        classHidden = "hidden";
                        $(".form_builder_block  #hide_label").prop("checked", true);
                    } else {
                        $(".form_builder_block  #hide_label").prop("checked", false);
                    }
                }
                if (p.name == "chat_gpt_text_area_mode") {
                    if (p.value == true) {
                        $('.form_builder_block  input[name="chat_gpt_text_area_mode"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="chat_gpt_text_area_mode"]').prop("checked", false);
                    }
                }
                if (p.name == "chat_gpt_allow_enter_complete_prompt") {
                    if (p.value == true) {
                        $('.form_builder_block  input[name="chat_gpt_allow_enter_complete_prompt"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="chat_gpt_allow_enter_complete_prompt"]').prop("checked", false);
                    }
                }
                if (p.name == "chat_gpt_allow_multiple_pre_define_prompts") {
                    if (p.value == true) {
                        $('.form_builder_block  input[name="chat_gpt_allow_multiple_pre_define_prompts"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="chat_gpt_allow_multiple_pre_define_prompts"]').prop("checked", false);
                    }
                    DisplayMultiplePreDefinePromptsOptions();
                }
                
                if (p.name == "chat_gpt_by_ia") {
                    chatgptByIA = p.value;
                }
                if (p.name == "read_only") {
                    if (p.value == true) {
                        $(".form_builder_block  #read_only").prop("checked", true);
                    } else {
                        $(".form_builder_block  #read_only").prop("checked", false);
                    }
                }
                if (p.name == "field_visibility") {
                    if (p.value) {
                        $(".form_builder_block  select[name='field_visibility']").val(p.value);
                    } else {
                        $(".form_builder_block  select[name='field_visibility']").val(0);
                    }
                }
                if (p.name == "file_image") {
                    if (p.value == true) {
                        $(".form_builder_block  #file_image").prop("checked", true);

                    } else {
                        $(".form_builder_block  #file_image").prop("checked", false);
                    }
                    validateOnlyImageLoad();
                    validateOnlyImage();
                }
                if (p.name == "file_image_width") {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  #file_image_width").val(p.value);
                    }
                }
                if (p.name == "file_image_height") {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  #file_image_height").val(p.value);
                    }
                }
                if (p.name == "rich_text") {
                    if (p.value == true) {
                        $(".form_builder_block  #rich_text").prop("checked", true);
                    } else {
                        $(".form_builder_block  #rich_text").prop("checked", false);
                    }
                    DisplayRichTextOptions();
                    DisplayTextAreaModeOptions();
                }
                if (p.name == "encrypted") {
                    if (p.value == true) {
                        $(".form_builder_block  #encrypted").prop("checked", true);
                    } else {
                        $(".form_builder_block  #encrypted").prop("checked", false);
                    }
                }
                if (p.name == 'field_validate') {
                    if (p.value != "" && p.value == true) {
                        is_validate = true;
                    }
                }
                if (p.name == 'field_validate_confirm_text') {
                    if (p.value != "" && p.value == true) {
                        is_validate_text = true;
                    }
                }
                if (p.name == 'field_allow_time') {
                    if (p.value != "" && p.value == true) {
                        allow_time = true;
                    }
                }
                if(p.name == 'time_format'){
                    if (p.value != "" && p.value !== null) {
                        time_format = p.value;
                    }
                }
                if (p.name == 'default_datetime') {
                    if (p.value != "" && p.value !== null) {
                        default_datetime = true;
                        $(".form_builder_block  #default_datetime").prop("checked", true);
                    }
                }
                if (p.name == 'hide_placeholder') {
                    if (p.value != "" && p.value !== null) {
                        hide_placeholder = true;
                        $(".form_builder_block  #hide_placeholder").prop("checked", true);
                    }
                }
                
                if (p.name == 'align_label') {
                    if (p.value !== "" && p.value !== null) {
                        if (p.value === 0 || p.value === '0')
                            alignselected = 'label-preview-left';
                        if (p.value === 1 || p.value === '1')
                            alignselected = 'label-preview-center';
                        if (p.value === 2 || p.value === '2')
                            alignselected = 'label-preview-right';
                    }
                }
                if (p.name == 'salesforce_field') {
                    if (p.value != "" && p.value !== null) {
                        var sf_object_value = $('select[name="salesforce_object"]').val();
                        var valueObjectText = $("#form-builder-block select[name='salesforce_object']").val() == undefined ? '' : $("#form-builder-block select[name='salesforce_object']").val();
                        if (sf_object_value != null && sf_object_value != undefined && sf_object_value.indexOf('Both') == 0
                            || valueObjectText != null && valueObjectText != undefined && valueObjectText.indexOf('Both') == 0) {
                            var sf_object_value_text = $('.form_builder_block input[name="salesforce_object_field"]').val();
                            $(".form_builder_block  select[name='salesforce_field'] option[value='" + p.value + "'][data-object='" + sf_object_value_text + "']").prop("selected", true);
                        }
                        else {
                            $(".form_builder_block  select[name='salesforce_field']").val(p.value);
                        }
                    } else {
                        $(".form_builder_block  select[name='salesforce_field']").val('none');
                    }
                }

                if (p.name == 'number_validation_text') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  input[name='number_validation_text']").val(p.value);
                    }
                }

                if (p.name == 'step_value') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  input[name='step_value']").val(p.value);
                    } else {
                        $(".form_builder_block  input[name='step_value']").val('1');
                    }
                }
                if (p.name == "include_grid_lines") {
                    if (p.value == true) {
                        $(".form_builder_block #include_grid_lines").prop("checked", true);
                    } else {
                        $(".form_builder_block #include_grid_lines").prop("checked", false);
                    }
                }

                if (p.name == "section_border_option") {

                    if (p.value == true) {
                        $(".form_builder_block #section_border_option").prop("checked", true);
                        border_option_status = 'active';
                    } else {
                        $(".form_builder_block #section_border_option").prop("checked", false);
                    }
                }
                if (p.name == 'section_border_for') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block select[name='section_border_for']").val(p.value);
                    }
                }

                if (p.name == 'columns_number') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block select[name='columns_number']").val(p.value);
                        columnsSection = p.value;
                    }
                }
                if (p.name == 'options-' + window.translation.language) {
                    if (p.value != "" && p.value !== null) {
                        options = JSON.parse(p.value);
                    }
                }
                if(p.name.indexOf('default_value_dropdown_simple-') != -1) {
                    if (p.value != "" && p.value !== null) {
                        var languageId = p.name.split('-')[1];
                        var defaultValueOption = {};

                        defaultValueOption.language = languageId;
                        defaultValueOption.value = p.value;

                        default_values.push(defaultValueOption);
                    }
                }
                if(p.name == 'checkbox-option-' + window.translation.language){
                    checkbox_option = p.value;
                }
                if(p.name == 'checkbox-default-' + window.translation.language){
                    if (p.value != "" && p.value !== null) {
                        checkbox_default = p.value;
                    }
                }
                if (p.name == "helptext_field-" + langId) {
                    if (p.value !== '')
                        helptext = '<p class="hint-text">' + p.value + '</p>';
                }
                if(p.name == 'default_value_field'){
                    default_value = p.value;
                }
                if (p.name == 'placeholder_field') {
                    $(".form_builder_block  input[name='placeholder_field']").val(p.value);
                }
                if (p.name == 'chat_gpt_text_area_mode') {
                    if (p.value == true) {
                        $('.form_builder_block  input[name="chat_gpt_text_area_mode"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="chat_gpt_text_area_mode"]').prop("checked", false);
                    }
                }
                if (p.name == 'chat_gpt_allow_enter_complete_prompt') {
                    if (p.value == true) {
                        $('.form_builder_block  input[name="chat_gpt_allow_enter_complete_prompt"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="chat_gpt_allow_enter_complete_prompt"]').prop("checked", false);
                    }
                } 
                if (p.name == 'chat_gpt_allow_multiple_pre_define_prompts') {
                    if (p.value == true) {
                        $('.form_builder_block  input[name="chat_gpt_allow_multiple_pre_define_prompts"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="chat_gpt_allow_multiple_pre_define_prompts"]').prop("checked", false);
                    }
                }
                     
                if (p.name == 'chat_gpt_by_ia') {
                    $(".form_builder_block  select[name='chat_gpt_by_ia']").val(p.value);
                }
                
                if (p.name == 'currency_type') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  select[name='currency_type']").val(p.value);
                    }
                }
                if (p.name == 'decimal_mark') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  select[name='decimal_mark']").val(p.value);
                    }
                }

                if (p.name == 'listview_name') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  input[name='listview_name']").val(p.value);
                    }
                }
                if (p.name == 'sf_listview_label_field') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  select[name='sf_listview_label_field']").val(p.value);
                        $(".form_builder_block  select[name='field_label_mentions']").val(p.value);
                    }
                }
                if (p.name == 'sf_listview_value_field') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  select[name='sf_listview_value_field']").val(p.value);
                        $(".form_builder_block  select[name='field_value_mentions']").val(p.value);
                    }
                }
                if (p.name == 'sf_listview_filter_field') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  select[name='sf_listview_filter_field']").val(p.value);
                    }
                }
                if (p.name == 'sf_listview_filter_value') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  input[name='sf_listview_filter_value']").val(p.value);
                    }
                }
                if (p.name == 'sf_listview_filter_rules') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  input[name='sf_listview_filter_rules']").val(p.value);
                    }
                }
                if (p.name == 'sf_listview_filter_logic') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  input[name='sf_listview_filter_logic']").val(p.value);
                        $(".form_builder_block  input[name='filter_logic_mentions']").val(p.value);
                    }
                }
                if (p.name == 'field_mentions') {
                    if (p.value != "" && p.value !== null) {
                        var sfObjCurrent = $(".form_builder_block  select[name='salesforce_object']").val();
                        AjaxLoadSalesForceFieldsForMentions(sfObjCurrent, p.value)
                    }
                }
                if (p.name == 'sf_listview_default_value') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  input[name='sf_listview_default_value']").val(p.value);
                    }
                }
                if (p.name == 'sf_listview_filter_operator') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  select[name='sf_listview_filter_operator']").val(p.value);
                    }
                }

                if (p.name == 'custom_cssclass') {
                    if (p.value != "" && p.value !== null) {
                        $(".form_builder_block  input[name='custom_cssclass']").val(p.value);
                        customCssClass = p.value;
                    }
                }

                if (p.name == "addresscomponent_use_user_location") {
                    if (p.value == true) {
                        useUserLocation = true;
                        $('.form_builder_block  input[name="addresscomponent_use_user_location"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="addresscomponent_use_user_location"]').prop("checked", false);
                    }
                }
                
                if (p.name == "addresscomponent_address_verification") {
                    if (p.value == true) {
                        useAddressVerification = true;
                        $('.form_builder_block  input[name="addresscomponent_address_verification"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="addresscomponent_address_verification"]').prop("checked", false);
                    }
                }

                if (p.name == "addresscomponent_autocomplete") {
                    if (p.value == true) {
                        useAutoComplete = true;
                        $('.form_builder_block  input[name="addresscomponent_autocomplete"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="addresscomponent_autocomplete"]').prop("checked", false);
                    }
                }
                if (p.name == "is_maximum_value_of_another_field") {
                    if (p.value == true) {
                        $('.form_builder_block  input[name="is_maximum_value_of_another_field"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="is_maximum_value_of_another_field"]').prop("checked", false);
                    }
                }
                if (p.name == "is_minimum_value_of_another_field") {
                    if (p.value == true) {
                        $('.form_builder_block  input[name="is_minimum_value_of_another_field"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="is_minimum_value_of_another_field"]').prop("checked", false);
                    }
                }
                if (p.name == "is_include_non_visible_fields") {
                    if (p.value == true) {
                        $('.form_builder_block  input[name="is_include_non_visible_fields"]').prop("checked", true);
                    } else {
                        $('.form_builder_block  input[name="is_include_non_visible_fields"]').prop("checked", false);
                    }
                }
            });
            if (label == "") {
                label = GetLabelField(typeField);
            }
            
            if (typeField != "submit") {
                fieldidsAutocomplete.push('f:'+fieldId);
                var additionalClass = '';
                if (fieldRuleInPage != 0) {
                    additionalClass = 'has-page-rule-related';
                }
                var html_copy_to_hidden = '';
                var data_copy_to_hidden = (copy_to_hidden)?'data-copy-to-hidden="'+copy_to_hidden+'"':'';

                var HtmlSalesforceMapped = (get_save_data_salesforce == 'on' && typeField != "paymentcomponent" && SalesforceObject !="" && SalesforceObjectField!="" && SalesforceObjectField!=null)?'<span class="salesforce-mapped">Mapped to:'+SalesforceObject+'.'+SalesforceObjectField+'</span>':'';
                var isLlamaSiteExternalRgistration = IS_LLAMAPI_ENABLED && typeField === 'email' && specialClass === 'external-registration-username';
                
                var rowfield = '<div '+data_copy_to_hidden+' data-element-id="' + elementId + '" class="field-row active ' + specialClass + ' ' + customCssClass + '" data-type-field="' + typeField + '" data-order="' + item.weight + '" data-block-name="' + typeField + '">'
                                + '<span data-tooltip class="top field-id" tabindex="2" title="'+fieldId+'">ID</span>'
                                + '<div class="content">'
                    + '<div class="left align-label">'
                    + '<label class="label_preview ' + classRequired + ' ' + classHidden + ' ' + alignselected + '">' + label + '</label>'
                                    + '</div>'
                                    + '<div class="right">'
                                         + FieldContentPreview(typeField, default_value) + helptext
                                    + '</div>'
                                + '</div>'
                                + '<div class="options">'
                                    + '<a data-element-reveal="ars-display-logic" data-field-id="' + fieldId + '" data-rule-id="' + ruleId + '" data-type-field="' + typeField + '" title="' + typeField + '" class="logic ' + ruleActive + '"  data-element-id="' + elementId + '">' + window.translation.logic + '</a>'
                                    + '<a data-type-field="' + typeField + '" title="' + typeField + '" class="edit-field"  data-element-id="' + elementId + '"></a>'
                                    + (!isLlamaSiteExternalRgistration ? get_delete_option_form_builder_preview(customCssClass, additionalClass, fieldRuleInPage, elementId) : '')
                                    + '<span class="move" data-element-id="' + elementId + '"></span>'
                                + '</div>'
                                + HtmlSalesforceMapped
                            + '</div>';
                if (typeField == 'description') {
                    if (labeltextArea != "") {
                        if (labeltextArea.indexOf('<script>') != -1) {
                            //var textLabelArea = labeltextArea;
                            //var text = textLabelArea.replace(/(<script)(.*?)(<\/script>)/gi, '');
                            //var dom = $(text);
                            labeltextArea = "";
                        }

                        content = '<div class="description_preview">' + labeltextArea+ '</div>';
                    } else {
                        content = '<div class="description_preview">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut </div>';
                    }

                    rowfield = '<div data-element-id="' + elementId + '" class="field-row active" data-lang="'+langId+'" data-type-field="' + typeField + '" data-order="' + item.weight + '" data-block-name="' + typeField + '">'
                                + '<div class="content">'
                                    + '<div class="right-full">'
                                         + content
                                    + '</div>'
                                + '</div>'
                                + '<div class="options">'
                                    + '<a data-element-reveal="ars-display-logic" data-field-id="' + fieldId + '" data-rule-id="' + ruleId + '" data-type-field="' + typeField + '" title="' + typeField + '" class="logic ' + ruleActive + '"  data-element-id="' + elementId + '">' + window.translation.logic + '</a>'
                                    + '<a data-type-field="' + typeField + '" title="' + typeField + '" class="edit-field" data-field-id="' + fieldId + '" data-rule-id="' + ruleId + '" data-element-id="' + elementId + '"></a>'
                                    + '<a title="Delete Field" class="delete-field"  data-element-id="' + elementId + '"></a>'
                                    + '<span class="move" data-element-id="' + elementId + '"></span>'
                                + '</div>'
                            + '</div>';
                }
                else if (typeField == 'hidden') {
                    rowfield = '<div data-element-field-id="'+fieldId+'" data-element-id="' + elementId + '" class="field-row active" data-type-field="' + typeField + '" data-order="' + item.weight + '" data-block-name="' + typeField + '" ' + calculate_data_attribute_address_component(customCssClass)+ '>'
                                + '<span data-tooltip class="top field-id" tabindex="2" title="'+fieldId+'">ID</span>'
                                + '<div class="content">'
                                    + '<div class="left">'
                                    + '</div>'
                                    + '<div class="right">'
                                         + FieldContentPreview(typeField, default_value) + helptext
                                    + '</div>'
                                + '</div>'
                                + '<div class="options">'
                                    + '<a data-type-field="' + typeField + '" title="' + typeField + '" class="edit-field"  data-element-id="' + elementId + '"></a>'
                                    + get_delete_option_form_builder_preview(customCssClass, '', '', elementId)
                                    + '<span class="move" data-element-id="' + elementId + '"></span>'
                                + '</div>'
                        + HtmlSalesforceMapped
                        + '</div>';
                } else if (typeField == 'section' || typeField == 'addresscomponent') { // here I must add the validation to include address component type
                    var classColumns = '';
                    if(columnsSection !== 1) {
                        classColumns = 'columns' + columnsSection;
                    }

                    if (typeField == "addresscomponent")
                        classColumns += "section-addresscomponent"
                    rowfield = '<div data-element-id="' + elementId + '" data-field-id="' + fieldId + '" class="field-row active ' + customCssClass + '" data-type-field="' + typeField + '" data-order="' + item.weight + '" data-block-name="' + typeField + '">'
                            + '<div class="content content-section">'
                        + FieldContentPreview(typeField, label, (classRequired + ' ' + classHidden + ' ' + alignselected))
                            + '</div>'
                            + '<div class="options">'
                                + '<a data-element-reveal="ars-display-logic" data-field-id="' + fieldId + '" data-rule-id="' + ruleId + '" data-type-field="' + typeField + '" title="' + typeField + '" class="logic ' + ruleActive + '"  data-element-id="' + elementId + '">' + window.translation.logic + '</a>'
                                + '<a data-type-field="' + typeField + '" title="' + typeField + '" class="edit-field" data-field-id="' + fieldId + '" data-rule-id="' + ruleId + '" data-element-id="' + elementId + '"></a>'
                                + '<a title="Delete Field" class="delete-field"  data-element-id="' + elementId + '"></a>'
                                + '<span class="move" data-element-id="' + elementId + '"></span>'
                            + '</div>'    
                            + '<div class="section-container '+ classColumns +'">'
                                + '</div>'
                            + '</div>';
                }

                form_preview.find(".blank-text").addClass("hidden");
                // validating if field belongs to a section
                if(sectionId !== null) {
                    form_preview.find(".field-row[data-field-id="+sectionId+"] .section-container").append(rowfield);
                } else {
                    form_preview.find(".row-fields").append(rowfield);
                }
                if (typeField == 'hidden') {
                    recalculateHiddenNames();
                }

                if (is_validate == true) {
                    var markup = '';
                    $(".form_builder_block .field-row[data-element-id=" + elementId + "] .content .confirm_email_preview").remove();
                    if (typeField == "email") {
                        markup = '<div class="confirm_email_preview"><div class="left"><label class="label_preview required ' + classHidden + ' ' + alignselected + '">' + window.translation.confirm_email
                        + '</label></div><div class="right"><input id="email_confirm_preview" name="email_confirm_preview" readonly="" type="text" placeholder="Ex." class="email_confirm_preview">'
                        + '</div></div>';
                        if (is_required == true) {
                            $("#form-builder-block .field-row[data-element-id=" + elementId + "] .content").append(markup);
                        } else {
                            markupEmail = '<div class="confirm_email_preview"><div class="left"><label class="label_preview ' + classHidden + ' ' + alignselected + '">Confirm Email</label></div><div class="right"><input id="email_confirm_preview" name="email_confirm_preview" readonly="" type="text" placeholder="Ex." class="email_confirm_preview"></div></div>';
                            $("#form-builder-block .field-row[data-element-id=" + elementId + "] .content").append(markupEmail);
                        }
                    }
                    if (typeField == "password") {
                        markup = '<div class="confirm_password_preview"><div class="left"><label class="label_preview required ' + classHidden + ' ' + alignselected + '">' + window.translation.confirm_password
                        + '</label></div><div class="right"><input id="password_confirm_preview" name="password_confirm_preview" readonly="" type="text" placeholder="Ex." class="password_confirm_preview">'
                        + '</div></div>';
                        if (is_required == true) {
                            $("#form-builder-block .field-row[data-element-id=" + elementId + "] .content").append(markup);
                        } else {
                            markupPass = '<div class="confirm_password_preview"><div class="left"><label class="label_preview ' + classHidden + ' ' + alignselected + '">' + window.translation.confirm_password + '</label></div><div class="right"><input id="password_confirm_preview" name="password_confirm_preview" readonly="" type="text" placeholder="Ex." class="password_confirm_preview"></div></div>';
                            $("#form-builder-block .field-row[data-element-id=" + elementId + "] .content").append(markupPass);
                        }
                    }
                }
                if (allow_time == true && typeField == "datetime") {
                    var time_markup = "";
                    $(".form_builder_block .field-row[data-element-id=" + elementId + "] .content .time").remove();
                    time_markup = '<div class="time"><select style="width:155px;" name="format_time" disabled readonly><option>11:59 AM</option></select></div>';
                    /*if (time_format != -1 && time_format == 0) {
                        time_markup = '<div class="time"><input id="hour" name="hour" type="number" placeholder="12"><span>:</span><input id="minute" name="minute" type="number" placeholder="45"></div>';
                    }
                    if (time_format != -1 && time_format == 1) {
                        time_markup = '<div class="time"><input id="hour" name="hour" type="number" placeholder="12"><span>:</span><input id="minute" name="minute" type="number" placeholder="45">' +
                            '<span>:</span><select name="format_time" > <option value="0">AM</option> <option value="1">PM</option></select></div>';
                    }*/
                    $("#form-builder-block .field-row[data-element-id=" + elementId + "] .content .right").append(time_markup);
                }

                $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
                $('#form-builder-block .field_to_mention_section').addClass("hidden");
                $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");

                $("#form_changed").val(false);
                $(".form_builder_block button.save_field").removeClass("pending_changes");

                // re-initialize multiselects
                $('.form_builder_block .form-preview select[multiple]').multiselect();

            } else {
                band = true;
                $('.form_builder_block .submit-row').remove();
                var includeCancel = $('#form-builder-block #include_cancel_button').is(':checked');
                var textButton = ($('input[name="cancel-label-1"]').length > 0 && $('input[name="cancel-label-1"]').val() != '') ? $('input[name="cancel-label-1"]').val() : "Cancel";
                var submit_field = '<div data-element-id="0" class="submit-row field-row" data-type-field="submit" data-field-id="' + numElement + '" data-type-field="' + typeField + '" data-order="' + item.weight + '" data-block-name="' + typeField + '">'
                    +'<div class="content full">'
                    + '<div class="right-full">'
                    + (includeCancel ? + '<button type="button" class="button cancel" style="background-color: transparent;color: #A4B000;">&nbsp;' + textButton + '</button>' : '')
                            + '<button type="button" class="button">' + label + '</button>'
                   
                        + '</div>'
                    + '</div>'
                    + '<div class="options quick">'
                        + '<a data-element-reveal="ars-display-logic" data-field-id="' + fieldId + '" data-rule-id="' + ruleId + '" data-type-field="' + typeField + '" title="' + typeField + '" class="logic ' + ruleActive + '"  data-element-id="' + elementId + '" data-for-submit="true">' + window.translation.logic + '</a>' 
                        + '<a data-type-field="submit" title="" class="edit-field" data-field-id="0" data-element-id=""></a>'
                        + '<span class="move" data-element-id="0"></span>'
                    + '</div>'
                    + '</div>';
                
                if (sectionId !== null) {
                    form_preview.find(".field-row[data-field-id=" + sectionId + "] .section-container").append(submit_field);
                } else {
                    form_preview.find(".row-fields").append(submit_field);
                }

                $('.form_builder_block .submit-row').removeClass("hidden");
            }

            if (band == false) {
                ShowSubmitButtonFormBuilder();
            }
            $('.form_builder_block .row-fields .field-row').removeClass("active");
            $('.form_builder_block .submit-row').removeClass("active");
            // here we should evaluate keep the following code out of the iteration
            if (get_save_data_salesforce === 'on' && SalesforceObject != '' && SalesforceObjectField != '' && PullValuesFromSf === true) {
                await generate_html_options_salesforce(elementId, SalesforceObject, SalesforceObjectField, default_value, blockId);
            }      
            AddOptionToPreviewUpdate(typeField, options, checkbox_option, default_values, elementId);
        });
        EventsForsMentionsFeature();
        updateautocompleteelements(fieldidsAutocomplete);
    }
}

function updateautocompleteelements(fieldidsAutocomplete, addAtTop){
    if(fieldidsAutocomplete != null){
        var autocompleteInstance = $('.form_builder_block input[name="sf_listview_filter_value_rule"]').autocomplete("instance");
        if(autocompleteInstance){
            var currentSource = autocompleteInstance.options.source;
            var currentItems = [];
            currentSource.forEach(function (element) {
                if (element.indexOf(':') != -1) {
                    currentItems.push(element);
                }
            });
            var updatedSource = [...currentItems, ...fieldidsAutocomplete];
            if (addAtTop) {
                updatedSource = [...fieldidsAutocomplete, ...currentItems];
            }
            autocompleteInstance.option("source", updatedSource);
        }
    }
}

function cleanFormBuilderFields() {

    $('.form_builder_block .field-configuration input:not(:checkbox):not(:button)').val('');
    $('.form_builder_block .field-configuration input[name="save_field_salesforce"]').prop('checked', false);
    $('.form_builder_block .field-configuration input[name="retrieve_data_salesforce"]').prop('checked', false);
    $('.form_builder_block .field-configuration input[type="checkbox"]:not(input[name="private_file"])').prop('checked', false);
    $('.form_builder_block .field-configuration textarea').val("");


}

function HideFormBuilderFields(field) {
    var type_field = field;
    ShowAllFieldsFormBuilder();
    //  Hide read only field if SF Mapping is not enabled or if Update record is turned off

    if (type_field == 'addresscomponent') {
        var fields_to_hide = [
            'is_required', 'label-textarea', 'helptext_field', 'encrypted', 'rows', 'field_validate', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'dropdown-options', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'extension_allowed', 'placeholder_field', 'default_value_field', 'checkbox_option', 'checkbox_default', 'type_field', 'default_datetime','hide_placeholder', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'salesforce-mapping-section', 'read_only', 'field_visibility', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'display_inline_inputs', 'align_label_section', 'show_format',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'additional-buttons-for-ars',
            'record_to_relate', 'title_field', 'payment_component_section',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items',
            'copy_to_hidden', 'submit_cancel', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone',
            'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'

        ];
        $('.form_builder_block select[name="type_field"]').val("addresscomponent");
        HideSpecificFieldsFormBuilder(fields_to_hide);

        $('.form_builder_block .field-configuration > h3.title').text('Address Section');
    }
    if (type_field == 'paymentcomponent') {
        var fields_to_hide = [
            'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'dropdown-options', 'checkbox_option', 'checkbox_default', 'default_datetime', 'hide_placeholder', 'list_view_values', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'show_format',
            'record_to_relate', 'label-textarea', 'read_only', 'field_visibility', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate',
            'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height',
            'hide_label', 'align_label_section', 'encrypted', 'minimum_characters', 'maximum_characters', 'placeholder_field', 'default_value_field', 'is_required', 'label_field', 'helptext_field', 'display_inline_inputs', 'calculate_items', 'copy_to_hidden', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("paymentcomponent");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.payment_component);
        $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
        $('#form-builder-block .field_to_mention_section').addClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");

    }
    if (type_field == 'textbox') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'dropdown-options', 'checkbox_option', 'checkbox_default', 'default_datetime', 'hide_placeholder', 'list_view_values', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'display_inline_inputs', 'show_format',
            'record_to_relate', 'title_field', 'payment_component_section', 'option_currentAccountID', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("textbox");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.textbox);

        //  Hide encrypted field if SF Mapping is not enabled
        if(!$('#save_data_salesforce').prop('checked')) {
            $(".form_builder_block .encrypted").addClass("hidden");
        }
    }
    if (type_field == 'percent') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'dropdown-options', 'checkbox_option', 'checkbox_default', 'default_datetime', 'hide_placeholder', 'list_view_values', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency','private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'maximum_characters', 'minimum_characters', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines', 'section_border_option', 'section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'display_inline_inputs', 'encrypted', 'show_format',
            'record_to_relate', 'title_field', 'payment_component_section', 'option_currentAccountID', 'help-text-for-default-value', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("percent");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.percentage);

        //  Hide encrypted field if SF Mapping is not enabled
        if (!$('#save_data_salesforce').prop('checked')) {
            $(".form_builder_block .encrypted").addClass("hidden");
        }
    }

    if (type_field == 'calculate') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'dropdown-options', 'checkbox_option', 'checkbox_default', 'default_datetime', 'hide_placeholder', 'list_view_values', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines', 'section_border_option', 'section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'display_inline_inputs','additional-buttons-for-ars',
            'record_to_relate', 'title_field', 'payment_component_section', 'option_currentAccountID', 'read_only', 'field_visibility', 
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'minimum_characters', 'maximum_characters', 'default_value_field', 'placeholder_field', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("calculate");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.calculate_field);

        //  Hide encrypted field if SF Mapping is not enabled
        if(!$('#save_data_salesforce').prop('checked')) {
            $(".form_builder_block .encrypted").addClass("hidden");
        }
    }
    if (type_field == 'signature') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'dropdown-options', 'checkbox_option', 'checkbox_default', 'default_datetime', 'hide_placeholder', 'list_view_values', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'display_inline_inputs', 'show_format',
            'record_to_relate', 'title_field', 'payment_component_section', 'option_currentAccountID', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'read_only', 'field_visibility', 'minimum_characters', 'maximum_characters', 'placeholder_field', 'show_format', 'default_value_field', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt',
            'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text'
        ];
        $('.form_builder_block select[name="type_field"]').val("signature");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.signature_field);
        //  Hide encrypted field if SF Mapping is not enabled
        if(!$('#save_data_salesforce').prop('checked')) {
            $(".form_builder_block .encrypted").addClass("hidden");
        }
    }
    if (type_field == 'gpttext') {
        $('.form_builder_block select[name="type_field"]').val("gpttext");
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'dropdown-options', 'checkbox_option', 'checkbox_default', 'default_datetime', 'hide_placeholder', 'list_view_values', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'display_inline_inputs', 'show_format',
            'record_to_relate', 'title_field', 'payment_component_section', 'option_currentAccountID', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'read_only', 'field_visibility', 'minimum_characters', 'maximum_characters', 'placeholder_field', 'show_format', 'default_value_field', 'mentions_textarea', 'validatior_code_text', 'encrypted', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.chatgpt_text_field);
        //  Hide encrypted field if SF Mapping is not enabled
        if(!$('#save_data_salesforce').prop('checked')) {
            $(".form_builder_block .encrypted").addClass("hidden");
        }
    }
    if (type_field == 'formula') {
        $('.form_builder_block select[name="type_field"]').val("formula");
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'dropdown-options', 'checkbox_option', 'default_datetime', 'hide_placeholder', 'list_view_values', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for', 'display_inline_inputs',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'option_currentAccountID', 'show_format',
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height',
            'is_required', 'read_only', 'field_visibility', 'encrypted', 'minimum_characters', 'maximum_characters', 'placeholder_field', 'default_value_field', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt',
            'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        HideSpecificFieldsFormBuilder(fields_to_hide);

        $('.form_builder_block .field-configuration .save_field_in_salesforce').addClass('hidden');
        $('.form_builder_block .field-configuration .retrieve_info_from_salesforce').addClass('hidden');

        $('.form_builder_block .field-configuration > h3.title').text(window.translation.formula_field);
        
        //  Hide encrypted field if SF Mapping is not enabled
    }
    if (type_field == 'hidden') {
        var fields_to_hide = [
            'tabs-section', 'is_required', 'label-textarea', 'helptext_field', 'hide_label', 'align_label_section', 'encrypted', 'rows', 'field_validate', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'dropdown-options', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'extension_allowed', 'placeholder_field', 'checkbox_option', 'checkbox_default', 'default_datetime', 'hide_placeholder', 'list_view_values', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'read_only', 'field_visibility', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for', 'display_inline_inputs',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'additional-buttons-for-ars', 'show_format',
            'record_to_relate', 'title_field', 'payment_component_section',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'copy_to_hidden', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt',
            'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("hidden");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        recalculateHiddenNames();
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.hidden);
    }
    if (type_field == 'textarea') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value',  'encrypted', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'dropdown-options', 'minimum_characters', 'checkbox_option', 'checkbox_default', 'default_datetime', 'hide_placeholder', 'list_view_values', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for', 'display_inline_inputs',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'option_currentAccountID', 'show_format',
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("textarea");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.textarea);
    }
    if (type_field == 'dropdown') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'default_value_field','default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'minimum_characters', 'maximum_characters', 'placeholder_field', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_options',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf_help', 'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines', 'section_border_option', 'section_border_for', 'show_format',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'paginate_options', 
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts',
            'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height','add_more_record_label_section','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("dropdown");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.picklist_single_select);
    }
    if (type_field == 'multiselect') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'default_value_field', 'default_value_dropdown_simple','default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'minimum_characters', 'maximum_characters', 'placeholder_field', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_options',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf_help', 'rich_text', 'display_inline_inputs', 'dropdown-options-labels', 'position-label-section', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts',
            'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("multiselect");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.multiselect);
    }
    if (type_field == 'email') {
        var fields_to_hide = [
            'label-textarea', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'dropdown-options', 'encrypted', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'minimum_characters', 'maximum_characters', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values',
            'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for', 'display_inline_inputs',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block div.field_validate').find('label').first().text(window.translation.confirm_email + '?');
        $('.form_builder_block select[name="type_field"]').val("email");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.email);
    }
    if (type_field == 'password') {
        var fields_to_hide = [
            'label-textarea', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'dropdown-options', 'default_value_field', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'maximum_characters', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines', 'section_border_option', 'section_border_for', 'display_inline_inputs',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'copy_to_hidden', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt',
            'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block div.field_validate').find('label').first().text(window.translation.confirm_password + '?');
        $('.form_builder_block select[name="type_field"]').val("password");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.password);
    }
    if (type_field == 'phone') {
        var fields_to_hide = [
            'label-textarea', 'rows', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'dropdown-options', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'maximum_characters', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values',
            'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for', 'display_inline_inputs',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_currentContactAccountID', 'option_browser_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("phone");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.phone);
    }
    if (type_field == 'datetime') {
        var fields_to_hide = [
            'label-textarea', 'rows', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'dropdown-options', 'default_value_dropdown_simple', 'default_value_multiselect',
            'maximum_characters', 'date_format', 'minimum_characters', 'extension_allowed', 'checkbox_option','checkbox_default', 'placeholder_field', 'time_format', 'list_view_values',
            'option_opptype', 'option_userId', 'option_currentAccountID', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'decimal_mark', 'currency', 'private_file', 'display_inline_inputs',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'allow_current_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt',
            'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("datetime");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.datetime);
    }
    if (type_field == 'file') {
        var fields_to_hide = [
            'label-textarea', 'rows', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'dropdown-options', 'default_value_field', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'placeholder_field', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'decimal_mark', 'currency',
            'rich_text', 'read_only', 'field_visibility', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option',
            'related_files', 'salesforce_library', 'related_field_object', 'display_inline_inputs',
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel', 'custom_cancel_url',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt',
            'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];

        var isGlobalAdmin = $('.form_builder_block input[name="is-global-user"]').val() == 'true';
        if (!isGlobalAdmin) {
            if (IS_LLAMAPI_ENABLED) {
                fields_to_hide = [
                    'label-textarea', 'rows', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'dropdown-options', 'default_value_field', 'default_value_dropdown_simple', 'default_value_multiselect',
                    'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'placeholder_field', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values',
                    'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'paginate_options', 'auto_suggest', 'is_label_diferent_section', 'decimal_mark', 'currency',
                    'rich_text', 'read_only', 'field_visibility', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
                    'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines', 'section_border_option', 'section_border_for', 'show_format',
                    'related_files', 'salesforce_library', 'related_field_object', 'display_inline_inputs',
                    'record_to_relate', 'title_field', 'additional-buttons-for-ars',
                    'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel', 'custom_cancel_url',
                    'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height'
                    , 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
                ];
            }
            else {
                fields_to_hide = [
                    'label-textarea', 'rows', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'dropdown-options', 'default_value_field', 'default_value_dropdown_simple', 'default_value_multiselect',
                    'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'placeholder_field', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values',
                    'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'paginate_options', 'auto_suggest', 'is_label_diferent_section', 'decimal_mark', 'currency',
                    'rich_text', 'read_only', 'field_visibility', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
                    'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines', 'section_border_option', 'section_border_for', 'show_format',
                    'related_files', 'salesforce_library', 'related_field_object', 'display_inline_inputs',
                    'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
                    'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel', 'custom_cancel_url',
                    'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height',
                    'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
                ];
            }            
        }

        $('.form_builder_block select[name="type_field"]').val("file");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.file_upload);
        $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
        $('#form-builder-block .field_to_mention_section').addClass("hidden");

        //loadSfLibraries("");
    }
    if (type_field == 'number') {
        var fields_to_hide = [
            'label-textarea', 'rows', 'field_validate', 'encrypted', 'dropdown-options', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'extension_allowed', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values',
            'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'record_to_relate', 'title_field', 'payment_component_section', 'display_inline_inputs', 'display_picklist_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("number");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.number);
    }
    if (type_field == 'description') {
        var fields_to_hide = [
            'is_required', 'label_field', 'helptext_field', 'hide_label', 'align_label_section', 'encrypted', 'rows', 'field_validate', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'dropdown-options', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'extension_allowed', 'placeholder_field', 'default_value_field', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'read_only', 'field_visibility', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'additional-buttons-for-ars', 
            'record_to_relate', 'title_field', 'payment_component_section', 'display_inline_inputs',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'copy_to_hidden', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session',
            'add_more_record_label_section', 'pull_values_sf_source','do_not_save_field_to_database','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("description");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.description);
    }
    if (type_field == 'submit') {
        var fields_to_hide = [
            'is_required', 'label-textarea', 'helptext_field', 'hide_label', 'align_label_section', 'encrypted', 'rows', 'field_validate', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'dropdown-options', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'extension_allowed', 'placeholder_field', 'default_value_field', 'checkbox_option','checkbox_default', 'type_field', 'default_datetime','hide_placeholder', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'salesforce-mapping-section', 'read_only', 'field_visibility', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines', 'section_border_option', 'section_border_for', 'show_format',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 
            'record_to_relate', 'title_field', 'payment_component_section', 'display_inline_inputs',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'copy_to_hidden',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'pull_values_sf_source','do_not_save_field_to_database',,'is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];

        if ($('.form_builder_block input[name="enable_add_records_button"]').val() !== "true") {
            fields_to_hide.push('add_more_record_label_section')
        }

        $('.form_builder_block select[name="type_field"]').val("submit");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.submit);
    }
    if (type_field == 'radio') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'textRatingScale', 'scale_color_section', 'minimum_value', 'maximum_value', 'encrypted', 'default_value_field', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'minimum_characters', 'maximum_characters', 'placeholder_field', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_options', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'currency', 'decimal_mark', 'private_file',
            'pull_values_from_sf_help', 'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 
            'record_to_relate', 'title_field', 'payment_component_section', 'additional-buttons-for-ars',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt',
            'values-for-the-prompt', 'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("radio");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.radio);
    }
    if (type_field == 'checkbox') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'default_value_field', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'minimum_characters', 'maximum_characters', 'placeholder_field', 'dropdown-options', 'default_value_dropdown_simple', 'default_datetime','hide_placeholder', 'list_view_options', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'additional-buttons-for-ars',
            'record_to_relate', 'title_field', 'payment_component_section', 'display_inline_inputs',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("checkbox");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.checkbox);
    }
    if (type_field == 'currency') {
        var fields_to_hide = [
            'label-textarea', 'rows', 'field_validate', 'dropdown-options', 'encrypted', 'default_value_dropdown_simple', 'default_value_multiselect', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'extension_allowed', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values',
            'option_userId', 'option_currentAccountID', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest', 'paginate_options', 'paginate_options', 'is_label_diferent_section', 'decimal_places', 'private_file',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'additional-buttons-for-ars',
            'record_to_relate', 'title_field', 'payment_component_section', 'display_inline_inputs',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("currency");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.currency);
    }

    if (type_field == 'url') {
        var fields_to_hide = [
            'label-textarea', 'field_validate', 'rows', 'decimal_places', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'encrypted', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'extension_allowed', 'dropdown-options', 'checkbox_option','checkbox_default', 'default_datetime','hide_placeholder', 'list_view_values', 'auto_suggest', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'maximum_characters', 'minimum_characters', 'can_use_any_tokens', 'default_value_field',
            'rich_text', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 'show_format',
            'step_value', 'number_validation_text', 'columns_number', 'include_grid_lines','section_border_option','section_border_for',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object',  'additional-buttons-for-ars',
            'record_to_relate', 'title_field', 'payment_component_section', 'display_inline_inputs',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items', 'submit_cancel',
            'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt', 'help_chat_gpt_prompt',
            'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("url");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text('URL');
    }

    if (type_field == 'section') {

        var fields_to_hide = [
            'is_required', 'label-textarea', 'helptext_field', 'encrypted', 'rows', 'field_validate', 'decimal_places', 'field_validate', 'display_as_section', 'display_picklist_section', 'scale_color_section', 'textRatingScale', 'minimum_value', 'maximum_value', 'dropdown-options', 'default_value_dropdown_simple', 'default_value_multiselect',
            'minimum_age', 'date_format', 'field_allow_time', 'time_format', 'maximum_characters', 'minimum_characters', 'extension_allowed', 'placeholder_field', 'default_value_field', 'checkbox_option','checkbox_default', 'type_field', 'default_datetime','hide_placeholder', 'list_view_values',
            'can_use_any_tokens', 'option_opptype', 'option_userId', 'option_currentDate', 'option_currentDate_submit', 'auto_suggest','paginate_options', 'is_label_diferent_section', 'currency', 'decimal_mark', 'private_file',
            'rich_text', 'salesforce-mapping-section', 'read_only', 'field_visibility', 'max_number_options', 'min_number_options', 'position-label-section', 'display_as_checkboxes', 'number_of_columns_checkbox', 
            'step_value', 'number_validation_text', 'display_inline_inputs', 'align_label_section', 'show_format',
            'related_files', 'salesforce_library', 'save_in_salesforce', 'multiple_files', 'related_field_object', 'additional-buttons-for-ars',
            'record_to_relate', 'title_field', 'payment_component_section',
            'only_future', 'only_past', 'allow_current_date', 'max_days_in_future', 'max_days_in_past', 'depends_another_date', 'rule_to_validate', 'validator_date_field', 'dropdown-options-reloaded', 'dropdown-options-labels', 'file_image', 'file_image_width', 'file_image_height', 'calculate_items',
            'copy_to_hidden', 'submit_cancel', 'addresscomponent_section_options', 'mentions_textarea', 'validatior_code_text', 'chat_gpt_prompt', 'label_field_gpttext_btn', 'chat_gpt_by_ia', 'chat_gpt_text_area_mode', 'chat_gpt_allow_enter_complete_prompt', 'chat_gpt_allow_multiple_pre_define_prompts', 'labels-for-the-prompt', 'values-for-the-prompt',
            'help_chat_gpt_prompt', 'option_field_phone', 'option_field_phone_session', 'max_height', 'add_more_record_label_section', 'pull_values_sf_source','do_not_save_field_to_database','is_maximum_value_of_another_field','is_minimum_value_of_another_field','is_include_non_visible_fields','field_maximum_value','field_minimum_value','field_validate_confirm_text','include_signature_transaction_info'
        ];
        $('.form_builder_block select[name="type_field"]').val("section");
        HideSpecificFieldsFormBuilder(fields_to_hide);
        $('.form_builder_block .field-configuration > h3.title').text(window.translation.section);
    }

    $('.form_builder_block .field-configuration').removeClass("hidden");


}

function EventsAddTimeToPreview() {
    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block input[name="field_allow_time"]', async function () {
        await AjaxLoadSalesForceFields('0', false);
        if ($('.form_builder_block input[name="field_allow_time"]:checked').length > 0) {
            $('.form_builder_block .form-preview .field-row.active .right').find('.time').remove();
            var time_markup = GetMarkupTime();
            $('.form_builder_block .form-preview .field-row.active .right').append(time_markup);
        } else {
            $('.form_builder_block .form-preview .field-row.active .right').find('.time').remove();
        }
    });
    $(document).on('change', '.form_builder_block select[name="time_format"]', function () {
        if ($('.form_builder_block input[name="field_allow_time"]:checked').length > 0) {
            $('.form_builder_block .form-preview .field-row.active .right').find('.time').remove();
            var time_markup = GetMarkupTime();
            $('.form_builder_block .form-preview .field-row.active .right').append(time_markup);
        } else {
            $('.form_builder_block .form-preview .field-row.active .right').find('.time').remove();
        }
    });
}

function AddTimeToPreview() {

    if (!is_backend_page()) return;
    if ($('.form_builder_block input[name="field_allow_time"]:checked').length > 0) {
        $('.form_builder_block .form-preview .field-row.active .right').find('.time').remove();
        var time_markup = GetMarkupTime();
        $('.form_builder_block .form-preview .field-row.active .right').append(time_markup);
    } else {
        $('.form_builder_block .form-preview .field-row.active .right').find('.time').remove();
    }
}

function DeleteFieldtype() {
    if (!is_backend_page()) return;
    $(document).on('click', '#form-builder-block .form-preview .delete-field', function () {
        var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
        var fieldInPageRule = $(this).attr('data-page-rule');
        var message = window.translation.delete_field;
        if ($(this).hasClass('has-page-rule-related')) {
            message = 'Are you sure to delete this field? There is a page rule associated with this field. If you delete the field, the page rule will be deleted';
        }
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var elementId = $(this).data('element-id');
        var typeElement = $(this).parent().parent().data('type-field');
        if (typeElement === 'section') {
            message = window.translation.delete_section;
        }

        Swal.fire({
            title: window.translation.delete,
            text: message,
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#ff0000',
            confirmButtonText: window.translation.true_text,
            cancelButtonText: window.translation.false_text,
            closeOnConfirm: true

        }).then(function (result) {
            if (result.isConfirmed) {
                // inactive field-row to
                jsonData = GetLocalFormBuilderStorage();
                //var rulesJson = localStorage.getItem("display-logic-rules");
                var rulesJson = sessionStorage.getItem("display-logic-rules");
                if (jsonData != "" && jsonData != null) {
                    var json = JSON.parse(jsonData);
                    var band = false;
                    var toDelete = [parseInt(elementId)];
                    if (typeElement === 'section' || typeElement ==="addresscomponent" ) {//to drop their childen
                        $('.form_builder_block .form-preview .field-row[data-element-id="' + elementId + '"] .section-container .field-row').each(function () {
                            var itemId = $(this).data('element-id');
                            toDelete.push(parseInt(itemId));
                        });
                    }
                    json.forEach(function (item) {
                        if (toDelete.includes(parseInt(item.elementId)) === true) {
                            item.delete = true;
                        }
                    });
                    setDataToSessionStore(json, formTokenStore);
                    //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(json));
                    $('.form_builder_block .form-preview .field-row[data-element-id="' + elementId + '"]').addClass('hidden');
                    $('.form_builder_block .form-preview .field-row[data-element-id="' + elementId + '"]').removeClass('active');
                    $('.form_builder_block .field-configuration').addClass("hidden");
                    $('.form_builder_block .field-list').removeClass('hidden');
                    $("#form_changed").val(false);
                    $(".form_builder_block button.save_field").removeClass("pending_changes");
                    $(".form_builder_block .submit-row").trigger("click");
                    recalculateHiddenNames();
                    if (jsonData != null && jsonData != '') {
                        var blockId = $('.form_builder_block #form-builder input[name=block_id]').val();

                        $.ajax({
                            method: "POST",
                            url: urlSite + "Admin/UpdateDisplayRules",
                            async: false,
                            data: { rulesJson: rulesJson, fieldsJson: jsonData, elementId: elementId, rulePageId: fieldInPageRule }
                        }).done(function (data) {
                            jsonData = JSON.parse(data);

                            if (jsonData.status == 200 && jsonData.deletedRules != null) {
                                jsonData.deletedRules.forEach(function (item) {
                                    var logicLink = $('a[data-element-reveal="ars-display-logic"][data-rule-id="' + item.ruleId + '"]');

                                    if (logicLink.hasClass('active')) {
                                        logicLink.removeClass('active');
                                    }
                                });
                            }
                            else if (jsonData.status == 500) {
                                Swal.fire({
                                    title: "",
                                    icon: "error",
                                    text: jsonData.message,
                                    confirmButtonText: "Ok",
                                });
                            }


                            if (jsonData.status == 200) {
                                if (fieldInPageRule > 0) {

                                    $('body.backend-page #vol-workflow-form').find('div.has-special-rule').each(function () {

                                        var prId = $(this).attr('data-rule-id');

                                        if (prId == fieldInPageRule) {
                                            $(this).remove();

                                        }
                                    });
                                }

                            }

                            return false;
                        });
                    }
                }

            } else {
                Swal.close();

            }
        });

    });
}

function GetMarkupTime() {
    if (!is_backend_page()) return;
    var format = $("#form-builder-block select[name='time_format']").val();
    var time_markup = "";
    if (format == "0") {
        time_markup = '<div class="time"><input id="hour" name="hour" type="number" placeholder="12"><span>:</span><input id="minute" name="minute" type="number" placeholder="45"></div>';
    }
    if (format == "1") {
        time_markup = '<div class="time"><input id="hour" name="hour" type="number" placeholder="12"><span>:</span><input id="minute" name="minute" type="number" placeholder="45">' +
            '<span>:</span><select name="format_time" > <option value="0">AM</option> <option value="1">PM</option></select></div>';
    }
    return time_markup;
}

function EventsValidateRequiredField() {
    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block input[name="is_required"]', function () {
        if ($('.form_builder_block input[name="is_required"]:checked').length >= 1) {
            $(".form_builder_block .field-row.active .label_preview").removeClass("required");
            $(".form_builder_block .field-row.active .label_preview").addClass("required");
        } else {
            $(".form_builder_block .field-row.active .label_preview").removeClass("required");
        }
    });
}

function ValidateRequiredField() {

    if (!is_backend_page()) return;
    // Validating if input is required
    if ($('.form_builder_block input[name="is_required"]:checked').length >= 1) {
        $(".form_builder_block .field-row.active .label_preview").removeClass("required");
        $(".form_builder_block .field-row.active .label_preview").addClass("required");
    }
    else {
        $(".form_builder_block .field-row.active .label_preview").removeClass("required");
    }

}

function EventsValidateIfHideLabel() {
    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block input[name="hide_label"]', function () {
        if ($('.form_builder_block input[name="hide_label"]:checked').length >= 1) {
            $(".form_builder_block .field-row.active .label_preview").first().addClass('hidden');
        } else {
            $(".form_builder_block .field-row.active .label_preview").first().removeClass('hidden');
        }
    });
    
}

function ValidateifHideLabel() {

    if (!is_backend_page()) return;
    if ($('.form_builder_block input[name="hide_label"]:checked').length >= 1) {
        $(".form_builder_block .field-row.active .label_preview").first().addClass('hidden');
    } else {
        $(".form_builder_block .field-row.active .label_preview").first().removeClass('hidden');
    }

    var value = $('.form_builder_block select[name="display_as"]').val();
    
    if ($('.form_builder_block input[name="show_format"]:checked').length >= 1) {
        $(".form_builder_block .field-row.active .step_value").addClass('hidden');
    } else {
        $(".form_builder_block .field-row.active .step_value").removeClass('hidden');
    }
    
}

function AddFieldsToPreview(typeField, dragdrop, selector, target) {

    var dragdrop = dragdrop || false;
    var selector = selector || null;
    var form_preview = $('.form_builder_block .form-preview');
    var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();

    $('#form-builder-block').find('input[name="last-type-field-selected"]').val(typeField);

    // inactive field-row to set one new field active
    form_preview.find('.field-row').removeClass('active');
    form_preview.find('.submit-row').removeClass('active');
    if (GetQuantityElementsFormBuilder() > 0) {
        numElement = GetQuantityElementsFormBuilder() + 1;
        dataOrder = numElement - 1;
    } else {
        numElement = 1;
        dataOrder = 0;
    }

    form_preview.find(".blank-text").addClass("hidden");

    var specialClass = "";
    var isLlamaSiteExternalRgistration = false;
    if (IS_LLAMAPI_ENABLED == true && (active_from_registration == true || active_from_update_user_information == true)) {

        specialClass = "external-registration-username";
        $('#form-builder-block').find('.field-configuration input[name="is_required"]').prop("checked", true);
        isLlamaSiteExternalRgistration = true;
    }

    var rowfield = '<div data-element-id="' + numElement + '" class="field-row active ' + specialClass + '" data-type-field="' + typeField + '" data-order="' + dataOrder + '" data-block-name="' + typeField + '">'
                    + '<div class="content">'
                        + '<div class="left">'
                            + '<label class="label_preview">' + GetLabelField(typeField)+ '</label>'
                        + '</div>'
                        + '<div class="right">'
                             + FieldContentPreview(typeField, "")
                        + '</div>'
                    + '</div>'
                    + '<div class="options">'
                        + '<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="' + typeField + '" title="' + typeField + '" class="logic"  data-element-id="' + numElement + '">' + window.translation.logic + '</a>'
                        + '<a data-type-field="' + typeField + '" title="' + typeField + '" class="edit-field"  data-element-id="' + numElement + '"></a>'
                        + (!isLlamaSiteExternalRgistration ? '<a title="Delete Field" class="delete-field" data-element-id="' + numElement + '"></a>':'')
                        + '<span class="move" data-element-id="' + numElement + '"></span>'
                    + '</div>'
                + '</div>';

    if (typeField == 'description') {
        rowfield = '<div data-element-id="' + numElement + '" class="field-row active" data-type-field="' + typeField + '" data-order="' + dataOrder + '" data-block-name="' + typeField + '">'
            + '<div class="content">'
            + '<div class="right-full">'
            + FieldContentPreview(typeField, "")
            + '</div>'
            + '</div>'
            + '<div class="options">'
            + '<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="' + typeField + '" title="' + typeField + '" class="logic"  data-element-id="' + numElement + '">' + window.translation.logic + '</a>'
            + '<a data-type-field="' + typeField + '" title="' + typeField + '" class="edit-field" data-field-id="0" data-rule-id="0" data-element-id="' + numElement + '"></a>'
            + '<a title="Delete Field" class="delete-field"  data-element-id="' + numElement + '"></a>'
            + '<span class="move" data-element-id="' + numElement + '"></span>'
            + '</div>'
            + '</div>';
    }
    else if (typeField == 'hidden') {
        rowfield = '<div data-element-field-id="'+numElement+'" data-element-id="' + numElement + '" class="field-row active" data-type-field="' + typeField + '" data-order="' + dataOrder + '" data-block-name="' + typeField + '">'
            + '<div class="content">'
            + '<div class="left">'
            + '<label class="label_preview">' + GetLabelField(typeField) + '#' + $(selector).data('hidden-name') + '</label>'
            + '</div>'
            + '<div class="right">'
            + FieldContentPreview(typeField, "")
            + '</div>'
            + '</div>'
            + '<div class="options">'
            + '<a data-type-field="' + typeField + '" title="' + typeField + '" class="edit-field"  data-element-id="' + numElement + '"></a>'
            + '<a title="Delete Field" class="delete-field" data-element-id="' + numElement + '"></a>'
            + '<span class="move" data-element-id="' + numElement + '"></span>'
            + '</div>'
            + '</div>';
    } else if (typeField == 'section') {
        rowfield = '<div data-element-id="' + numElement + '" class="field-row active" data-type-field="' + typeField + '" data-order="' + dataOrder + '" data-block-name="' + typeField + '">'
            + '<div class="content content-section">'
            + FieldContentPreview(typeField, "")
            + '</div>'
            + '<div class="options">'
            + '<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="' + typeField + '" title="' + typeField + '" class="logic"  data-element-id="' + numElement + '">' + window.translation.logic + '</a>'
            + '<a data-type-field="' + typeField + '" title="' + typeField + '" class="edit-field"  data-element-id="' + numElement + '"></a>'
            + '<a title="Delete Field" class="delete-field" data-element-id="' + numElement + '"></a>'
            + '<span class="move" data-element-id="' + numElement + '"></span>'
            + '</div>'
            + '<div class="section-container">'
            + '</div>'
            + '</div>';
    } else if (typeField == 'paymentcomponent') {
        rowfield = '<div data-element-id="' + numElement + '" class="field-row active" data-type-field="' + typeField + '" data-order="' + dataOrder + '" data-block-name="' + typeField + '">'
            + '<div class="content content-section">'
            + FieldContentPreview(typeField, "")
            + '</div>'
            + '<div class="options">'
            + '<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="' + typeField + '" title="' + typeField + '" class="logic"  data-element-id="' + numElement + '">' + window.translation.logic + '</a>'
            + '<a data-type-field="' + typeField + '" title="' + typeField + '" class="edit-field"  data-element-id="' + numElement + '"></a>'
            + '<a title="Delete Field" class="delete-field" data-element-id="' + numElement + '"></a>'
            + '<span class="move" data-element-id="' + numElement + '"></span>'
            + '</div>'
            + '</div>';

    } else if (typeField == 'addresscomponent') {
        rowfield = build_address_component_preview(numElement);
    }
    //  If adding preview field from drag & drop from fields
    if(dragdrop) {
        //  It's droped at first position
        if(selector.prev().length == 0) {
            target.prepend(rowfield);
        } else {
            selector.prev().after(rowfield);
        }
        selector.remove();
    }
    else {
        //form_preview.find(".row-fields").append(rowfield);
        if(form_preview.find(".row-fields .submit-row").length){
            $( rowfield ).insertBefore( form_preview.find(".row-fields .submit-row") );
            var weightHTML = 0;
            $('.row-fields.container-form').find('.field-row').each(function(){
                $(this).attr('data-order', weightHTML);
                weightHTML = weightHTML + 1;
            });
        }else{
            form_preview.find(".row-fields").append(rowfield);
        }
        
        $('.form_builder_block .form-preview').animate({
            scrollTop: 600
        }, 2000);
    }

    //if it is address component sauto choose the father

    // cleaning value for salesforce_field
    $('select[name="salesforce_field"]').val("");
    ShowSubmitButtonFormBuilder();
    ValidateRequiredField();
    ValidateifHideLabel();

    $("#form_changed").val(true);
    $(".form_builder_block button.save_field").addClass("pending_changes");
    // re-initialize multiselects
    $('.form_builder_block .form-preview select[multiple]').multiselect();

    // Creating object to save in localstorage
    JsonObject = new Object();

    if (typeField !== 'addresscomponent') {
        JsonObject.elementId = numElement;
        JsonObject.typeField = typeField;
        JsonObject.delete = false;
        JsonObject.weight = numElement;
        JsonObject.ruleId = 0;
        JsonObject.fieldId = 0;
        JsonObject.properties = $('.form_builder_block form').serializeArray();
        JsonObject.sectionId = '';
    }
    // it is necessary realculate it
    if (typeField == 'addresscomponent') {
        $(".form_builder_block input[name='element-id']").val((numElement +7));
    }
    else {
        $(".form_builder_block input[name='element-id']").val(numElement);
    }

    var jsonData = GetLocalFormBuilderStorage();

    if (jsonData != "" && jsonData != null) {
        var json = JSON.parse(jsonData);
        var band = false;
        json.forEach(function (item) {
            if (item.typeField === 'submit') {
                item.elementId = 0;
                if(typeField === 'addresscomponent')
                    band = true;
            }
            if (typeField !== 'addresscomponent' && parseInt(item.elementId) === parseInt(JsonObject.elementId)) {

                item.typeField = JsonObject.typeField;
                item.delete = JsonObject.delete;
                item.properties = JsonObject.properties;
                item.weight = JsonObject.weight;
                item.sectionId = JsonObject.sectionId; 
                band = true;
            }
        });
        if (band == false) {

            if(typeField !== 'addresscomponent')
                json.push(JsonObject);
            setDataToSessionStore(json, formTokenStore);
            //localStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(json));
        } else {
            setDataToSessionStore(json, formTokenStore);
            //localStorage.setItem("json-form-builder-data" + formTokenStore, JSON.stringify(json));
        }

    } else {
        jsonData = [];
        jsonData.push(JsonObject);
        setDataToSessionStore(jsonData, formTokenStore);
        //localStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(jsonData));
    }

    if (typeField == 'addresscomponent') {
        let parent = form_preview.find('div.field-row[data-element-id="' + numElement + '"]');
        parent.trigger('click')
    }
}

function DisplayLogicConfig() {
    if (!is_backend_page()) return;

    $(document).on('click', 'a[data-element-reveal="ars-display-logic"]', function () {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();

        var forSubmitButton = $(this).attr('data-for-submit');

        $('.info-for-submit').hide();
        if (forSubmitButton != null && forSubmitButton != undefined && forSubmitButton === 'true') {
            $('.info-for-submit').show();
        }

        if (!$(this).hasClass('disabled')) {
            var elementReveal = $(this).data('element-reveal');
            $('#' + elementReveal).foundation();
            var typeField = $(this).data('type-field');
            var elementId = $(this).data('element-id');
            var ruleId = $(this).attr('data-rule-id');
            var fieldId = $(this).attr('data-field-id');
            var formId = $('#form-builder input[name=form-id]').val();

            $('#' + elementReveal + ' input[name=element-id]').val(elementId);
            $('#' + elementReveal + ' input[name=field-id]').val(fieldId);
            $('#' + elementReveal + ' input[name=form-id]').val(formId);
            $('#' + elementReveal + ' input[name=rule-id]').val(ruleId);
            $('#' + elementReveal + ' input[name=type]').val(typeField);
            if(parseInt(ruleId) == 0 || (parseInt(ruleId) != 0 && !$(this).hasClass('active'))){
                $('.conditions').empty();

                var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);

                if (varJson != null && varJson != '') {
                    var fields = JSON.parse(varJson);
                    var sufix = 1;

                    DisplayLogicConditions(fields, null, null, null, sufix, elementId, elementReveal);
                    sufix++;
                    $('input[name="cond_sufix"]').val(sufix);
                }
            }
            else if(parseInt(ruleId) != 0 && $(this).hasClass('active')){
                $('.conditions').empty();

                $.ajax({
                    method: "POST",
                    url: urlSite + "ARS/GetDisplayRuleInfo",
                    data: { ruleId : ruleId },
                    beforeSend: function () {
                        $('#' + elementReveal + ' .processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if(jsonResult.status == '200'){
                        if(jsonResult.any_all != null){
                            $('select[name="and_or"]').val(jsonResult.any_all);
                        }
                        if (jsonResult.show_hide != null) {
                            var current_val_hide = jsonResult.show_hide;
                            $('select[name="show_hide"]').val(current_val_hide).change();
                            $(document).ajaxComplete(function(event, xhr, settings) {
                                show_hide_always(current_val_hide);
                            });
                        }
                        if(jsonResult.condition != null){
                            $.ajax({
                                method: "POST",
                                url: urlSite + "ARS/GetDisplaySelectedFields",
                                data: { conditions : JSON.stringify(jsonResult.condition), fieldName : jsonResult.fieldName},
                            }).done(function (dataInner) {
                                var jsonInnerResult = JSON.parse(dataInner);
                                var sufix = 1
                                var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);
                                if (varJson != null && varJson != '') {
                                    var fields = JSON.parse(varJson);

                                    jsonInnerResult.forEach(function (item) {
                                        DisplayLogicConditions(fields, item.field, item.op, item.data, sufix, null, elementReveal);
                                        sufix++;
                                    });
                                    $('input[name="cond_sufix"]').val(sufix);
                                }
                                $('#' + elementReveal + ' .processing_screen').hide();
                            });
                        }
                        else{
                            $('#' + elementReveal + ' .processing_screen').hide();
                        }
                    }
                    else{
                        $('#' + elementReveal + ' .processing_screen').hide();
                    }
                    $('#' + elementReveal).foundation('open');
                });
            }
            var namefield = $(this).parent().parent().find(".content .label_preview").first().text();
            if (namefield == "") {
                namefield = typeField;
            }
            $('#' + elementReveal + ' .for-title').text(namefield);
            $('#' + elementReveal).foundation('open');
        }
    });
    $(document).on('change', '#display_logic_form select[name="show_hide"]', function () {
        show_hide_always($(this).val());
    });
}

function show_hide_always(current_show_hide_val){
        if (current_show_hide_val == 2) {
            $('#display_logic_form .conditions').addClass('disable');
            $('#display_logic_form .conditions-logic').hide();
            $('#display_logic_form .conditions .columns .row').hide();
        }else{
            $('#display_logic_form .conditions').removeClass('disable');
            $('#display_logic_form .conditions-logic').show();
            $('#display_logic_form .conditions .columns .row').show();
        }
}

function AddDisplayCondition() {
    if (!is_backend_page()) return;
    $(document).on('click', 'a.add-dcondition', function () {
        var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();

        var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);
        var elementReveal = $(this).parents('form').prop('id');
        if (varJson != null && varJson != '') {
            var fields = JSON.parse(varJson);
            var sufix = parseInt($('input[name="cond_sufix"]').val());
            DisplayLogicConditions(fields, null, null, null, sufix, null, elementReveal);
            sufix++;
            $('input[name="cond_sufix"]').val(sufix);
        }
    });
}

function DisplayLogicConditions(jsonFields, def_field, def_op, def_data, sufix, elementId, elementReveal) {
    var item = '<div class="row condition">'
        + '<div class="small-11 columns">'
            + '<div class="row">'
                + '<div class="columns small-4">'
                    + '<div class="row">'
                        + '<select name="display_fields_' + sufix + '" data-required="true" class="inline display_fields" aria-invalid="false">'
                            + DynamycFieldsOption(jsonFields, elementId)
                        + '</select>'
                    + '</div>'
                + '</div>'
                + '<div class="columns small-4">'
                    + '<div class="row">'
                        + '<select name="display_operator_' + sufix + '" data-required="true" class="inline display_operator" aria-invalid="false">'
                            + '<option value="==">' + translation.equals_to + '</option>'
                            + '<option value="!=">' + translation.not_equals_to + '</option>'
                          
                        + '</select>'
                    + '</div>'
                + '</div>'
                + '<div class="columns small-4">'
                    + '<div class="row">'
                        + '<select name="display_data_' + sufix + '" data-required="true" class="inline display_data" aria-invalid="false">'
                            + '<option value="">' + translation.select_one + '</option>'
                        + '</select>'
                    + '</div>'
                + '</div>'
            + '</div>'
        + '</div>'
        + '<div class="small-1 columns">'
            + '<a data-element-reveal="" title="Remove Condition" class="remove-condition"></a>'
        + '</div>'
    + '</div>';

    var object = $(item);
    $('.conditions').append(object);

    if (def_field != null) {
        $('#' + elementReveal + ' select[name="display_fields_' + sufix + '"]').last().val(def_field);
        $('#' + elementReveal + ' select[name="display_fields_' + sufix + '"]').first().focus();

        var elementId = $('#' + elementReveal + ' select[name="display_fields_' + sufix + '"] option[value="' + def_field + '"]').data('element-id');
        var type = GetTypeFieldById(jsonFields, elementId);

        DisplayDataFields($('#' + elementReveal + ' select[name="display_fields_' + sufix + '"]').last(), type, elementId, def_data);
    }
    else{
        $('#' + elementReveal + ' select[name="display_fields_' + sufix + '"]').last().focus();
    }
    if(def_op != null){
        $('#' + elementReveal + ' select[name="display_operator_' + sufix + '"]').last().val(def_op);
        if (def_op === '_equal_empty_' || def_op === '_not_equal_empty_') {

            var type = GetTypeFieldById(jsonFields, elementId);
            var selector = '';
            if (type === 'dropdown') {
                selector = '#' + elementReveal + ' select[name="display_data_' + sufix + '"]';
            } else if (type === 'number') {
                selector = '#' + elementReveal + ' input[name="display_data_' + sufix + '"]';
            } else if (type === 'multiselect') {
                selector = '#' + elementReveal + ' select[name="display_data_' + sufix + '"]';
            }
            if (selector !== '') {
                $(selector).hide();
            }

        }
    }

    if (def_data != null) {
        $('#' + elementReveal + ' [name="display_data_' + sufix + '"]').last().val(def_data);
    }
}

function GetTypeFieldById(jsonFields, elementId) {
    var type = '';

    jsonFields.forEach(function (item) {
        if (elementId != null && item.elementId == elementId) {
            type = item.typeField;
        }
    });

    return type;
}

function DynamycFieldsOption(jsonFields, elementId) {
    var cad = ' <option value = \"\" >' + translation.select_one + ' </option >';
    

    jsonFields.forEach(function (item) {
        item.properties.forEach(function(property) {
            var _label = 'label-' + window.translation.language;
            if((elementId == null || (elementId != null && item.elementId != elementId)) &&
               property.name == _label &&
               item.delete == false &&
               (item.typeField == 'dropdown' || 
                item.typeField == 'radio' || 
                item.typeField == 'checkbox' || 
                item.typeField == 'number' ||
                item.typeField == 'calculate' ||
                item.typeField == 'multiselect'))
            {
                var field_id = parseInt(item.fieldId);
                var machineName = GetFieldMachineName(property.value, field_id, item.elementId);
                cad += ' <option value = \"' + machineName + '\" data-element-id=\"' + item.elementId + '\" data-type=\"' + item.typeField + '\">' + property.value + ' </option >';
            }
        });
    });

    
    return cad;
}


function CalculateItemsOptions(){
    if (!is_backend_page()) return;
    var elementId = $("#form-builder-block form input[name='element-id']").val();
    var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
    var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);
    var languageId = window.translation.language;
    var options = '';
    if (varJson != null && varJson != '') {
        var jsonFields = JSON.parse(varJson);
        jsonFields.forEach(function (item) {
            var label = '';
            if ((item.typeField == 'number' || item.typeField == 'currency' || item.typeField == 'percent') && item.delete == false) {            

                item.properties.forEach(function (property) {
                    if (property.name == 'label-'+languageId) {
                        label = property.value;
                    }
                });
                if (item.fieldId != 0) {
                    options += '<option value="' + item.fieldId + '">' + label + '</option>';
                }
                else {
                    options += '<option value="-' + item.elementId + '">' + label + '</option>'; 
                }
                
            }
        });
    }
    return options;
}


function DatatimeFieldsOptions() {
    if (!is_backend_page()) return;
    var elementId = $("#form-builder-block form input[name='element-id']").val();
    var totalOptions = 0;
    var cad = ' <option value = \"\" >' + translation.select_one + ' </option >';

    var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
    var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);
    if (varJson != null && varJson != '') {
        var jsonFields = JSON.parse(varJson);

        jsonFields.forEach(function (item) {
            item.properties.forEach(function (property) {
                var _label = 'label-' + window.translation.language;
                if ((elementId == null || (elementId != null && item.elementId != elementId)) &&
                    property.name == _label &&
                    item.delete == false &&
                    (item.typeField == 'datetime')) {
                    var field_id = parseInt(item.fieldId);
                    var valueOption = field_id;
                    if (field_id == 0) {
                        valueOption = '[' + item.elementId + ']';
                    }
                    totalOptions = totalOptions + 1;
                    cad += ' <option value = \"' + valueOption + '\" data-type=\"' + item.typeField + '\">' + property.value + ' </option >';
                }
            });
        });
    }
    if (totalOptions == 0)
        return '';
    return cad;
}

function HiddenFieldsOptions() {
    if (!is_backend_page()) return;
    var elementId = $("#form-builder-block form input[name='element-id']").val();
    var totalOptions = 0;
    var cad = ' <option value = \"\" >' + translation.select_one + ' </option >';

    var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
    var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);
    if (varJson != null && varJson != '') {
        var jsonFields = JSON.parse(varJson);

        var hiddenFields = jsonFields.filter(it => it.typeField == 'hidden' && it.delete == false);

        hiddenFields.forEach(function (item) {

                var field_id = parseInt(item.fieldId);
                var valueOption = field_id;
                if (field_id == 0) {
                    valueOption = '[' + item.elementId + ']';
                }
                totalOptions = totalOptions + 1;
                var dataHidden = $('.field-row[data-element-id="' + item.elementId + '"]').attr('data-hidden-name');
                if (!dataHidden)
                    dataHidden = "Hidden";
                cad += ' <option value = \"' + valueOption + '\" data-type=\"' + item.typeField + '\">' + dataHidden + ' </option >';
                
        });
    }
    if (totalOptions == 0)
        return '';

    return cad;
}

function GetFieldMachineName(name, fieldId, elementId) {
    var reservedCharacters = [";", "/", "?", ":", "@", "=", "&"];

    $.each(reservedCharacters, function( index, value ) {
        name = name.replace(value, "");
    });
    // replace all string  spaces
    name = name.replace(/\s+/g, "_");
    if(fieldId == 0){
        name = "[" + elementId + "]";
    }
    else{
        name =  fieldId;
    }

    return name;
}

function DisplayFieldChange() {
    if (!is_backend_page()) return;
    $(document).on('change', 'select.display_fields', function () {
        var self = $(this);
        var type = $(this).find(':selected').data('type');
        var elementId = $(this).find(':selected').data('element-id');

        DisplayDataFields(self, type, elementId);
    });

    $(document).on('change', 'select.display_operator', function () {
        var value = $(this).val();
        var items = $(this).attr('name').split('_');
        var elementId = items[items.length - 1];
        var valueField = $('#ars-display-logic select[name="display_fields_' + elementId + '"]').val();
        var type = $('#ars-display-logic select[name="display_fields_' + elementId + '"]').find('option[value="' + valueField + '"]').attr('data-type');
        var selector = '';
        if (value === '_equal_empty_' || value === '_not_equal_empty_') {
            if (type === 'dropdown') {
                selector = '#ars-display-logic select[name="display_data_' + elementId + '"]';
            } else if (type === 'number') {
                selector = '#ars-display-logic input[name="display_data_' + elementId + '"]';
            } else if (type === 'multiselect') {
                selector = '#ars-display-logic select[name="display_data_' + elementId + '"]';
            }
            if (selector !== '') {
                $(selector).hide();
            }
        } else {
            if (type === 'dropdown') {
                selector = '#ars-display-logic select[name="display_data_' + elementId + '"]';
            } else if (type === 'number') {
                selector = '#ars-display-logic input[name="display_data_' + elementId + '"]';
            } else if (type === 'multiselect') {
                selector = '#ars-display-logic select[name="display_data_' + elementId + '"]';
            }
            if (selector !== '') {
                $(selector).show();
            }

        }
    });
}


async function LoadPicklistValues(salesforceObject, formId) {
    if (salesforceObject !== undefined && salesforceObject !== null && salesforceObject !== "") {
        var elementReveal = $(this).parents('form').prop('id');
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        let response = await $.ajax({
            method: "POST",
            url: urlSite + "Admin/GetAllValuesFromPicklist",
            data: { sfObject: salesforceObject },
            beforeSend: function () {
                activeLoading();
            }
        });
        if (response !== null && response !== undefined) {
            var dataResult = JSON.parse(response);

            if (dataResult.status === "ok") {
                let keyName = "sfPickList_" + formId + "_" + salesforceObject;
                sessionStorage.removeItem(keyName);
                sessionStorage.setItem(keyName, response);
                return response;
            }
        }
        return null;
    }
}


async function GetPickListValuesAll(sfObject, blockId) {
    let keyName = "sfPickList_" + blockId + "_" + sfObject;
    let data = sessionStorage.getItem(keyName);
    let dataResult = null;
    if (data === null || data === undefined) {
        data = await LoadPicklistValues(sfObject, blockId);
    }
    if (data !== null && data !== undefined) {
        dataResult = JSON.parse(data);
    }
    return dataResult;
}


async function GetPickListValuesForField(sfObject, blockId, sfField) {
    let dataField = null;
    let dataResult = await GetPickListValuesAll(sfObject, blockId);
    if (dataResult !== null && dataResult !== undefined &&
        dataResult.fields !== null && dataResult.fields !== undefined &&
        dataResult.fields.length > 0) {
        dataField = dataResult.fields.find((x) => x.FieldName == sfField);

    }
    return dataField;
}



function DisplayDataFields(self, type, elementId, defval) {
    var elementReveal = $(this).parents('form').prop('id');
    var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
    var blockId = $('#form-builder-block').find('input[name="block_id"]').val();
    var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);
    if(varJson != null && varJson != ''){
        var jsonFields = JSON.parse(varJson);
        var options = [];
        var fOp = self.closest('.condition').find('.display_operator');
        var fData = self.closest('.condition').find('.display_data');
        var fDataName = fData.attr('name');
        var fDataParent = fData.closest('.row');
        fDataParent.empty();
        fOp.find('option[value="_equal_empty_"], option[value="_not_equal_empty_"]').remove();
        fOp.find('option[value="_multicheck_include_"], option[value="_multicheck_notinclude_"]').remove();
        if(type != 'number' && type != 'calculate'){
            fDataParent.append('<select name="' + fDataName + '" data-required="true" class="inline display_data" aria-invalid="false"></select>');
            fData = self.closest('.condition').find('.display_data');
            fData.prop('disabled', 'disabled');
            fData.empty().append('<option value="">' + translation.select_one + '</option>');

            fOp.find('option[value=">"], option[value=">="], option[value="<"], option[value="<="], option[value="_equal_empty_"], option[value="_not_equal_empty_"]').remove();

            if (type != 'checkbox') {
                fOp.append('<option value="_equal_empty_">' + translation.is_equal_to_empty + '</option>'
                    + '<option value="_not_equal_empty_">' + translation.is_equal_not_empty + '</option>');


                jsonFields.forEach(async function (item) {

                    if (item.elementId == elementId) {
                        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

                        var valuesFromField = null;
                        var valuesFromView = null;
                        var valuesFromSF = item.properties.find(function(obj) {
                            return obj.name == 'option_from_source_sf';
                        });
                        
                        if (valuesFromSF != undefined && valuesFromSF != null) {
                            if (valuesFromSF.value == 1) {
                                valuesFromField = { value : "on" };
                            } else if (valuesFromSF.value == 2) {
                                valuesFromView = { value : "on" };
                            }
                        }
                        if (valuesFromField != undefined && valuesFromField != null && (valuesFromField.value == "on" || valuesFromField.value)) {

                            var _sfRefObject = item.properties.find(function (obj) {
                                return obj.name == 'reference_to_object';
                            });
                            var _sfRefField = item.properties.find(function (obj) {
                                return obj.name == 'salesforce_rel_field';
                            });

                            var _sfObject = item.properties.find(function (obj) {
                                return obj.name == 'salesforce_object';
                            });
                            var _sfField = item.properties.find(function(obj) {
                                return obj.name == 'salesforce_field';
                            });

                            _sfObject = (_sfRefObject && _sfRefObject.value != '' && _sfRefObject.value != null) ? _sfRefObject : _sfObject;
                            _sfField = (_sfRefField && _sfRefField.value != '' &&  _sfRefField.value != null) ? _sfRefField : _sfField;

                            let jsonData = await GetPickListValuesForField(_sfObject.value, blockId, _sfField.value);

                            if (jsonData !== null && jsonData !== undefined) {


                                fData.append('<optgroup label="Dropdown Values">');
                                $.each(jsonData['values'], function (i, option) {
                                    fData.append('<option value="' + option['value'] + '">' + option['label'] + '</option>');
                                });
                                fData.append('</optgroup>');
                                if (jsonData["customsessionvar"] != null && jsonData["customsessionvar"] != undefined) {
                                    var additionalData = get_data_for_autocomplete_filter_field_formbuilder(jsonData["customsessionvar"], false, true, false);
                                    if (additionalData !== null && additionalData !== undefined) {
                                        fData.append('<optgroup label="Session Variables">');

                                        $.each(additionalData, function (i, option) {

                                            fData.append('<option value="' + option + '">' + option + '</option>');
                                        });
                                        fData.append('</optgroup>');
                                    }
                                }


                                if (defval) {
                                    fData.val(defval);
                                }

                            } else {
                                console.error('Error trying to get values from SF.')
                            }
                            /*$.ajax({
                                method: "POST",
                                url: urlSite + "Admin/GetValuesFromSFField",
                                data: { sfObject: (_sfObject) ? _sfObject.value : '', sfField : (_sfField) ? _sfField.value : ''},
                                beforeSend: function() {
                                    $('#' + elementReveal).find('.processing_screen').show();
                                }
                            }).done(function (data) {
                                var jsonData = (data) ? JSON.parse(data) : '';
                                if (jsonData && jsonData['status'] == "ok") {

                                    fData.append('<optgroup label="Dropdown Values">');
                                    $.each(jsonData['values'], function (i, option) {
                                        fData.append('<option value="' + option['value'] + '">' + option['label'] + '</option>');
                                    });
                                    fData.append('</optgroup>');

                                    if (jsonData["customsessionvar"] != null && jsonData["customsessionvar"] != undefined) {
                                        var additionalData = get_data_for_autocomplete_filter_field_formbuilder(jsonData["customsessionvar"], false, true, false);
                                        if (additionalData !== null && additionalData !== undefined) {
                                            fData.append('<optgroup label="Session Variables">');

                                            $.each(additionalData, function (i, option) {

                                                fData.append('<option value="' + option + '">' + option + '</option>');
                                            });
                                            fData.append('</optgroup>');
                                        }
                                    }


                                    if(defval) {
                                        fData.val(defval);
                                    }
                                } else {
                                    console.error('Error trying to get values from SF.')
                                }

                                $('#' + elementReveal).find('.processing_screen').hide();
                            });*/

                        } else if (valuesFromView != undefined && valuesFromView != null && (valuesFromView.value == "on" || valuesFromView.value)) {
                            var _sfViewObject = item.properties.find(function(obj) {
                                return obj.name == 'list_view_salesforce_object';
                            });
                            var _sfViewId = item.properties.find(function(obj) {
                                return obj.name == 'listview';
                            });

                            var _sfViewName = item.properties.find(function (obj) {
                                return obj.name == 'listview_name';
                            });
                            var _sfFieldLabel = item.properties.find(function (obj) {
                                return obj.name == 'sf_listview_label_field';
                            });
                            var _sfFieldValue = item.properties.find(function (obj) {
                                return obj.name == 'sf_listview_value_field';
                            });

                            let response = await $.ajax({
                                method: "POST",
                                url: urlSite + "Admin/GetValuesFromSFView",
                                data: { sfViewObject: (_sfViewObject) ? _sfViewObject.value : '', sfViewId: (_sfViewId) ? _sfViewId.value : '', sfForLabel: (_sfFieldLabel) ? _sfFieldLabel.value : '', sfForValue: (_sfFieldValue) ? _sfFieldValue.value : '', sfViewName: (_sfViewName) ? _sfViewName.value : '' },
                                beforeSend: function () {

                                }
                            });

                            if (response !== null && response !== undefined) {
                                fData.empty().append(response);
                                if (defval) {
                                    fData.val(defval);
                                }
                            }

                            /*$.ajax({
                                method: "POST",
                                url: urlSite + "Admin/GetValuesFromSFView",
                                data: { sfViewObject: (_sfViewObject) ? _sfViewObject.value : '', sfViewId: (_sfViewId) ? _sfViewId.value : '', sfForLabel: (_sfFieldLabel) ? _sfFieldLabel.value : '', sfForValue: (_sfFieldValue) ? _sfFieldValue.value : '', sfViewName: (_sfViewName) ? _sfViewName.value : ''  },
                                beforeSend: function() {
                                    
                                }
                            }).done(function (data) {
                                fData.empty().append(data);

                                if(defval) {
                                    fData.val(defval);
                                }

                                
                            });*/
                        } else {
                            let response = await $.ajax({
                                method: "POST",
                                url: urlSite + "Admin/GetCurrentCustomSessionVariable",

                                beforeSend: function () {

                                }
                            });
                            if (response !== null && response !== undefined) {
                                var dataJson = JSON.parse(response);
                                var tmp = item.properties.find(function (obj) {
                                    return obj.name == 'options-' + window.translation.language;
                                });
                                options = (tmp && tmp.value) ? JSON.parse(tmp.value) : "";
                                if (options != null && options != '') {
                                    fData.append('<optgroup label="Dropdown Values">');
                                    $.each(options, function (i, option) {
                                        fData.append('<option value="' + option + '">' + option + '</option>');
                                    });
                                    fData.append('</optgroup>');
                                }
                                var additionalData = get_data_for_autocomplete_filter_field_formbuilder(dataJson, false, true, false);
                                if (additionalData !== null && additionalData !== undefined) {
                                    fData.append('<optgroup label="Session Variables">');

                                    $.each(additionalData, function (i, option) {

                                        fData.append('<option value="' + option + '">' + option + '</option>');
                                    });
                                    fData.append('</optgroup>');
                                }
                                if (defval) {
                                    fData.val(defval);
                                }


                            }

                            /*$.ajax({
                                method: "POST",
                                url: urlSite + "Admin/GetCurrentCustomSessionVariable",
                                
                                beforeSend: function () {
                                   
                                }
                            }).done(function (data) {
                                var dataJson = JSON.parse(data);
                                var tmp = item.properties.find(function (obj) {
                                    return obj.name == 'options-' + window.translation.language;
                                });
                                options = (tmp) ? JSON.parse(tmp.value) : "";

                                if (options != null && options != '') {
                                    fData.append('<optgroup label="Dropdown Values">');
                                    $.each(options, function (i, option) {
                                        fData.append('<option value="' + option + '">' + option + '</option>');
                                    });
                                    fData.append('</optgroup>');
                                }

                                var additionalData = get_data_for_autocomplete_filter_field_formbuilder(dataJson, false, true, false);
                                if (additionalData !== null && additionalData !== undefined) {
                                    fData.append('<optgroup label="Session Variables">');

                                    $.each(additionalData, function (i, option) {
                                        
                                        fData.append('<option value="' + option + '">' + option + '</option>');
                                    });
                                    fData.append('</optgroup>');
                                }
                                if (defval) {
                                    fData.val(defval);
                                }

                               
                            });*/

                        }
                        return false;
                    }
                });
            }
            else {
                fData.append('<option value="true">True</option>');
                fData.append('<option value="false">False</option>');
            }

            fData.prop('disabled', false);
        }
        else{
            fDataParent.append('<input id="' + fDataName + '" name="' + fDataName + '" class="display_data" type="number" data-required="true" data-type="number">');
            fOp.append('<option value=">">' + translation.greater_than + '</option>'
                        + '<option value=">=">' + translation.greater_than_or_equal_to + '</option>'
                        + '<option value="<">' + translation.less_than + '</option>'
                        + '<option value="<=">' + translation.less_than_or_equal_to + '</option>'
                        + '<option value="_equal_empty_">' + window.translation.is_equal_to_empty + '</option>'
                        + '<option value="_not_equal_empty_">' + window.translation.is_equal_not_empty + '</option>');
        }
        if( type == 'multiselect'){
            fOp.append('<option value="_multicheck_include_">'+window.translation.contains+'</option>'
            +'<option value="_multicheck_notinclude_">'+window.translation.not_contains+'</option>');
        }
    }

  
}

function SaveDisplayLogic() {
    if (!is_backend_page()) return;
    if($('#display_logic_form').length > 0){
        $(document).on('click', '#display_logic_form .save', function () {
            //Get if site is sharingPortalPlus
            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
            $("#display_logic_form").find("label.error").remove();

            if ($('#display_logic_form select[name=show_hide]').val() != 2) {
                initiate_jquery_validate_reveal($('#display_logic_form'), 'display_logic_form');
            }

            if ($('#display_logic_form').valid()) {
                var formData = $("#display_logic_form").serializeObject();
                var type = $('#display_logic_form input[name=type]').val();
                var ruleId = $('#display_logic_form input[name=rule-id]').val();
                var fieldId = $('#display_logic_form input[name=field-id]').val();
                var elementId = $('#display_logic_form input[name=element-id]').val();
                var logicLink = $('a[data-element-reveal="ars-display-logic"][data-element-id="' + elementId + '"]');
                var requestVerificationToken = formData['__RequestVerificationToken'];

                $.ajax({
                    method: "POST",
                    url: urlSite + "Admin/AddOrUpdateDisplayLogic",
                    data: {
                        form: formData,
                        elementId: elementId,
                        "__RequestVerificationToken": requestVerificationToken
                    },
                    beforeSend: function () {
                        $('#ars-display-logic').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    //var displayRules = localStorage.getItem("display-logic-rules");
                    var displayRules = sessionStorage.getItem("display-logic-rules");
                    var DataJson = [];
                    var jsonRules = new Object();

                    if (jsonResult.status === 200) {
                        var _ruleId = jsonResult.ruleId;
                        var elementId = jsonResult.elementId;
                        var condCount = parseInt(jsonResult.condCount);

                        if (displayRules != "" && displayRules != null ) {
                            DataJson = JSON.parse(displayRules);
                        }

                        jsonRules.ruleId = _ruleId;
                        jsonRules.elementId = elementId;

                        var exists = false;
                        if(DataJson.length > 0){
                            $.each(DataJson, function(i,obj) {
                                if (obj.ruleId === _ruleId) {
                                    exists = true;
                                    return false;
                                }
                            });
                        }

                        if(DataJson.length <= 0 || !exists){
                            DataJson.push(jsonRules);
                        }

                        //localStorage.setItem("display-logic-rules", JSON.stringify(DataJson));
                        sessionStorage.setItem("display-logic-rules", JSON.stringify(DataJson));

                        logicLink.attr('data-rule-id', _ruleId);

                        if(condCount > 0 && !logicLink.hasClass('active')){
                            logicLink.addClass('active');
                        }
                        else if(condCount <= 0 && logicLink.hasClass('active')){
                            logicLink.removeClass('active');
                        }
                    }

                    $('#ars-display-logic').find('.processing_screen').hide();
                    //Close modal
                    $('#ars-display-logic').foundation('close');
                    $('#ars-display-logic .conditions').empty();
                });
            } else {
                Swal.fire({
                    title: "",
                    icon: "warning",
                    text: window.translation.enter_all_required,
                    confirmButtonText: "Ok"
                });
                return false;
            }
        });
    }
}

/*function ChangeFieldsType(typeField) {
    var active_field = $('.form_builder_block .form-preview .field-row.active');
    if (active_field.length > 0) {
        var content = active_field.find(".content");

        active_field.find('a[data-element-reveal="ars-display-logic"]').removeClass('is-hidden');

        var newfield = '<div class="left">'
                    + '<label class="label_preview">' + GetLabelField(typeField) + '</label>'
                + '</div>'
                + '<div class="right">'
                     + FieldContentPreview(typeField, "")
                + '</div>';

        if (typeField == 'description') {
            newfield = '<div class="right-full">'
                     + FieldContentPreview(typeField, "")
                + '</div>';
        }
        else if (typeField == 'hidden') {
            newfield =  '<div class="left">'
                            + '<label class="label_preview"></label>'
                        + '</div>'
                        + '<div class="right">'
                             + FieldContentPreview(typeField, "")
                        + '</div>';

            active_field.find('a[data-element-reveal="ars-display-logic"]').addClass('is-hidden');
        }

        active_field.data('type-field', typeField);
        active_field.find('.edit-field').data('type-field', typeField);
        active_field.find('.edit-field').data('title', typeField);
        content.html(newfield);

        ShowSubmitButtonFormBuilder();
        ValidateRequiredField();
        ValidateifHideLabel();

        // re-initialize multiselects
        $('.form_builder_block .form-preview select[multiple]').multiselect();

        if ($('.form_builder_block form input[name="save_data_salesforce"]:checked').length > 0) {
            AjaxLoadSalesForceFields('0', false);
        }
    }
}*/

function GetLabelField(typeField) {
    var content = "";
    switch (typeField) {
        case 'textbox': content = window.translation.textbox;
            break;
        case 'signature': content = window.translation.signature_field;
            break;
        case 'gpttext': content = window.translation.chatgpt_text_field;
            break;
        case 'calculate': content = window.translation.calculate_field;
            break;
        case 'hidden': content = window.translation.hidden;
            break;
        case 'textarea': content = window.translation.textarea;
            break;
        case 'dropdown': content = window.translation.picklist_single_select;
            break;
        case 'multiselect': content = window.translation.multiselect;
            break;
        case 'email':
            if ((active_from_registration == true || active_from_update_user_information == true) && IS_LLAMAPI_ENABLED == true) {
                content = "Email/Username";
            }
            else
                content = window.translation.email;
            break;
        case 'password': content = window.translation.password;
            break;
        case 'phone': content = window.translation.phone;
            break;
        case 'datetime': content = window.translation.datetime;
            break;
        case 'file': content = window.translation.file_upload;
            break;
        case 'number': content = window.translation.number;
            break;
        case 'description':  content = window.translation.description;
            break;
        case 'submit':  content = window.translation.submit;
            break;
        case 'checkbox': content = window.translation.checkbox;
            break;
        case 'radio': content = window.translation.radio;
            break;
        case 'currency': content = window.translation.currency;
            break;
        case 'url': content = 'URL';
            break;
        case 'formula': content = window.translation.formula_field;
            break;
        case 'section': content = window.translation.section;
            break;
        case 'paymentcomponent':
            content = window.translation.payment_component;
            break;
        case 'percent':
            content = window.translation.percentage;
            break;
        case 'addresscomponent':
            content ='Address Section'
        default: content = "";
            break;
    }
    return content;
}

function FieldContentPreview(typeField, defaultValue, classForLabel) {
    var content = "";
    var numElement = 0;
    var placeholder = $('.form_builder_block input[name="placeholder_field"]').val();
    var helptext = $('.form_builder_block input[name="helptext_field-' + window.translation.language + '"]').val();
    var default_value_field = $('.form_builder_block input[name="default_value_field"]').val();

    if (classForLabel === undefined || classForLabel === null)
        classForLabel = '';

    if (GetQuantityElementsFormBuilder() > 0) {
        numElement = GetQuantityElementsFormBuilder() + 1;
    } 
    else { 
        numElement = 1;
    }

    if(defaultValue) {
        default_value_field = defaultValue;
    }

    switch (typeField) {
        case 'textbox':
            content = '<input id="textbox_field_preview" name="textbox_field_preview" readonly type="text" placeholder="'+placeholder+'" value="'+default_value_field+'">';
            break;
        case 'signature':
            content = '<span class="signature_pad"></span><div><span class="signature-clear">Clear</span></div>';
            break;
        case 'gpttext':
            content = '<input id="gpttext_field_preview" name="gpttext_field_preview" readonly type="text" placeholder="'+placeholder+'">';
            break;
        case 'calculate':
            content = '<input id="calculate_field_preview" name="calculate_field_preview" readonly type="text" placeholder="'+placeholder+'" value="'+default_value_field+'">';
            break;
        case 'formula':
            content = '<input id="formula_field_preview" name="formula_field_preview" readonly type="text" value="Calculated Value" />';
            break;
        case 'hidden':
            content = '<input class="hidden_field" id="hidden_field_preview" name="hidden_field_preview" readonly type="text" placeholder="'+placeholder+'" value="'+default_value_field+'">';
            break;
        case 'textarea':
            content = '<textarea  class="textarea-preview" readonly id="textarea-preview" name="textarea-preview"  placeholder="'+placeholder+'"></textarea>';
            break;
        case 'dropdown':
            content = '<select id="select-preview" name="select-preview" disabled class="select-preview"> <option value="0">'+window.translation.select+'</option></select>';
            break;
        case 'multiselect':
            content = '<div class="input-group-select"><select id="select-preview" name="select-preview" multiple  disabled class="multiselect-preview"> <option value="0">' + window.translation.option + ' 1</option></select></div>';
            break;
        case 'email':
            content = '<input id="email_field_preview" name="email_field_preview" readonly type="text" placeholder="' + placeholder + '" value="' + default_value_field + '">';
            break;
        case 'password':
            content = '<input id="password_field_preview" name="password_field_preview" readonly type="password" value="Example" placeholder="' + placeholder + '">';
            break;
        case 'phone':
            content = '<input id="phone_field_preview" name="phone_field_preview" readonly type="text" placeholder="' + placeholder + '" value="' + default_value_field + '">';
            break;
        case 'datetime':
            placeholder = $(".form_builder_block select[name='date_format'] option:selected").text();
            content = '<div class="date"><span class="datetime"></span><input id="datetime_field_preview" name="datetime_field_preview"readonly type="text" class="datetime_field_preview" placeholder="'+placeholder+'"></div>';
            break;
        case 'file':
            content = '<input type="file" id="file_field_preview" name="file_field_preview">';
            break;
        case 'number':
            content = '<input id="number_field_preview" name="number_field_preview" readonly type="text" placeholder="' + placeholder + '" value="' + default_value_field + '">';
            break;
        case 'description':

            //var textareaId = $(".form_builder_block .label-textarea").first().find("textarea").attr("id");
            var textareaId = $('.form_builder_block').find('.tabs-panel.is-active .label-textarea').find("textarea").first().attr("id");
            if (CKEDITOR.instances[textareaId]) {
                var currentContent = CKEDITOR.instances[textareaId].getData();
                if (currentContent.indexOf('<script>') != -1) {
                    currentContent = '';
                }
                content = '<div class="description_preview">' + currentContent + '</div>';
            } else {
                content = '<div class="description_preview">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut </div>';
            }
            break;
        case 'radio':
            content = '<div class="radio_field_preview input-group-radiobutton reverted"><div><input type="radio" id="radio_preview" name="radio_preview" value="option-1" id="option_radio-1-' + numElement + '"><label for="option_radio-1-' + numElement + '">Option 1</label></div>'
                       + '<div><input type="radio" id="radio_preview" name="radio_preview" value="option-2" id="option_radio-2-'+numElement+'"><label for="option_radio-2-'+numElement+'">Option 2</label></div></div>';
            break;
        case 'checkbox':
            var checkboxOption = $(".form_builder_block .checkbox_option").first().find('input').val();
            content = '<div class="checkbox_field_preview input-group input-group-checkbox"><input type="checkbox" id="checkbox_preview" name="checkbox_preview" value="option-1" id="option_checkbox_' + numElement + '"><label for="option_checkbox_' + numElement + '">' + checkboxOption + '</label></div>';
            break;
        case 'currency':
            var currencyTypeValue = $(".form_builder_block select[name='currency_type']").val();
            var decimalMark = $(".form_builder_block select[name='decimal_mark']").val();
            if (decimalMark == "" || decimalMark == null) {
                $(".form_builder_block select[name='decimal_mark']").val(".");
            }
            if (currencyTypeValue == "" || currencyTypeValue == null) {
                currencyTypeValue = "USD";
                $(".form_builder_block select[name='currency_type']").val("USD");
            }
            content = '<input id="currency_field_preview" name="currency_field_preview" readonly type="text" class="currency_field_preview" placeholder="' + placeholder + '" value="' + default_value_field + '"><span class="currency_value">' + currencyTypeValue+'</span>';
            break;
        case 'url':
            content = '<input id="url_field_preview" name="url_field_preview" readonly type="text" placeholder="'+placeholder+'" value="'+default_value_field+'">';
            break;
        case 'submit':
            var label_preview = $('.form_builder_block .label_field input').first().val();
            if (label_preview == '') {
                label_preview = GetLabelField(typeField);
            }
            var includeCancel = $('#form-builder-block #include_cancel_button').is(':checked');
            var textButton = ($('input[name="cancel-label-1"]').length > 0 && $('input[name="cancel-label-1"]').val() != '') ? $('input[name="cancel-label-1"]').val() : "Cancel";
            content = (includeCancel ? '<button type="button" class="button cancel" style="background-color: transparent;color: #A4B000;">' + textButton + '</button>&nbsp;' : '')+ '<button type="button" class="button">' + label_preview + '</button>' ;

            if ($('.form_builder_block input[name="enable_add_records_button"]').val() == "true") {
                let currentLanguageId = $('body').data("langIndex");
                if ($('input[name="addrecord-label-' + currentLanguageId + '"]').val() == '') {
                    $('input[name="addrecord-label-' + currentLanguageId + '"]').val(window.translation.add_record);
                }
            }

            break;
        case 'section':
            var label_preview = $('.form_builder_block .label_field input').first().val();
            if (label_preview === '') {
                label_preview = GetLabelField(typeField);
            }
            if(defaultValue) {
                label_preview = defaultValue;
            }
            content = '<label class="label_preview ' + classForLabel + '">'+ label_preview +'</label>';
            break;
        case 'paymentcomponent':
            var label_preview = $('.form_builder_block .label_field input').first().val();
            if (label_preview === '') {
                label_preview = GetLabelField(typeField);
            }
            if (defaultValue) {
                label_preview = defaultValue;
            }
            content = '<label class="label_preview">' + label_preview + ' (Preview not available for this component)</label>';
            break;
        case 'addresscomponent':
            var label_preview = $('.form_builder_block .label_field input').first().val();
            if (label_preview === '') {
                label_preview = GetLabelField(typeField);
            }
            if (defaultValue) {
                label_preview = defaultValue;
            }
            content = '<label class="label_preview' + classForLabel + '">' + label_preview + '</label>';
            break;
        case 'percent':
            content = '<input id="percent_field_preview" name="percent_field_preview" class="percent_field_preview" readonly type="text" placeholder="' + placeholder + '" value="' + default_value_field + '"> <span class="percent_value">%</span >';
            break;
        default:
            content = "";
            break;
    }

    if (helptext !== null && helptext.trim() !== '' && typeField !== 'submit') {
        content = content + '<p class="hint-text">' + helptext + '</p>';
    }

    return content;
}

function GetQuantityElementsFormBuilder() {
    if (!is_backend_page()) return;
    var q= 0;
    var form_preview = $('.form_builder_block .form-preview');

    if (form_preview.find(".field-row").length != 0) {
        form_preview.find(".field-row").each(function () {
            if ($(this).data("element-id") > q) {
                q = $(this).data("element-id");
            }
        });
    }

    return q;
}

function initialize_ckeditor_formbuilder(element, languageId) {
    try {
        $('#cke_' + element + languageId).remove();
        var editor = CKEDITOR.replace(element + languageId, {
            //extraPlugins: 'uploadimage,image2',
            //removePlugins: 'image',
            filebrowserBrowseUrl: '/custom-ckfinder/connector',
            filebrowserImageBrowseUrl: '/custom-ckfinder/connector?type=Images&block=wysiwyg',
            filebrowserUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Files',
            filebrowserImageUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Images',
            filebrowserWindowWidth: 800,
            filebrowserWindowHeight: 600,
            customConfig: '/js/config/ckeditor_config.js'
        });
        CKFinder.setupCKEditor(editor);

    } catch (error) {
        console.log(error);
    }
}

function retrieve_config_file(elementID, formID) {
    var assigned = false;
    if (window.CommentFieldsConfig !== undefined && window.CommentFieldsConfig !== null && window.CommentFieldsConfig.trim() !== '') {
        var CommentSettings = JSON.parse(window.CommentFieldsConfig);
        if (CommentSettings !== null && CommentSettings !== undefined) {
            var foundComment = false;
            CommentSettings.forEach(function (value, index) {

                if (value.formidTag == formId) {
                    value.fields.forEach(function (valueF, indexF) {
                        if (valueF == element) {
                            foundComment = true;
                        }
                    });
                }
            });


            if (foundComment === true) {
                return '/js/config/ckeditor_comment_config.js';
            }
        }

    }


    if (assigned == false) {
        if (window.DescriptionFieldsConfig !== undefined && window.DescriptionFieldsConfig !== null && window.DescriptionFieldsConfig.trim() !== '') {
            var formId = form.attr('id');
            var DescSettings = JSON.parse(window.DescriptionFieldsConfig);
            if (DescSettings !== null && DescSettings !== undefined) {
                var foundComment = false;
                DescSettings.forEach(function (value, index) {

                    if (value.formidTag == formId) {
                        value.fields.forEach(function (valueF, indexF) {
                            if (valueF == element) {
                                foundComment = true;
                            }
                        });
                    }
                });


                if (foundComment === true) {
                    return '/js/config/ckeditor_description_config.js';
                }

            }
        }

    }


    return '/js/config/ckeditor_config_formBlock.js';


}

function initialize_ckeditor_textarea_rich_text(element, form) {
    var elementFixed = element.replaceAll('[', '\\[').replaceAll(']', '\\]');
    var isRequired = $('#' + elementFixed).data('required');
    var id = '#' + element;

    $('#cke_' + element).remove();

    var assigned = false;

    if (window.CommentFieldsConfig !== undefined && window.CommentFieldsConfig !== null && window.CommentFieldsConfig.trim() !== '') {
        var formId = form.attr('id');
        var CommentSettings = JSON.parse(window.CommentFieldsConfig);
        if (CommentSettings !== null && CommentSettings !== undefined) {
            var foundComment = false;
            CommentSettings.forEach(function (value, index) {

                if (value.formidTag == formId) {
                    value.fields.forEach(function (valueF, indexF) {
                        if (valueF == element) {
                            foundComment = true;
                        }
                    });
                }
            });


            if (foundComment === true) {
                var editor = CKEDITOR.replace(element, {
                    customConfig: '/js/config/ckeditor_comment_config.js'
                });
                CKFinder.setupCKEditor(editor);
                assigned = true;
            } 

        } 
    }

    if (assigned == false) {
        if (window.DescriptionFieldsConfig !== undefined && window.DescriptionFieldsConfig !== null && window.DescriptionFieldsConfig.trim() !== '') {
            var formId = form.attr('id');
            var DescSettings = JSON.parse(window.DescriptionFieldsConfig);
            if (DescSettings !== null && DescSettings !== undefined) {
                var foundComment = false;
                DescSettings.forEach(function (value, index) {

                    if (value.formidTag == formId) {
                        value.fields.forEach(function (valueF, indexF) {
                            if (valueF == element) {
                                foundComment = true;
                            }
                        });
                    }
                });


                if (foundComment === true) {
                    var editor = CKEDITOR.replace(element, {
                        customConfig: '/js/config/ckeditor_description_config.js'
                    });
                    CKFinder.setupCKEditor(editor);
                    assigned = true;
                }

            }
        }

    }


    if (assigned == false) {
        var editor = CKEDITOR.replace(element, {
            customConfig: '/js/config/ckeditor_config_formBlock.js',
            filebrowserBrowseUrl: '',
            filebrowserImageBrowseUrl: '',
            filebrowserUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Files',
            filebrowserImageUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Images',
            filebrowserWindowWidth: 800,
            filebrowserWindowHeight: 600,
            mentions: [{
                feed: function(opts, callback) {
                    return dataFeed(opts, callback, element);
                },
                itemTemplate: '<li data-id="{id}">' +
                    '<strong class="username">{username}</strong>' +
                    '</li>',
                outputTemplate: '<a data-mention-id="{id}">@{fullname}</a><span>&nbsp;</span>',
                minChars: 0
            }
            ]
        });
        CKFinder.setupCKEditor(editor);

    }

    //Event change of textarea with rich text
    if(isRequired === true) {
        CKEDITOR.instances[element].on('change', function() {
            var value = CKEDITOR.instances[element].getData().toString();

            if(value) {
                $('#' + elementFixed).parent().find('label.error').css('display', 'none');
            }
            else {
                $('#' + elementFixed).parent().find('label.error').css('display', 'block');
            }
        });
    }
}


function dataFeed(opts, callback, element) {
    if ($('select[name="mentions-' + element + '"]').length>0) {
        var users = [];
        $('select[name="mentions-' + element + '"] option').each(function () {
            var userObj = {};
            userObj['id'] = $(this).attr('value');
            userObj['fullname'] = $(this).text();
            userObj['username'] = $(this).text();
            users.push(userObj);
        });
        var matchProperty = 'username',
            data = users.filter(function (item) {
                return item[matchProperty].toLowerCase().indexOf(opts.query.toLowerCase()) == 0;
            });

        data = data.sort(function (a, b) {
            return a[matchProperty].localeCompare(b[matchProperty], undefined, {
                sensitivity: 'accent'
            });
        });

        callback(data);
    }
}

function initialize_ckeditor_from_id(element) {
    $('#cke_' + element).remove();
    var elementFixed = element.replaceAll('[', '\\[').replaceAll(']', '\\]');
    var formBlockID = $('#' + elementFixed).parents('.formBlock').find('form').attr('id');
    var configFile = retrieve_config_file(element, formBlockID);
    var isRequired = $('#' + elementFixed).data('required');

    var editor = CKEDITOR.replace(element, {
        //extraPlugins: 'uploadimage,image2',
        //removePlugins: 'image',
        filebrowserBrowseUrl: '/custom-ckfinder/connector',
        filebrowserImageBrowseUrl: '/custom-ckfinder/connector?type=Images&block=wysiwyg',
        filebrowserUploadUrl: '/ckfinder/connector?command=QuickUpload',
        filebrowserImageUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Images',
        filebrowserWindowWidth: 800,
        filebrowserWindowHeight: 600,
        customConfig: configFile,
        mentions: [{
                feed: function (opts, callback) {
                    return dataFeed(opts, callback, element);
                },
                itemTemplate: '<li data-id="{id}">' +
                    '<strong class="username">{username}</strong>' +
                    '</li>',
                outputTemplate: '<a data-mention-id="{id}">@{fullname}</a><span>&nbsp;</span>',
                minChars: 0
            }]
    });
    CKFinder.setupCKEditor(editor);


    if (isRequired === true) {
        CKEDITOR.instances[element].on('change', function () {
            var value = CKEDITOR.instances[element].getData().toString();

            if (value) {
                $('#' + elementFixed).parent().find('label.error').css('display', 'none');
            }
            else {
                $('#' + elementFixed).parent().find('label.error').css('display', 'block');
            }
        });
    }

    var maxlength = $('#' + elementFixed).data('max-length');
    if (maxlength) {
        CKEDITOR.instances[element].on('change', function () {

            var value = CKEDITOR.instances[element].getData().toString();

            if (value.length <= maxlength) {
                $('#' + elementFixed).parent().find('label.error').css('display', 'none');
            }
            else {
                var errorMessage = window.translation.the_field_must_be_maximum_of + ' ' + maxlength + ' ' + window.translation.characters;
                if ($('#' + elementFixed).parent().find('label.error').length == 0) {
                    var label = '<label id="' + element + '-error" class="error error-custom" for="' + element + '" style="display:block;">' + errorMessage + '</label>';
                    $('#' + elementFixed).parent().append(label);
                }
                else {
                    $('#' + elementFixed).parent().find('label.error').html(errorMessage);
                    $('#' + elementFixed).parent().find('label.error').css('display', 'block');
                }
            }
        });

    }
}

function initializeDescriptionField() {
    if (!is_backend_page()) return;
    $('.form_builder_block  .label-textarea').each(function () {
        var textArea = $(this).find('textarea').first();
        var languageId = textArea.data('language-id');
        initialize_ckeditor_formbuilder('label-textarea-', languageId);

        CKEDITOR.instances['label-textarea-'+languageId].on('key', function () {
            $("#form_changed").val(true);
            $(".form_builder_block button.save_field").addClass("pending_changes");
        });
    });
}

function FormBuilderVisibilityFields() {
    if (!is_backend_page()) return;
    $(document).on('click', '.form_builder_block .field-list a', async function (e) {
        e.preventDefault();
        var lastTypefield = $('#form-builder-block').find('input[name="last-type-field-selected"]').val();
        var isPendingChanges = $('#form-builder-block').find('button.save_field.pending_changes').length > 0;
        if (lastTypefield === 'paymentcomponent' && isPendingChanges === true) {
            Swal.fire({
                title: window.translation.warning,
                html: 'The payment component should be reviewed, Please review its settings and click on Save field button before to add new fields',
                icon: "warning",
                closeOnConfirm: true,
            });
            return false;
        } else {
            await AddFieldsToPreviewWorkflow($(this), null, $('#row-fields'));
            return false;
        }
    });
}

async function AddFieldsToPreviewWorkflow(el, dragdrop, target) {
    var dragdrop = dragdrop || false;
    var formSelector = '.form_builder_block';

    //Validate pending changes
    
    //Verifying if there is a paymentComponent Added
    if (el.hasClass('paymentcomponent')) {
        var found = false;
        $(formSelector).find('.form-preview .field-row').each(function () {
            var dataTypeField = $(this).attr('data-type-field');
            if (dataTypeField != null && dataTypeField != undefined && dataTypeField === 'paymentcomponent') {
                found = true;
            }
        });

        if (found === true) {
            Swal.fire({
                title: window.translation.error,
                html: 'You can add only a payment component per form',
                icon: "error",
                closeOnConfirm: true,
            });
            return false;

        }
    }
    // Removing dependent picklist message
    $('.salesforce-mapping-section').find('.dependent_sf_rule').remove();

    if ($("#form_changed").val() == "true") {
        $(formSelector).find(".save_section button.save_field").trigger("click");
    }

    // set default value to new fields
    $(formSelector).find('input[name="element-id"]').val(GetQuantityElementsFormBuilder() + 1);
    $(formSelector).find('input[name="field_allow_time"]').prop('checked', false);
    AddTimeToPreview();
    cleanFormBuilderFields();
    $(formSelector).find('select[name="pull_values_sf_source"]').val(0);
    //$(formSelector).find('ul.tabs a:first').trigger("click");
    $(formSelector).find('input[name="field_id"]').val(0);

    $(formSelector).find('.form-preview').removeClass('full-width');
    $(formSelector).find('.build-field-settings').removeClass('is-hidden');
    $(formSelector).find('.dropdown-options-labels').addClass('hidden');
   
    // Visibility to properties of fields
    if (el.hasClass('textbox')) {
        HideFormBuilderFields('textbox');
        $(formSelector).find('.label_field input').val(GetLabelField('textbox'));
        AddFieldsToPreview('textbox', dragdrop, el, target);
    }   
    if (el.hasClass('calculate')) {
        HideFormBuilderFields('calculate');
        $(formSelector).find('.label_field input').val(GetLabelField('calculate'));
        populate_calculate_fields(null);
        AddFieldsToPreview('calculate', dragdrop, el, target);
        populate_select_field_maximum_value(null);
        populate_select_field_minimum_value(null);
    }
    if (el.hasClass('signature')) {
        HideFormBuilderFields('signature');
        $(formSelector).find('.label_field input').val(GetLabelField('signature'));
        populate_calculate_fields(null);
        AddFieldsToPreview('signature', dragdrop, el, target);
    }
    if (el.hasClass('gpttext')) {
        HideFormBuilderFields('gpttext');
        $(formSelector).find('.label_field input').val(GetLabelField('gpttext'));
        AddFieldsToPreview('gpttext', dragdrop, el, target);
    }
    if (el.hasClass('formula')) {
        HideFormBuilderFields('formula');
        $(formSelector).find('.label_field input').val(GetLabelField('formula'));
        AddFieldsToPreview('formula', dragdrop, el, target);
    }
    if (el.hasClass('_hidden')) {
        HideFormBuilderFields('hidden');
        $(formSelector).find('.label_field input').val(GetLabelField('hidden'));
        AddFieldsToPreview('hidden', dragdrop, el, target);
        recalculateHiddenNames();
    }
    if (el.hasClass('textarea')) {
        HideFormBuilderFields('textarea');
        $(formSelector).find('.label_field input').val(GetLabelField('textarea'));
        AddFieldsToPreview('textarea', dragdrop, el, target);
        $(formSelector).find('select[name="objects_mentions"]').val('');
        $(formSelector).find('select[name="listviews_mentions"] option').remove();
    }
    if (el.hasClass('dropdown')) {
        HideFormBuilderFields('dropdown');
        $(formSelector).find('.label_field input').val(GetLabelField('dropdown'));
        AddFieldsToPreview('dropdown', dragdrop, el, target);
        //Cleaning dropdown when is added
        $(formSelector).find('.dropdown-options .dinamyc .option').remove();
        // Set default values for salesfocre listview select
        $(formSelector).find('select[name="list_view_salesforce_object"]').val("");
        $(formSelector).find('select[name="listview"] option').remove();
        $(formSelector).find('select[name="display_picklist_mode"]').val('0');
        isLabelDiferent();
    }
    if (el.hasClass('multiselect')) {
        HideFormBuilderFields('multiselect');
        $(formSelector).find('.label_field input').val(GetLabelField('multiselect'));
        AddFieldsToPreview('multiselect', dragdrop, el, target);
        //Cleaning multiselect when is added
        $(formSelector).find('.dropdown-options .dinamyc .option').remove();
        // Set default values for salesfocre listview select
        $(formSelector).find('select[name="list_view_salesforce_object"]').val("");
        $(formSelector).find('select[name="listview"] option').remove();
        $(formSelector).find('label.option-values').addClass('hidden');
        $(formSelector).find('select[name="display_as_multiselect"]').val('0');
        DisplayAsCheckboxesFunctions();
        isLabelDiferent();
    }
    if (el.hasClass('email')) {
        HideFormBuilderFields('email');
        $(formSelector).find('.label_field input').val(GetLabelField('email'));
        AddFieldsToPreview('email', dragdrop, el, target);
        // Default value to validate property
        $(formSelector).find('input[name="field_validate"]').prop('checked', false);
    }
    if (el.hasClass('password')) {
        HideFormBuilderFields('password');
        $(formSelector).find('.label_field input').val(GetLabelField('password'));
        AddFieldsToPreview('password', dragdrop, el, target);
        // Default value to validate property
        $(formSelector).find('input[name="field_validate"]').prop('checked', false);
    }
    if (el.hasClass('phone')) {
        HideFormBuilderFields('phone');
        $(formSelector).find('.label_field input').val(GetLabelField('phone'));
        AddFieldsToPreview('phone', dragdrop, el, target);
    }
    if (el.hasClass('datetime')) {
        HideFormBuilderFields('datetime');
        $(formSelector).find('.label_field input').val(GetLabelField('datetime'));
        AddFieldsToPreview('datetime', dragdrop, el, target);
    }
    if (el.hasClass('file')) {
        HideFormBuilderFields('file');
        $(formSelector).find('.label_field input').val(GetLabelField('file'));
        AddFieldsToPreview('file', dragdrop, el, target);
    }
    if (el.hasClass('number')) {
        HideFormBuilderFields('number');
        $(formSelector).find('.textRatingScale').addClass('hidden');
        $(formSelector).find('.scale_color_section').addClass('hidden');
        $(formSelector).find('.validatior_code_text').addClass("hidden");
        $(formSelector).find('select[name="display_as"]').val('0');
        $(formSelector).find('input[name="decimal_places"]').val(4);
        $(formSelector).find('.label_field input').val(GetLabelField('number'));
        AddFieldsToPreview('number', dragdrop, el, target);
    }
    if (el.hasClass('percent')) {
        HideFormBuilderFields('percent');
        $(formSelector).find('.label_field input').val(GetLabelField('percent'));
        AddFieldsToPreview('percent', dragdrop, el, target);
    }
    if (el.hasClass('description')) {
        HideFormBuilderFields('description');
        $(formSelector).find(".label-textarea").each(function () {
            textareaId = $(this).find("textarea").attr("id");
            el.find("textarea").text("");

            if(CKEDITOR.instances[textareaId]) {
                CKEDITOR.instances[textareaId].setData('');
            }
            else {
                //Reinstance CKEDITOR
                initialize_ckeditor_from_id(textareaId);
            }
        });
        $(formSelector).find('.label_field input').val(GetLabelField('description'));
        AddFieldsToPreview('description', dragdrop, el, target);
    }
    if (el.hasClass('submit')) {
        HideFormBuilderFields('submit');
    }
    if (el.hasClass('radio')) {
        HideFormBuilderFields('radio');
        $(formSelector).find('.textRatingScale').addClass('hidden');
        $(formSelector).find('.scale_color_section').addClass('hidden');
        $(formSelector).find('.validatior_code_text').addClass("hidden");
        $(formSelector).find('.label_field input').val(GetLabelField('radio'));
        AddFieldsToPreview('radio', dragdrop, el, target);
        //Cleaning radio when is added
        $(formSelector).find('.dropdown-options .dinamyc .option').remove();
        isLabelDiferent();
    }
    if (el.hasClass('checkbox')) {
        HideFormBuilderFields('checkbox');
        $(formSelector).find('.label_field input').val(GetLabelField('checkbox'));
        AddFieldsToPreview('checkbox', dragdrop, el, target);
    }
    if (el.hasClass('currency')) {
        HideFormBuilderFields('currency');
        $(formSelector).find('.label_field input').val(GetLabelField('currency'));
        AddFieldsToPreview('currency', dragdrop, el, target);
    }
    if(el.hasClass('url')) {
      HideFormBuilderFields('url');
      $(formSelector).find('.label_field input').val(GetLabelField('url'));
      AddFieldsToPreview('url', dragdrop, el, target);
    }
    if(el.hasClass('section')) {
        HideFormBuilderFields('section');
        $(formSelector).find('.label_field input').val(GetLabelField('section'));
        AddFieldsToPreview('section', dragdrop, el, target);
        borderOptionBehavior();
      }
    if (el.hasClass('datetime')) {
        ShowDateValidations();
    }

    if (el.hasClass('paymentcomponent')) {
        HideFormBuilderFields('paymentcomponent');
        $(formSelector).find('.label_field input').val(GetLabelField('Payment Section'));
        AddFieldsToPreview('paymentcomponent', dragdrop, el, target);
        reset_payment_for_new(formSelector);
    }

    if (el.hasClass('addresscomponent')) {
        HideFormBuilderFields('addresscomponent');
        $(formSelector).find('.label_field input').val(GetLabelField('Address Section'));
        AddFieldsToPreview('addresscomponent', dragdrop, el, target);
      //  reset_payment_for_new(formSelector);
    }

    if ($('.form_builder_block input[name="save_data_salesforce"]:checked').length > 0) {
        if (el.hasClass('paymentcomponent')) {
            $(formSelector).find('.salesforce-mapping-section').addClass('hidden');
            $('#form-builder-block .field_to_mention_section').addClass("hidden");
        } else {
            $(formSelector).find('.salesforce-mapping-section').removeClass('hidden');
            $('#form-builder-block .field_to_mention_section').removeClass("hidden");
        }
        await AjaxLoadSalesForceFields('0', false);
    }
    ValidationShowSalesforceMappingSection();
    if (!el.hasClass('section') && !el.hasClass('paymentcomponent') && !el.hasClass('_hidden') && !el.hasClass('description') && !el.hasClass('submit')) {
        alignLabelBehavior();
    }
    
    if (el.hasClass('paymentcomponent')) {
        $(formSelector).find('.salesforce-mapping-section').addClass('hidden');
        $('#form-builder-block .field_to_mention_section').addClass("hidden");
    }
    $(formSelector).find('ul.tabs a:first').trigger("click");
    DisplayTextAreaModeOptions();

}

function BackActionFormBuilder() {
    if (!is_backend_page()) return;
    $(document).on('click', '.form_builder_block .back', function () {
        //Validate if there are field changes
        if ($("#form_changed").val() == "false") {
            $('.form_builder_block .field-configuration').addClass("hidden");
            $('.form_builder_block .field-list').removeClass('hidden');
        }
        else {

            Swal.fire({
                title: window.translation.discard,
                text: window.translation.discard_changes,
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#ff0000',
                confirmButtonText: window.translation.true_text,
                cancelButtonText: window.translation.false_text,
                closeOnConfirm: true

            }).then(function (result) {
                if (result.isConfirmed) {
                    $('.form_builder_block .field-configuration').addClass("hidden");
                    $('.form_builder_block .field-list').removeClass('hidden');

                } else {
                    Swal.close();
                }
            });

        }
    });
}

function HideSpecificFieldsFormBuilder(fields) {
    var needCopyToHidden = true;
    if (fields.length > 0) {
        for (var i = 0; i < fields.length; i++) {
            switch (fields[i]) {
                case 'is_required':
                    $(".form_builder_block .is_required").addClass("hidden");
                    break;
                case 'tabs-section':
                    $('.form_builder_block ul.tabs:not(.title-form-section)').parent().addClass('hidden');
                case 'label-textarea':
                    $('.form_builder_block .label-textarea').addClass("hidden");
                    break;
                case 'field_validate':
                    $(".form_builder_block .field_validate").addClass("hidden");
                    break;
                case 'label_field':
                    $(".form_builder_block .field-configuration .label_field").addClass("hidden");
                    break;
                case 'helptext_field':
                    $(".form_builder_block .field-configuration .helptext_field").addClass("hidden");
                    $(".form_builder_block .field-configuration .helptext_field input").val("")
                    break;
                case 'hide_label':
                    $(".form_builder_block .hide_label").addClass("hidden");
                    break;
                case 'read_only':
                    $(".form_builder_block .read_only").addClass("hidden");
                    break;
                case 'field_visibility':
                    $(".form_builder_block .field_visibility").addClass("hidden");
                    break;
                case 'file_image':
                    $(".form_builder_block .file_image").addClass("hidden");
                    break;
                case 'file_image_width':
                    $(".form_builder_block .file_image_width").addClass("hidden");
                    break;
                case 'file_image_height':
                    $(".form_builder_block .file_image_height").addClass("hidden");
                    break;
                case 'rich_text':
                    $(".form_builder_block .rich_text").addClass("hidden");
                    break;
                case 'rows':
                    $(".form_builder_block .rows").addClass("hidden");
                    break;
                case 'decimal_places':
                    $(".form_builder_block .decimal_places").addClass("hidden");
                    break;
                case 'display_picklist_section':
                    $(".form_builder_block .display_picklist_section").addClass("hidden");
                    break;
                case 'display_as_section':
                    $(".form_builder_block .display_as_section").addClass("hidden");
                    break;
                case 'show_format':
                    $(".form_builder_block .show_format").addClass("hidden");
                    break;                    
                case 'align_label_section':
                    $(".form_builder_block .align_label_section").addClass("hidden");
                    break;
                case 'scale_color_section':
                    $(".form_builder_block .scale_color_section").addClass("hidden");
                    break;
                case 'textRatingScale':
                    $(".form_builder_block .textRatingScale").addClass("hidden");
                    break;
                case 'minimum_value':
                    $(".form_builder_block .minimum_value").addClass("hidden");
                    break;
                case 'maximum_value':
                    $(".form_builder_block .maximum_value").addClass("hidden");
                    break;
                case 'placeholder_field':
                    $(".form_builder_block .placeholder_field").addClass("hidden");
                    break;
                case 'chat_gpt_prompt':
                    $(".form_builder_block .chat_gpt_prompt").addClass("hidden");
                    break;
                case 'chat_gpt_text_area_mode':
                    $(".form_builder_block .chat_gpt_text_area_mode").addClass("hidden");
                    break;
                case 'chat_gpt_allow_enter_complete_prompt':
                    $(".form_builder_block .chat_gpt_allow_enter_complete_prompt").addClass("hidden");
                    break;
                case 'labels-for-the-prompt':
                    $(".form_builder_block .labels-for-the-prompt").addClass("hidden");
                    break;
                case 'values-for-the-prompt':
                    $(".form_builder_block .values-for-the-prompt").addClass("hidden");
                    break;
                case 'help_chat_gpt_prompt':
                    $(".form_builder_block .help_chat_gpt_prompt").addClass("hidden");
                    break;
                case 'chat_gpt_allow_multiple_pre_define_prompts':
                    $(".form_builder_block .chat_gpt_allow_multiple_pre_define_prompts").addClass("hidden");
                    break;
                case 'chat_gpt_by_ia':
                    $(".form_builder_block .chat_gpt_by_ia").addClass("hidden");
                    break;
                case 'label_field_gpttext_btn':
                    $(".form_builder_block .label_field_gpttext_btn").addClass("hidden");
                    break;
                case 'default_value_field':
                    $(".form_builder_block .default_value").addClass("hidden");
                    break;
                case 'default_value_dropdown_simple':
                    $(".form_builder_block .field-configuration .dropdown_field").addClass("hidden");
                    break;
                case 'default_value_multiselect':
                    $(".form_builder_block .field-configuration .multiselect_field").addClass("hidden");
                    break;
                case 'minimum_age':
                    $(".form_builder_block .minimum_age").addClass("hidden");
                    break;
                case 'date_format':
                    $(".form_builder_block .date_format").addClass("hidden");
                    break;
                case 'field_allow_time':
                    $(".form_builder_block .allow_time").addClass("hidden");
                    break;
                case 'time_format':
                    $(".form_builder_block .time_format").addClass("hidden");
                    break;
                case 'extension_allowed':
                    $(".form_builder_block .extension_allowed").addClass("hidden");
                    break;
                case 'related_files':
                    $(".form_builder_block .related_files").addClass("hidden");
                    break;
                case 'record_to_relate':
                    $(".form_builder_block .record_to_relate").addClass("hidden");
                    break;
                case 'salesforce_library':
                    $(".form_builder_block .salesforce_library").addClass("hidden");
                    break;
                case 'save_in_salesforce':
                    $(".form_builder_block .save_in_salesforce").addClass("hidden");
                    break;
                case 'multiple_files':
                    $(".form_builder_block .multiple_files").addClass("hidden");
                    break;                    
                case 'dropdown-options':
                    $(".form_builder_block .field-configuration .dropdown-options").addClass("hidden");
                    break;
                case 'minimum_characters':
                    $('.form_builder_block .minimum_characters').addClass("hidden");
                    break;
                case 'max_height':
                    $('.form_builder_block .max_height').addClass("hidden");
                    break;
                case 'maximum_characters':
                    $('.form_builder_block .maximum_characters').addClass("hidden");
                    break;
                case 'checkbox_option':
                    $('.form_builder_block .checkbox_option').addClass("hidden");
                    break;
                case 'checkbox_default':
                    $('.form_builder_block .checkbox_default').addClass("hidden");
                    break;
                case 'type_field':
                    $('.form_builder_block .field_type').addClass("hidden");
                    break;
                case 'can_use_any_tokens':
                    $('.form_builder_block .help-text.populate_url').addClass("hidden");
                    $('.form_builder_block .help-text-listing').addClass("hidden");
                    break;
                case 'option_field_phone':
                    $('.form_builder_block ul.help-text-listing li.option-field-phone').addClass("hidden");
                    break;
                case 'option_field_phone_session':
                    $('.form_builder_block ul.help-text-listing li.option-field-phone-session').addClass("hidden");
                    break;
                case 'option_browser_session':
                    $('.form_builder_block ul.help-text-listing li.option-browser-session').addClass("hidden");
                    break;
                case 'option_currentContactAccountID':
                    $('.form_builder_block ul.help-text-listing li.option-currentContactAccountID').addClass("hidden");
                    break;
                case 'option_opptype':
                    $('.form_builder_block ul.help-text-listing li.option-opptype').addClass("hidden");
                    break;
                case 'option_userId':
                    $('.form_builder_block ul.help-text-listing li.option-userId').addClass("hidden");
                    break;
                case 'option_currentDate':
                    $('.form_builder_block ul.help-text-listing li.option-currentDate').addClass("hidden");
                    break;
                case 'option_currentDate_submit':
                    $('.form_builder_block ul.help-text-listing li.option-currentDateSubmit').addClass("hidden");
                    break;
                case 'option_currentAccountID':
                    $('.form_builder_block ul.help-text-listing li.option-currentAccountID').addClass("hidden");
                    break;
                case 'default_datetime':
                    $('.form_builder_block .default_datetime').addClass("hidden");
                    break;
                case 'hide_placeholder':
                    $('.form_builder_block .hide_placeholder').addClass("hidden");
                    break;
                case 'list_view_values':
                    $('.form_builder_block .listview').addClass("hidden");
                    break;
                case 'list_view_options':
                    $('.form_builder_block .list_view_options').addClass("hidden");
                    break;
                case 'mentions_textarea':
                    $('.form_builder_block .mentions_textarea').addClass("hidden");
                    break;
                case 'validatior_code_text':
                    $('.form_builder_block .validatior_code_text').addClass("hidden");
                    break;
                case 'auto_suggest':
                    $('.form_builder_block .auto_suggest').addClass("hidden");
                    break;
                case 'paginate_options':
                    $('.form_builder_block .paginate_options').addClass("hidden");
                    break;
                case 'is_label_diferent_section':
                    $('.form_builder_block .is_label_diferent_section').addClass("hidden");
                    break;
                case 'pull_values_from_sf_help':
                    $('.form_builder_block .pull_values_from_sf_help').addClass("hidden");
                    break;
                case 'currency':
                    $('.form_builder_block .currency_type').addClass("hidden");
                    break;
                case 'decimal_mark':
                    $('.form_builder_block .decimal_mark').addClass("hidden");
                    break;
                case 'private_file':
                    $('.form_builder_block .private_file').addClass("hidden");
                    break;
                case 'encrypted':
                    $(".form_builder_block .encrypted").addClass("hidden");
                    break;
                case 'salesforce-mapping-section':
                    $(".form_builder_block .field-configuration .salesforce-mapping-section").addClass("hidden");
                    $('#form-builder-block .field_to_mention_section').addClass("hidden");
                    $(".form_builder_block .field-configuration .salesforce-mapping-section-notrf").addClass("hidden");
                    break;
                case 'position-label-section':
                    $(".form_builder_block .field-configuration .position-label-section").addClass("hidden");
                    break;
                case 'min_number_options':
                    $(".form_builder_block .field-configuration .min_number_options").addClass("hidden");
                break;
                case 'max_number_options':
                    $(".form_builder_block .field-configuration .max_number_options").addClass("hidden");
                    break;
                case 'display_as_checkboxes':
                    $(".form_builder_block .field-configuration .display_as_checkboxes").addClass("hidden");
                    break;
                case 'number_of_columns_checkbox':
                    $(".form_builder_block .field-configuration .number_of_columns_checkbox").addClass("hidden");
                    break;
                case 'number_validation_text':
                    $(".form_builder_block .field-configuration .number_validation_message").addClass("hidden");
                    break;
                case 'step_value':
                    $(".form_builder_block .field-configuration .step_value").addClass("hidden");
                    break;
                case 'only_future':
                    $(".form_builder_block .field-configuration .only_future").addClass("hidden");
                    break;
                case 'only_past':
                    $(".form_builder_block .field-configuration .only_past").addClass("hidden");
                    break;
                case 'allow_current_date':
                    $(".form_builder_block .field-configuration .allow_current_date").addClass("hidden");
                    break;
                case 'max_days_in_future':
                    $(".form_builder_block .field-configuration .max_days_in_future").addClass("hidden");
                    break;
                case 'max_days_in_past':
                    $(".form_builder_block .field-configuration .max_days_in_past").addClass("hidden");
                    break;
                case 'depends_another_date':
                    $(".form_builder_block .field-configuration .depends_another_date").addClass("hidden");
                    break;
                case 'copy_to_hidden':
                    needCopyToHidden = false;
                    $(".form_builder_block .field-configuration .copy_to_hidden").addClass("hidden");
                    break;
                case 'rule_to_validate':
                    $(".form_builder_block .field-configuration .rule_to_validate").addClass("hidden");
                    break;
                case 'validator_date_field':
                    $(".form_builder_block .field-configuration .validator_date_field").addClass("hidden");
                    break;
                case 'dropdown-options-reloaded':
                    $(".form_builder_block .field-configuration .dropdown-options-reloaded").addClass("hidden");
                    break;
                case 'dropdown-options-labels':
                    $(".form_builder_block .field-configuration .dropdown-options-labels").addClass("hidden");
                    break;
                case 'related_field_object':
                    $(".form_builder_block .related_field_object").addClass("hidden");
                    break;
                case 'file_image':
                    $(".form_builder_block .file_image").addClass("hidden");
                    break;
                case 'file_image_width':
                    $(".form_builder_block .file_image_width").addClass("hidden");
                    break;
                case 'file_image_height':
                    $(".form_builder_block .file_image_height").addClass("hidden");
                    break;
                case 'columns_number':
                    $(".form_builder_block .columns_number").addClass("hidden");
                    break;
                case 'include_grid_lines':
                    $(".form_builder_block .include_grid_lines").addClass("hidden");
                    break;
                case 'section_border_option':
                    $(".form_builder_block .section_border_option").addClass("hidden");
                    break;
                case 'section_border_for':
                    $(".form_builder_block .section_border_for").addClass("hidden");
                    break;
                case 'calculate_items':
                    $(".form_builder_block .calculate_items").addClass("hidden");
                    break;
                case 'payment_component_section':
                    $(".form_builder_block .payment_component_section").addClass("hidden");
                    break;
                case 'title_field':
                    $(".form_builder_block .title_field").addClass("hidden");
                    break;
                case 'display_inline_inputs':
                    $(".form_builder_block .display_inline_inputs").addClass("hidden");
                    break;
                case 'help-text-for-default-value':
                    $(".form_builder_block .help-text-for-default-value").addClass("hidden");
                    break;
                case 'additional-buttons-for-ars':
                    $('.form_builder_block .additional-buttons-for-ars').hide();
                    break;
                case 'submit_cancel':
                    $('.form_builder_block .submit_cancel').hide();
                    $('.form_builder_block .custom_Cancel_url').hide();
                    break;
                case 'addresscomponent_section_options':
                    $('.form_builder_block .addresscomponent_options_section').addClass("hidden");
                    break;
                case 'add_more_record_label_section':
                    $('.form_builder_block .add_more_record_label_section').addClass("hidden");
                    break;
                case 'pull_values_sf_source':
                    $('.form_builder_block .pull_values_sf_source').addClass('hidden');
                    break;
                case 'do_not_save_field_to_database':
                    $('.form_builder_block .do-not-save-field-to-database').addClass("hidden");
                    break;
                case 'include_signature_transaction_info':
                    $('.form_builder_block .include-signature-transaction-info').addClass("hidden");
                    break;
                    
                case 'is_maximum_value_of_another_field':
                    $('.form_builder_block .is-maximum-value-of-another-field').addClass("hidden");
                    break;
                case 'is_minimum_value_of_another_field':
                    $('.form_builder_block .is-minimum-value-of-another-field').addClass("hidden");
                    break;
                case 'is_include_non_visible_fields':
                    $('.form_builder_block .is_include_non_visible_fields').addClass("hidden");
                    break;
                case 'field_maximum_value':
                    $('.form_builder_block .field-maximum-value').addClass("hidden");
                    break;
                case 'field_minimum_value':
                    $('.form_builder_block .field-minimum-value').addClass("hidden");
                    break;
                case 'field_validate_confirm_text':
                    $(".form_builder_block .field_validate_confirm_text").addClass("hidden");
                    break;
                default:
                    break;
            }
        }
        if (needCopyToHidden) {
            loadHiddenFiledsToCopy();
        }
        else {
            if ($('.form_builder_block select[name="copy_to_hidden"]').length > 0) {
                $('.form_builder_block select[name="copy_to_hidden"]').val('');
            }
            else {
                $('.form_builder_block input[name="copy_to_hidden"]').val('');
            }
        }
    }

}

function ShowAllFieldsFormBuilder() {
    if (!is_backend_page()) return;
    $('.form_builder_block .field-configuration .hidden').removeClass("hidden");
    disableRelatedFieldSection();
    $('.form_builder_block select[name="field_visibility"]').val("0");

    $('.form_builder_block .field-configuration .dropdown-options-reloaded.hidden').removeClass("hidden");

    //Remove hidden of address component section
    $('.form_builder_block .field-configuration .addresscomponent_options_section').removeClass("hidden");

    //Remove hidden of help text and listing help text
    $('.form_builder_block .field-configuration .help-text.populate_url').removeClass("hidden");
    $('.form_builder_block .field-configuration .help-text-listing li').removeClass("hidden");

    //Hide Salesforce section if is not checked
    if ($('.form_builder_block input[name="save_data_salesforce"]:checked').length === 0) {
        $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
        $('#form-builder-block .field_to_mention_section').addClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
        $('.form_builder_block .pull_values_sf_source').addClass('hidden');
        $('.form_builder_block .soql_options_section').addClass("hidden");
        $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
        $('#form-builder-block .field_to_mention_section').addClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
    } else {
        $('.form_builder_block .salesforce-mapping-section').removeClass("hidden");
        $('.form_builder_block .pull_values_sf_source').removeClass("hidden");
        $('.form_builder_block .soql_options_section').addClass("hidden");
        $('#form-builder-block .field_to_mention_section').removeClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').removeClass("hidden");
    }

    if (!$('.form_builder_block .additional-buttons-for-ars').hasClass('is-not-ars') && !isNewCMSFeature()) {
        $('.form_builder_block .additional-buttons-for-ars').show();
    }

    var isArs = $('#form-builder-block').hasClass('ars');
    if (!isArs) {
        $('.form_builder_block .submit_cancel').show();
        if (!$('#form-builder-block #include_cancel_button').is(':checked')) {
            $('#form-builder-block .custom_Cancel_url').hide();
        }
    }
    else {
        $('.form_builder_block .submit_cancel').hide();
        $('#form-builder-block .custom_Cancel_url').hide();
    }

}

function ShowTimeFormatField() {
    if (!is_backend_page()) return;
    if ($('.form_builder_block input[name="field_allow_time"]:checked').length > 0) {
        $('.form_builder_block select[name="time_format"]').parent().parent().removeClass("hidden");
    } else {
        $('.form_builder_block select[name="time_format"]').parent().parent().addClass("hidden");
    }
}

function ShowHideCalculatedFields() {
   if (!is_backend_page()) return;
    if ($('.form_builder_block input[name="is_maximum_value_of_another_field"]:checked').length > 0) {
        $('.form_builder_block select[name="field_maximum_value"]').closest('.field-maximum-value').removeClass("hidden");
        $('.form_builder_block input[name="maximum_value"]').closest('.maximum_value').addClass("hidden");
    } else {
        $('.form_builder_block select[name="field_maximum_value"]').closest('.field-maximum-value').addClass("hidden");
        $('.form_builder_block input[name="maximum_value"]').closest('.maximum_value').removeClass("hidden");
    }

    if ($('.form_builder_block input[name="is_minimum_value_of_another_field"]:checked').length > 0) {
        $('.form_builder_block select[name="field_minimum_value"]').closest('.field-minimum-value').removeClass("hidden");
        $('.form_builder_block input[name="minimum_value"]').closest('.minimum_value').addClass("hidden");
    } else {
        $('.form_builder_block select[name="field_minimum_value"]').closest('.field-minimum-value').addClass("hidden");
        $('.form_builder_block input[name="minimum_value"]').closest('.minimum_value').removeClass("hidden");
    }

    
}

function EventShowTimeFormatField() {
    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block input[name="field_allow_time"]',async function () {
        await AjaxLoadSalesForceFields('0', false);
        if ($('.form_builder_block input[name="field_allow_time"]:checked').length > 0) {
            $('.form_builder_block select[name="time_format"]').parent().parent().removeClass("hidden");

        } else {
            $('.form_builder_block select[name="time_format"]').parent().parent().addClass("hidden");
        }
    });
}

function ShowDateValidations() {
    if (!is_backend_page()) return;
    if ($('.form_builder_block input[name="only_future"]:checked').length > 0) {
        $('.form_builder_block input[name="allow_current_date"]').parent().parent().parent().removeClass("hidden");
        $('.form_builder_block input[name="only_past"]').parent().parent().parent().addClass("hidden");
        $('.form_builder_block input[name="max_days_in_past"]').parent().parent().addClass("hidden");
    }
    else if ($('.form_builder_block input[name="only_past"]:checked').length > 0) {
        $('.form_builder_block input[name="allow_current_date"]').parent().parent().parent().removeClass("hidden");
        $('.form_builder_block input[name="only_future"]').parent().parent().parent().addClass("hidden");
        $('.form_builder_block input[name="max_days_in_future"]').parent().parent().addClass("hidden");
    }
    else {
        $('.form_builder_block input[name="allow_current_date"]').parent().parent().parent().addClass("hidden");
        $('.form_builder_block input[name="only_past"]').parent().parent().parent().removeClass("hidden");
        $('.form_builder_block input[name="max_days_in_past"]').parent().parent().removeClass("hidden");
        $('.form_builder_block input[name="only_future"]').parent().parent().parent().removeClass("hidden");
        $('.form_builder_block input[name="max_days_in_future"]').parent().parent().removeClass("hidden");
    }

    if ($('.form_builder_block input[name="depends_another_date"]:checked').length > 0) {
        $('.form_builder_block select[name="rule_to_validate"]').parent().parent().removeClass("hidden");
        $('.form_builder_block select[name="validator_date_field"]').parent().parent().removeClass("hidden");
    }
    else {
        $('.form_builder_block select[name="rule_to_validate"]').parent().parent().addClass("hidden");
        $('.form_builder_block select[name="validator_date_field"]').parent().parent().addClass("hidden");
        $('.form_builder_block select[name="validator_date_field"]').val('');        
    }

}

function EventShowHideCalculatedFields(){
    ShowHideCalculatedFields();
    $(document).on('change', '.form_builder_block input[name="is_maximum_value_of_another_field"],.form_builder_block input[name="is_minimum_value_of_another_field"]', function () {
        ShowHideCalculatedFields();
    });
}
function EventShowDateValidations() {
    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block input[name="only_future"]', function () {
        
        if ($('.form_builder_block input[name="only_future"]:checked').length > 0) {
            $('.form_builder_block input[name="allow_current_date"]').parent().parent().parent().removeClass("hidden");
            $('.form_builder_block input[name="only_past"]').parent().parent().parent().addClass("hidden");
            $('.form_builder_block input[name="max_days_in_past"]').parent().parent().addClass("hidden");
            $('.form_builder_block input[name="max_days_in_past"]').val('');

            if ($('.form_builder_block input[name="default_datetime"]:checked').length > 0) {
                $('.form_builder_block input[name="allow_current_date"]').prop('checked', true);
            }


        } else {
            $('.form_builder_block input[name="allow_current_date"]').parent().parent().parent().addClass("hidden");
            $('.form_builder_block input[name="only_past"]').parent().parent().parent().removeClass("hidden");
            $('.form_builder_block input[name="max_days_in_past"]').parent().parent().removeClass("hidden");
        }
    });

    $(document).on('change', '.form_builder_block input[name="only_past"]', function () {

        if ($('.form_builder_block input[name="only_past"]:checked').length > 0) {
            $('.form_builder_block input[name="allow_current_date"]').parent().parent().parent().removeClass("hidden");
            $('.form_builder_block input[name="only_future"]').parent().parent().parent().addClass("hidden");
            $('.form_builder_block input[name="max_days_in_future"]').parent().parent().addClass("hidden");
            $('.form_builder_block input[name="max_days_in_future"]').val('');

            if ($('.form_builder_block input[name="default_datetime"]:checked').length > 0) {
                $('.form_builder_block input[name="allow_current_date"]').prop('checked', true);
            }

        } else {
            $('.form_builder_block input[name="allow_current_date"]').parent().parent().parent().addClass("hidden");
            $('.form_builder_block input[name="only_future"]').parent().parent().parent().removeClass("hidden");
            $('.form_builder_block input[name="max_days_in_future"]').parent().parent().removeClass("hidden");
        }
    });

    $(document).on('change', '.form_builder_block input[name="depends_another_date"]', function () {

        if ($('.form_builder_block input[name="depends_another_date"]:checked').length > 0) {
            var options = DatatimeFieldsOptions();
            if (options != '') {
                $('.form_builder_block select[name="rule_to_validate"]').parent().parent().removeClass("hidden");
                $('.form_builder_block select[name="validator_date_field"] option').each(function () {
                    $(this).remove();
                });
                $('.form_builder_block select[name="validator_date_field"]').append(options);
                $('.form_builder_block select[name="validator_date_field"]').parent().parent().removeClass("hidden");
            }
            else {
                $('.form_builder_block input[name="depends_another_date"]').prop("checked", false);
                Swal.fire({
                    title: window.translation.warning,
                    text: window.translation.there_is_not_another_date_field,
                    icon: 'warning',
                    closeOnConfirm: true
                });
            }

        } else {
            $('.form_builder_block select[name="rule_to_validate"]').parent().parent().addClass("hidden");
            $('.form_builder_block select[name="validator_date_field"]').parent().parent().addClass("hidden");
            $('.form_builder_block select[name="validator_date_field"]').val('');
        }

    });
    
    $(document).on('change', '.form_builder_block input[name="allow_current_date"]', function () {
        if ($('.form_builder_block input[name="allow_current_date"]:checked').length == 0
            && ($('.form_builder_block input[name="only_past"]:checked').length > 0 || $('.form_builder_block input[name="only_future"]:checked').length > 0))
        {
            $('.form_builder_block input[name="default_datetime"]').prop("checked", false);
        }
    });


    $(document).on('change', '.form_builder_block input[name="default_datetime"]', function () {
        if ($('.form_builder_block input[name="default_datetime"]:checked').length > 0
            && ($('.form_builder_block input[name="only_past"]:checked').length > 0 || $('.form_builder_block input[name="only_future"]:checked').length > 0)) {
            $('.form_builder_block input[name="allow_current_date"]').prop("checked", true);
        }
    });
}

async function ValidationShowSalesforceMappingSection() {
    if (!is_backend_page()) return;
    var isArs = $('#form-builder-block').hasClass('ars');
    var modalFrom = $('#form-builder-block').attr('data-workflow');
    var workflowName = '';

    if ($('.form_builder_block input[name="save_data_salesforce"]:checked').length > 0) {
        $('.form_builder_block .salesforce-mapping-section').removeClass("hidden");
        $('#form-builder-block .field_to_mention_section').removeClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').removeClass("hidden");

        if($('.form_builder_block select[name="salesforce_object"] option').length == 0) {
            if (isArs && workflowName == '' && modalFrom && modalFrom !== 'create-page-signup' && modalFrom !== 'compliance-page') {
                await LoadSalesForceObjects('Contact');
            }
            else {
                //LoadSalesForceObjects();
            }
        }
    } else {
        $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
        $('#form-builder-block .field_to_mention_section').addClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
    }
    // hiding section when is submit type
    if ($('.form_builder_block .submit-row.active').length > 0 || 
        $('.form_builder_block .field-row.active[data-type-field="description"]').length > 0 ||
        $('.form_builder_block .field-row.active[data-type-field="section"]').length > 0) {
        $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
        $('#form-builder-block .field_to_mention_section').addClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
    }
}

function ValidationDisplayOrHideFieldsSFDropdown() {
    if (!is_backend_page()) return;

    let currentValue = $('.form_builder_block select[name="pull_values_sf_source"]').val();
    if (currentValue == 1) { //from pull from field
        $('#form-builder-block .listview').addClass('hidden');
        $('#form-builder-block .list_view_options').addClass('hidden');
        $('#form-builder-block select[name="list_view_salesforce_object"]').val('');
        $('#form-builder-block select[name="listview"]').val('');
        $("#form-builder-block .dropdown-options").addClass("hidden");
        $('#form-builder-block .dropdown-options .dinamyc .option').remove();
        $('#form-builder-block .dropdown-options-reloaded').addClass('hidden');
        $('#form-builder-block .soql_options_section').addClass('hidden');

    } else if (currentValue == 2) {
        $("#form-builder-block .dropdown-options").addClass("hidden");
        $('#form-builder-block .dropdown-options .dinamyc .option').remove();
        $('#form-builder-block .dropdown_field').addClass('hidden');
        $('#form-builder-block .dropdown-options-reloaded').addClass('hidden');

        $('#form-builder-block .soql_options_section').addClass('hidden');

        if ($('#form-builder-block select[name="listview"]').val() !== '' && $('#form-builder-block select[name="listview"]').val() !== null && $('#form-builder-block select[name="listview"]').val() !== undefined) {
            $('#form-builder-block .list-view-dropdown-settings').removeClass('hidden');
        } else {
            $('#form-builder-block .list-view-dropdown-settings').addClass('hidden');

        }

    }
    else if (currentValue == 3) {
        $('#form-builder-block .listview').addClass('hidden');
        $('#form-builder-block .list_view_options').addClass('hidden');
        $('#form-builder-block select[name="list_view_salesforce_object"]').val('');
        $('#form-builder-block select[name="listview"]').val('');
        $("#form-builder-block .dropdown-options").addClass("hidden");
        $('#form-builder-block .dropdown-options .dinamyc .option').remove();
        $('#form-builder-block .dropdown-options-reloaded').addClass('hidden');
        $('#form-builder-block .list-view-dropdown-settings').addClass('hidden');
    }


   

}

function DisplayRichTextOptions() {
    if (!is_backend_page()) return;
    if ($('.form_builder_block input[name="rich_text"]:checked').length === 1) {
        let type_field = $('.form_builder_block select[name="type_field"]').val();
        if (type_field!='gpttext') {
            $('#form-builder-block .mentions_textarea').removeClass('hidden');
            DisplayMentionsSection();
        }
    }
    else {
        $('#form-builder-block .mentions_textarea').addClass('hidden');
    }
}

function DisplayTextAreaModeOptions() {
    if (!is_backend_page()) return;
    let type_field = $('.form_builder_block select[name="type_field"]').val();
    if (type_field == 'gpttext') {
        if ($('.form_builder_block input[name="chat_gpt_text_area_mode"]:checked').length === 1) {
            $('#form-builder-block .rich_text').removeClass('hidden');
        }
        else {
            $('#form-builder-block .rich_text').addClass('hidden');
            $('.form_builder_block input[name="rich_text"]').prop('checked', false);   
        }
    }
}

function DisplayMultiplePreDefinePromptsOptions() {
    if (!is_backend_page()) return;
    let type_field = $('.form_builder_block select[name="type_field"]').val();
    if (type_field == 'gpttext') {
        if ($('.form_builder_block input[name="chat_gpt_allow_enter_complete_prompt"]:checked').length === 1) {
            $('#form-builder-block .chat_gpt_allow_multiple_pre_define_prompts').addClass('hidden');
            $('#form-builder-block .labels-for-the-prompt').addClass('hidden');
            $('#form-builder-block .values-for-the-prompt').addClass('hidden');
            $('#form-builder-block .label_field_gpttext_btn').removeClass('hidden');
            $('#form-builder-block .chat_gpt_prompt').removeClass('hidden');
            $('#form-builder-block .chat_gpt_prompt').find('input').prop('disabled', true);
            $('#form-builder-block .help_chat_gpt_prompt').addClass('hidden');
        }else{
            $('#form-builder-block .chat_gpt_allow_multiple_pre_define_prompts').removeClass('hidden');
            $('#form-builder-block .help_chat_gpt_prompt').removeClass('hidden');
            if ($('.form_builder_block input[name="chat_gpt_allow_multiple_pre_define_prompts"]:checked').length === 1) {
                $('#form-builder-block .labels-for-the-prompt').removeClass('hidden');
                $('#form-builder-block .values-for-the-prompt').removeClass('hidden');
                $('#form-builder-block .chat_gpt_prompt').addClass('hidden');
                $('#form-builder-block .label_field_gpttext_btn').addClass('hidden');
            }else {
                $('#form-builder-block .labels-for-the-prompt').addClass('hidden');
                $('#form-builder-block .values-for-the-prompt').addClass('hidden');
                $('#form-builder-block .label_field_gpttext_btn').removeClass('hidden');
                $('#form-builder-block .chat_gpt_prompt').removeClass('hidden');
                $('#form-builder-block .chat_gpt_prompt').find('input').prop('disabled', false);
            }
        }
    }
}

function PopulatePredefinePrompts($this){
    if (!is_backend_page()) return;
    let type_field = $('.form_builder_block select[name="type_field"]').val();
    if (type_field == 'gpttext') {
        if ($('.form_builder_block input[name="chat_gpt_allow_multiple_pre_define_prompts"]:checked').length === 1) {
            $($this).parents('.help_chat_gpt_prompt').siblings('.labels-for-the-prompt').find('textarea').val("Make it friendlier\nMake grammatically better\nMake it more understandable");
            $($this).parents('.help_chat_gpt_prompt').siblings('.values-for-the-prompt').find('textarea').val("Generate more friendly versions of\nPlease correct the spelling of:\nGenerate more understandable versions of");
        }else{
             $($this).parents('.help_chat_gpt_prompt').siblings('.label_field_gpttext_btn').find('input').val('View suggestions');
             $($this).parents('.help_chat_gpt_prompt').siblings('.chat_gpt_prompt').find('input').val('Generate 5 better titles of');
        }
    }
}

function DisplayMentionsSection(object_mentions, listview_mentions) {
    object_mentions = object_mentions != undefined ? object_mentions : '';
    listview_mentions = listview_mentions != undefined ? listview_mentions : '';
    if (!is_backend_page()) return;
    if ($('.form_builder_block input[name="mentions_textarea"]:checked').length === 1) {
        $('#form-builder-block .mentions_options').removeClass('hidden');
        if (object_mentions != '') {
            $('#form-builder-block select[name="objects_mentions"]').val(object_mentions);
        }
        if (listview_mentions != '') {
            $('#form-builder-block select[name="listviews_mentions"]').val(listview_mentions);
        }
        if ($("#form-builder-block select[name='listviews_mentions'] option").length == 0) {
            loadSfObjects('');
        }
    }
    else {
        $('#form-builder-block .mentions_options').addClass('hidden');
    }
}

function EventsForsMentionsFeature() {

    $('.form_builder_block input[name="rich_text"]').on('change', function () {
        DisplayRichTextOptions();
        DisplayTextAreaModeOptions();
    });

    $('.form_builder_block input[name="chat_gpt_text_area_mode"]').on('change', function () {
        DisplayRichTextOptions();
        DisplayTextAreaModeOptions();
    });
    $('.form_builder_block input[name="chat_gpt_allow_multiple_pre_define_prompts"]').on('change', function () {
        DisplayMultiplePreDefinePromptsOptions();
    });
    $('.form_builder_block input[name="chat_gpt_allow_enter_complete_prompt"]').on('change', function () {
        DisplayMultiplePreDefinePromptsOptions();
    });
    
    $('.form_builder_block input[name="mentions_textarea"]').on('change', function () {
        DisplayMentionsSection();
    });
    $('.form_builder_block span.help-text-btn').on('click', function () {
        let $this = $(this);
        PopulatePredefinePrompts($this);
    });
    
}

function DisplayAsCheckboxesFunctions() {
    if (!is_backend_page()) return;
    //Hide "Load values from Salesforce Field" if "Load picklist options from salesforce listview" is enabled
    if ($('.form_builder_block select[name="display_as_multiselect"]').val() == '1') {
        $('#form-builder-block .number_of_columns_checkbox').removeClass('hidden');
    }
    else {
        $('#form-builder-block .number_of_columns_checkbox').addClass('hidden');
    }

    if ($('.form_builder_block select[name="display_as_multiselect"]').on('change', function () {
        var value = $(this).val();
        if (value == '1') {
            $('#form-builder-block .number_of_columns_checkbox').removeClass('hidden');
        } else {
            $('#form-builder-block .number_of_columns_checkbox').addClass('hidden');
        }
    }
    ));

}

function DisplaySalesforceFilesOptions() {
    if (!is_backend_page()) return;
    var isGlobalAdmin = $('.form_builder_block input[name="is-global-user"]').val() == 'true';
    if ($('.form_builder_block input[name="save_in_salesforce"]:checked').length === 1) {
        if (isGlobalAdmin || IS_LLAMAPI_ENABLED) {
            $('#form-builder-block .record_to_relate').removeClass('hidden');
        }
        else {
            $('#form-builder-block .record_to_relate').addClass('hidden');
        }
        $('#form-builder-block .salesforce_library').removeClass('hidden');
        if (($("#save_data_salesforce").is(':checked') || $("#sharing-portal-form").is(':checked'))) {
            $('#form-builder-block .related_files').removeClass('hidden');
        }
        else {
            $('#form-builder-block .related_files').addClass('hidden');
            $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
            $('#form-builder-block .field_to_mention_section').addClass("hidden");
            $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
        }
    }
    else if ($('.form_builder_block input[name="save_in_salesforce"]:checked').length === 0) {
        $('#form-builder-block .salesforce_library').addClass('hidden');
        $('#form-builder-block .related_files').addClass('hidden');
        $('#form-builder-block .record_to_relate').addClass('hidden');
    }

    if ($('.form_builder_block input[name="related_files"]:checked').length === 1) {
        $('.form_builder_block .salesforce-mapping-section').removeClass("hidden");
        $('#form-builder-block .field_to_mention_section').removeClass("hidden");
        $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
        $('#form-builder-block').find('.copy_to_hidden').addClass('hidden');
        $('.form-builder-block .record_to_relate').removeClass('hidden');
        if (($('.form_builder_block select[name="salesforce_object"]').val() === 'Both_User' ||
            $('.form_builder_block select[name="salesforce_object"]').val() === 'Both_Organization')
            && ($('.field-row.active').length > 0 && $('.field-row.active').data('type-field') == 'file')
        ) {
            $('.form_builder_block .related_field_object').removeClass("hidden");
        }
        else {
            $('.form_builder_block .related_field_object').addClass("hidden");
            
        }
    }
    else {
        if (($("#save_data_salesforce").is(':checked') || $("#sharing-portal-form").is(':checked'))) {
            $('.form_builder_block .salesforce-mapping-section').removeClass("hidden");
            $('#form-builder-block .field_to_mention_section').removeClass("hidden");
            $('.form_builder_block .salesforce-mapping-section-notrf').removeClass("hidden");
        }

        $('.form_builder_block .related_field_object').addClass("hidden");
        
    }
}

function EventDisplaySalesforceMappingSection() {
    if (!is_backend_page()) return;
    var isGlobalAdmin = $('.form_builder_block input[name="is-global-user"]').val() == 'true';

    var formSelector = '#form-builder-block';
    $(document).on('change', '.form_builder_block input[name="kiosk_form"]', function () {
        if ($('.form_builder_block input[name="kiosk_form"]:checked').length > 0) {
            $(formSelector).find('.label-section').removeClass("medium-5");
            $(formSelector).find('.label-section').addClass("medium-8");
            $(formSelector).find('.subsite-settings').addClass('hidden');
            $(formSelector).find('.sharing-portal-form').addClass('hidden');
            $(formSelector).find('.redirection-section').addClass('hidden');
            $(formSelector).find('.required_login_row').addClass('hidden');
            $(formSelector).find('.update_record_row').addClass('hidden');
            $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
            $(formSelector).find('.save_complete_later').addClass('hidden');
            $(formSelector).find('.allow_submitted_data').addClass('hidden');
            $(formSelector).find('input[name="required_login"]').prop('checked', false);
            $(formSelector).find('input[name="update_record"]').prop('checked', false);
            $(formSelector).find('input[name="populate_from_salesforce"]').prop('checked', false);
            $('#form-builder-block').find('.update_record_row').hide();

            $(formSelector).find('input[name="save_data_salesforce"]').prop('checked', true);
            $(formSelector).find('input[name="save_data_salesforce"]').trigger('change');
        }
        else {
            $(formSelector).find('.label-section').addClass("medium-5");
            $(formSelector).find('.label-section').removeClass("medium-8");

            $(formSelector).find('.subsite-settings').removeClass('hidden');
            $(formSelector).find('.sharing-portal-form').removeClass('hidden');
            $(formSelector).find('.redirection-section').removeClass('hidden');
            $(formSelector).find('.required_login_row').removeClass('hidden');
            $(formSelector).find('.update_record_row').removeClass('hidden');
            $(formSelector).find('input[name="save_data_salesforce"]').prop('checked', false);
            $(formSelector).find('input[name="enable_debug_mode"]').prop('checked', false);
            $(formSelector).find('.enable_debug_mode').addClass('hidden');
            $(formSelector).find('.salesforce_object').addClass("hidden");

            //$(formSelector).find('input[name="save_data_salesforce"]').trigger('change');

            //if (isGlobalAdmin == true)
                //$(formSelector).find('.save_complete_later').removeClass('hidden');

        }
    });

    $(document).on('change', '.form_builder_block input[name="save_data_salesforce"]', async function () {
        
        var isArs = $(formSelector).hasClass('ars');
        var modalFrom = $(formSelector).attr('data-workflow');
        var workflowName = '';
        var isCompliance = $(formSelector).find('#isCompliance').val();
        var modalFormBuilder = $(formSelector);
        if ($('.form_builder_block input[name="save_data_salesforce"]:checked').length > 0) {

            if (IS_LLAMAPI_ENABLED == true) {
                $('.form_builder_block select[name="salesforce_object"]').removeAttr('disabled');
            }

            if (isArs === true) {
                
                workflowName = $('#vol-workflow-form').attr('data-from');
                $(formSelector).find('.enable_debug_mode').addClass("hidden");
                $(formSelector).find('.salesforce-mapping-section').removeClass("hidden");
                $('#form-builder-block .field_to_mention_section').removeClass("hidden");
                $(formSelector).find('.salesforce-mapping-section-notrf').removeClass("hidden");
                $(formSelector).find('.populate_from_salesforce_row').remove("hidden");
                $(formSelector).find('.required_login_row').removeClass('hidden');
                $(formSelector).find('.update_record_row').removeClass('hidden');
                $(formSelector).find(".encrypted").removeClass("hidden");
                if (modalFrom === 'create-page-partner') {
                    //Partner Registration
                    $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                    $(formSelector).find('.salesforce_object').removeClass('hidden');
                    $(formSelector).find('.required_login_row').addClass('hidden');
                    $(formSelector).find('.update_record_row').addClass('hidden');
                    $(formSelector).find('.populate_from_salesforce_row ').addClass('hidden');
                    $(formSelector).find('select.salesforce_object').val('');
                    await LoadSalesForceObjects(undefined, undefined, true);
                }
                else if (modalFrom === 'create-page-vol') {
                    $(formSelector).find('.salesforce_object_msg').removeClass('hidden');
                    $(formSelector).find('.salesforce_object').addClass('hidden');
                    $(formSelector).find('.required_login_row').addClass('hidden');
                    $(formSelector).find('.update_record_row').addClass('hidden');
                    $(formSelector).find('.populate_from_salesforce_row ').addClass('hidden');
                    await LoadSalesForceObjects('Contact');
                }
                else if (modalFrom === 'login') {
                    $(formSelector).find('.salesforce_object_msg').removeClass('hidden');
                    $(formSelector).find('.salesforce_object').addClass('hidden');

                    await LoadSalesForceObjects('Contact');
                    $(formSelector).find('.populate_from_salesforce_row').addClass("hidden");
                    $(formSelector).find('.populate_from_salesforce_row').removeClass('hidden');
                    $(formSelector).find('#include_related_objects').parent().parent().parent().parent().find('.populate_from_salesforce_row').addClass('hidden');
                }
                else {
                    $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                    $(formSelector).find('.salesforce_object').removeClass('hidden');
                    $(formSelector).find('.required_login_row').addClass('hidden');
                    $(formSelector).find('.update_record_row').addClass('hidden');
                    $(formSelector).find('.populate_from_salesforce_row ').addClass('hidden');

                    await LoadSalesForceObjects();
                }


                if (isCompliance == "true") {
                    $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                    $(formSelector).find('.salesforce_object').removeClass('hidden');

                    await LoadSalesForceObjects();
                    //Display require and update row
                    $(formSelector).find('.update_record_row').removeClass('hidden');
                }
            } else {
                if(!$('#sharing-portal-form').is(':checked')){
                    $(formSelector).find('.enable_debug_mode').removeClass("hidden");
                }
                else {
                    $(formSelector).find('.enable_debug_mode').addClass("hidden");
                }
                if ($(formSelector).find('input[name="kiosk_form"]:checked').length > 0) {

                    await LoadSalesForceObjects(undefined, undefined, false, false, true);

                } else {

                    await LoadSalesForceObjects();

                }
                $(formSelector).find('.salesforce_object').removeClass("hidden");
                $(formSelector).find('.form_builder_block .salesforce_object_msg').addClass('hidden');
            }
            $(formSelector).find('.salesforce-mapping-section').removeClass("hidden");
            $('#form-builder-block .field_to_mention_section').removeClass("hidden");
            $(formSelector).find('.salesforce-mapping-section-notrf').removeClass("hidden");
            $(formSelector).find(".encrypted").removeClass("hidden");
            $(formSelector).find('.pc_sync_with_salesforce').removeClass('hidden');
            //Block outside of ARS

            //Select submit button item to force load preview fields (If are loaded)
            modalFormBuilder.find('.form-preview').find('.submit-row').trigger('click');
        } else {

            if (IS_LLAMAPI_ENABLED == true && isArs === false) {
                DisableExternalRegistration();
                DisableUserUpdateInformation();
            }



            //Find if exists picklists with populate from SF
            var dataStored = GetLocalFormBuilderStorage();
            var jsonData = null;
            if (dataStored != undefined && dataStored != null && dataStored.trim() != 'undefined' && dataStored.trim() != '') {
                jsonData = JSON.parse(dataStored);
            }
            var existDropdownWithSF = false;
            if (jsonData) {
                jsonData.forEach(function (field) {
                    if (field.typeField === 'dropdown' && !existDropdownWithSF) {
                        field.properties.forEach(function (property) {
                            if ((property.name === 'from_sf_list_views') && !existDropdownWithSF) {
                                if (property.value === true) {
                                    existDropdownWithSF = true;
                                }
                            }
                        });
                    }
                });

                if (existDropdownWithSF) {
                    Swal.fire({
                        title: window.translation.warning,
                        text: window.translation.please_disable_options_pull_sf,
                        icon: 'warning',
                        closeOnConfirm: true
                    });

                    $(formSelector).find('input[name="save_data_salesforce"]').prop('checked', true);
                    $(formSelector).find('input[name="save_data_salesforce"]').trigger('change');

                    return false;
                }
            }

            $(formSelector).find('.salesforce-mapping-section').addClass("hidden");
            $('#form-builder-block .field_to_mention_section').addClass("hidden");
            $(formSelector).find('.salesforce-mapping-section-notrf').addClass("hidden");
            $(formSelector).find('.pc_sync_with_salesforce').addClass('hidden');
            $(formSelector).find(".encrypted").addClass("hidden");
            $(formSelector).find('.salesforce_object').addClass("hidden");
            $(formSelector).find('.salesforce_object_msg').addClass('hidden');
            $(formSelector).find('input[name="kiosk_form"]').prop('checked', false);
            $(formSelector).find('input[name="kiosk_form"]').trigger('change');

            //Validate to display/hide "update record" field
            $(formSelector).find('.update_record_row').addClass('hidden');

            // Hide populate from salesforce field
            $(formSelector).find('.populate_from_salesforce_row').addClass("hidden");
            $(formSelector).find('input[name="populate_from_salesforce"]').prop('checked', false);
            $('#form-builder-block').find('.update_record_row').hide();
            remove_dependency_salesforce_fields();

            //Trigger click to submit field to avoid problems of properties
            $('.form-preview').find('.submit-row').trigger('click');
        }

        // Hiding section when is submit type
        if ($(formSelector).find('.submit-row.active').length > 0) {
            $(formSelector).find('.salesforce-mapping-section').addClass("hidden");
            $('#form-builder-block .field_to_mention_section').addClass("hidden");
            $(formSelector).find('.salesforce-mapping-section-notrf').addClass("hidden");
            $(formSelector).find(".encrypted").addClass("hidden");
        }
        EventDisplayOptionsSaveDataIn(undefined,true);
    });
}

function EventDisplayOptionsSaveDataIn(is_sharing_portal, change_field_save_data_salesforce) {
    var formSelector = '#form-builder-block';
    var form_id = $(formSelector).find('input[name="form-id"]').val();
    var do_not_save_anything_locally = $(formSelector).find('input[name="do_not_save_anything_locally"]').val();
    var sync_data_salesforce  = $(formSelector).find('input[name="save_data_salesforce"]').is(':checked');
    var save_data_on = $(formSelector).find('select[name="save_data_on"]').val();

    var isArs = $(formSelector).hasClass('ars');
    var field_is_sharing_portal_form = $(formSelector).find('input[name="sharing-portal-form"]').is(':checked');
    var is_sharing_portal_form = (is_sharing_portal == undefined) ? field_is_sharing_portal_form : is_sharing_portal;

    $(formSelector).find('.save-data-sf-db').show();
    if (do_not_save_anything_locally == 'True' && !sync_data_salesforce) {
        $(formSelector).find("select[name='save_data_on']").val(0).attr('disabled', true);
    } else if (do_not_save_anything_locally == 'True' && sync_data_salesforce) {
        $(formSelector).find("select[name='save_data_on']").val(2).attr('disabled', true);
    } else if (do_not_save_anything_locally == 'False' && !sync_data_salesforce) {
        $(formSelector).find("select[name='save_data_on']").val(1).attr('disabled', true);
    } else if (do_not_save_anything_locally == 'False' && sync_data_salesforce) {
        $(formSelector).find("select[name='save_data_on']").attr('disabled', false);
        if(!save_data_on){
            $(formSelector).find("select[name='save_data_on']").val(0).attr('disabled', false);
        }
        if (change_field_save_data_salesforce) {
            $(formSelector).find("select[name='save_data_on']").val(0);
        }
    }
    if (isArs || is_sharing_portal_form) {
        $(formSelector).find('.save-data-sf-db').hide();
    }
}

async function LoadSalesForceObjects(defaultOption, NoHideProcessing, isPartnerRegistration, skipCache, isKiosk) {

    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    
    var isArs = ($('.form_builder_block.ars').length > 0) ? true : false;
    defaultOption = (typeof defaultOption === 'undefined') ? '' : defaultOption;
    NoHideProcessing = (typeof NoHideProcessing === 'undefined') ? '' : NoHideProcessing;

    if (skipCache === undefined)
        skipCache = false;

    var isCompliance = $('.form_builder_block.ars input[name="isCompliance"]').val();
    if (isCompliance == "true") {
        isArs = false;
    }

    let response = await $.ajax({
        method: "POST",
        url: urlSite + "admin/GetSalesforceObjects",
        data: {
            isARS: isArs,
            isPartnerRegistration: (typeof isPartnerRegistration === 'undefined') ? false : isPartnerRegistration,
            isKiosk: (typeof isKiosk === 'undefined') ? false : isKiosk,
            skipCache: skipCache,

        },
        beforeSend: function () {
            activeLoading();
        }
    });

    if (response !== null && response !== undefined) {
        var jsonResult = JSON.parse(response);
        if (jsonResult.status == "ok") {
            var object = jsonResult.salesforceObjects;
            var arrayItems = [];

            //We no longer clear out the selected object
            //$('.form_builder_block select[name="salesforce_object"]').empty();
            //$('.form_builder_block select[name="related_field_object"]').empty();

            $.each(object, function (index, item) {
                arrayItems.push({ api_name: item.api_name, label: item.label });
            });

            //Sort array
            arrayItems.sort(function (a, b) {
                if (a.label < b.label) return -1;
                if (a.label > b.label) return 1;
                return 0;
            });

            // Get list of available options
            var alreadyListedSobjects = ";";
            var isFirstLoad = true;
            $('.form_builder_block select[name="salesforce_object"] option').each(function () {
                alreadyListedSobjects += this.value + ";";
                isFirstLoad = false;
            });

            //Defaault Option
            if (isFirstLoad) {

                var defOption = '<option value="">' + window.translation.select_one + '</option>';
                $('.form_builder_block select[name="salesforce_object"]').append(defOption);
            }
            var firstValue = false;

            //Populate select
            $.each(arrayItems, function (index, item) {
                var option = '';
                if (defaultOption == item.api_name) {
                    option = '<option selected value="' + item.api_name + '">' + item.label + '</option>';
                } else {
                    option = '<option value="' + item.api_name + '">' + item.label + '</option>';
                }

                // If the object is not already listed, we append it to the list
                if (isFirstLoad || (!isFirstLoad && !alreadyListedSobjects.includes(';' + item.api_name + ';'))) {

                    $('.form_builder_block select[name="salesforce_object"]').append(option);
                }

                if (item.api_name != 'Both_User' && item.api_name != 'Both_Organization') {
                    if (firstValue) {
                        option = '<option selected value="' + item.api_name + '">' + item.label + '</option>';
                        firstValue = false;
                    } else {
                        option = '<option value="' + item.api_name + '">' + item.label + '</option>';
                    }

                    $('.form_builder_block select[name="related_field_object"]').append(option);
                }
            });

            if (defaultOption != '') {
                $('.form_builder_block select[name="salesforce_object"]').val(defaultOption);
            }

            if (IS_LLAMAPI_ENABLED == true && (active_from_registration == true || active_from_update_user_information == true) && isArs == false) {
                $('.form_builder_block').find('select[name="salesforce_object"]').val('Contact');
                $('.form_builder_block').find('select[name="salesforce_object"]').prop('disabled', true);
                DisplayExternalRegistrationFields();
            }

            if ($('.form_builder_block select[name="salesforce_object"]').hasClass('select2-hidden-accessible')) {
                 $('.form_builder_block select[name="salesforce_object"]').select2('destroy');
                 $('.form_builder_block select[name="salesforce_object"]').siblings('.select2-container').remove();
            }
            $('.form_builder_block select[name="salesforce_object"]').select2({
                containerCssClass: 'form-builder-field-salesforce_object',
                dropdownCssClass: 'form-builder-field-salesforce_object-options',
                dropdownParent: $('#form-builder-block')
            });
            $('.form_builder_block select[name="salesforce_object"]').siblings('.select2-container').addClass('container-form-builder-field-salesforce_object');
            finishLoading();
            DisplayDontPopulateAccountSetting();
        } else {
            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });
        }

    }

    /*$.ajax({
        method: "POST",
        url: urlSite + "admin/GetSalesforceObjects",
        data: {
            isARS: isArs,
            isPartnerRegistration: (typeof isPartnerRegistration === 'undefined') ? false : isPartnerRegistration,
            isKiosk: (typeof isKiosk === 'undefined') ? false : isKiosk,
            skipCache: skipCache,

        },
        beforeSend: function () {
            activeLoading();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status == "ok") {
            var object = jsonResult.salesforceObjects;
            var arrayItems = [];

            //We no longer clear out the selected object
            //$('.form_builder_block select[name="salesforce_object"]').empty();
            //$('.form_builder_block select[name="related_field_object"]').empty();

            $.each(object, function (index, item) {
                arrayItems.push({api_name: item.api_name, label: item.label});
            });

            //Sort array
            arrayItems.sort(function(a,b) {
                if(a.label < b.label) return -1;
                if(a.label > b.label) return 1;
                return 0;
            });

            // Get list of available options
            var alreadyListedSobjects = ";";
            var isFirstLoad = true;
            $('.form_builder_block select[name="salesforce_object"] option').each(function () {
                alreadyListedSobjects += this.value + ";";
                isFirstLoad = false;
            });

            //Defaault Option
            if (isFirstLoad) {

                var defOption = '<option value="">' + window.translation.select_one + '</option>';
                $('.form_builder_block select[name="salesforce_object"]').append(defOption);
            }
            var firstValue = false;

            //Populate select
            $.each(arrayItems, function (index, item) {
                var option = '';
                if (defaultOption == item.api_name) {
                    option = '<option selected value="' + item.api_name + '">' + item.label + '</option>';
                } else {
                    option = '<option value="' + item.api_name + '">' + item.label + '</option>';
                }

                // If the object is not already listed, we append it to the list
                if (isFirstLoad || (!isFirstLoad && !alreadyListedSobjects.includes(';' + item.api_name + ';'))) {

                    $('.form_builder_block select[name="salesforce_object"]').append(option);
                }

                if (item.api_name != 'Both_User' && item.api_name != 'Both_Organization') {
                    if (firstValue) {
                        option = '<option selected value="' + item.api_name + '">' + item.label + '</option>';
                        firstValue = false;
                    } else {
                        option = '<option value="' + item.api_name + '">' + item.label + '</option>';
                    }

                    $('.form_builder_block select[name="related_field_object"]').append(option);
                }
            });

            if (defaultOption != '') {
                $('.form_builder_block select[name="salesforce_object"]').val(defaultOption);
            }

            if (IS_LLAMAPI_ENABLED == true && (active_from_registration == true || active_from_update_user_information == true) && isArs == false) {
                $('.form_builder_block').find('select[name="salesforce_object"]').val('Contact');
                $('.form_builder_block').find('select[name="salesforce_object"]').prop('disabled', true);
                DisplayExternalRegistrationFields();
            }

            finishLoading();
            DisplayDontPopulateAccountSetting();
        } else {
            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });
        }
    });*/
}

function LoadSalesForceFields() {
    if (!is_backend_page()) return;
    var formSelector = '#form-builder-block';
    $(document).on('change', '.form_builder_block select[name="salesforce_object"]', async function () {
        var isArs = $(formSelector).hasClass('ars');
        var isKiosk = $(formSelector).find('input[name="kiosk_form"]:checked').length > 0;
        var modalFrom = $(formSelector).attr('data-workflow');
        var update_record_field = $(formSelector).find('.update_record_row');
        var formTokenStore = $(formSelector).find('input[name="form-hash-token"]').val();

        $('.form_builder_block .related-field-section').hide();
        $('.form_builder_block select[name="salesforce_rel_field"]').val('');
        var sfobject = $(this).val();
        if (sfobject) {
            AjaxLoadSalesForceFieldsForMentions(sfobject);
            var update_record_message = update_record_field.find('.message_sid_querystring');
            $(formSelector).find('input[name="sf-object-pc"]').val(sfobject);
            //Load information of fields based in SF object
            await AjaxLoadSalesForceFields('0', false);
            await AjaxLoadSalesForceFieldsAll(false);

            //Edit SF Mapping in localstorage
            var formDataFromLocalstorage = GetLocalFormBuilderStorage();
            var formDataJson = (formDataFromLocalstorage != null && formDataFromLocalstorage != "") ? JSON.parse(formDataFromLocalstorage) : [];

            formDataJson.forEach(function(fields) { 
                
                if(fields.typeField !== 'submit') {
                    var flag = false;    

                    fields.properties.forEach(function (item) {

                        var changeObject = (item.name === 'salesforce_object' || item.name === 'salesforce_object_field') && item.name !== sfobject;

                        //  Edit SF object
                        if(changeObject) {
                            item.value = sfobject;
                            flag = true;
                        }

                        //  Empty sf_field due to object changed
                        if (flag && item.name === 'salesforce_field') {
                            item.value = "";
                        }
                    });
                }
            });
            setDataToSessionStore(formDataJson, formTokenStore);
            //localStorage.setItem('json-form-builder-data-' + formTokenStore, JSON.stringify(formDataJson));

            if (!isArs) {
                //Make visible update record field
                if (!isKiosk) {
                    update_record_field.removeClass('hidden');
                    update_record_field.find('input[type="checkbox"]').prop('checked', false);
                    update_record_field.find('input[type="checkbox"]').trigger('change');
                    $(formSelector).find('form#form-builder .populate_from_salesforce_row').removeClass('hidden');

                    if (sfobject == 'Contact' && $(formSelector).find('input[name="populate_from_salesforce"]').prop('checked')) {
                        $(formSelector).find('.enforce_session_section').removeClass('hidden');
                    }
                }

            } else {
                if (modalFrom == 'create-page-signup') {
                    $(formSelector).find('.required_login_row').removeClass('hidden');
                    $(formSelector).find('.update_record_row').removeClass('hidden');
                    $(formSelector).find('form#form-builder .populate_from_salesforce_row').removeClass('hidden'); //  hide populate_from_salesforce_row

                }

            }

            //Hide message of "Turn on record update"
            update_record_message.addClass('hidden');
        } else {
            update_record_field.addClass('hidden');
            $('.form_builder_block select[name="salesforce_field"] option').remove();
            $('.form_builder_block select[name="salesforce_field"] optgroup').remove();
            $('.form_builder_block .populate_from_salesforce_row').addClass("hidden");
            $('.form_builder_block input[name="populate_from_salesforce"]').prop('checked', false);
            $('#form-builder-block').find('.update_record_row').hide();
        }
    });
}
function checkDependentPicklistMessage() {
    // Display message for dependent picklist
    var sfField = $('.form_builder_block select[name="salesforce_field"]');
    // Removing dependent picklist message
    $('.salesforce-mapping-section').find('.dependent_sf_rule').remove();
    var jsonSalesforceFieldsValue = localStorage.getItem("salesforce-fields");
    var jsonSalesforceFields = JSON.parse(jsonSalesforceFieldsValue);
    if (jsonSalesforceFields !== null && jsonSalesforceFields.fields !== null) {
        // checking if salesforce field is dependent picklist
        jsonSalesforceFields.fields.forEach(function (item) {
            if(sfField.val() === item.apiName && item.dependentPicklist === true) {
                if(item.controllerName !== null) {
                    var labelControlledField = item.controllerName;
                    jsonSalesforceFields.fields.forEach(function (field) {
                        if(field.apiName === labelControlledField) labelControlledField = field.label;
                    })
                    var messageSFfield = window.translation.dependent_rule_defined_with + ': ' + '<b>' + labelControlledField + '</b>';
                    var messageSFfield1 = window.translation.to_apply_dependent_rule + ': '+ '<b>'+ labelControlledField + '</b>';
                    sfField.after('<p class="dependent_sf_rule">'+messageSFfield + '<br>' + messageSFfield1 + '</p>');
                }
            }
        });
    }
}

function SetSalesforceFieldObject() {
    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block select[name="salesforce_field"]', async function () {
        var sfField = $(this);
        activeLoading();
        var object = sfField.find('option:selected').data('object');
        $('.form_builder_block input[name="salesforce_object_field"]').val(object);
        var field_type = $(".form_builder_block select[name='type_field']").val();

        if (field_type == "textbox" || field_type == "textarea") {
            LoadDefaulSFDCtMaxLength(sfField.val());

        }
        if (field_type == 'dropdown') {
            await add_default_values_for_picklist_from_salesforce(null);
            checkDependentPicklistMessage()
        }

        
        if (sfField.find('option:selected').data('relation-name') && sfField.find('option:selected').data('relation-name') != '') {
            $('.form_builder_block input[name="reference_to_object"]').val(sfField.find('option:selected').data('reference-object'));
            $('.form_builder_block input[name="reference_field"]').val(sfField.find('option:selected').data('reference-field'));
            if (sfField.find('option:selected').data('master-detail') == true) {
                $('.form_builder_block input[name="is_master_detail"]').val(true);
            }
            else {
                $('.form_builder_block input[name="is_master_detail"]').val(false);
            }
            enableRelatedFieldSection();
        }
        else {
            disableRelatedFieldSection();
        }
        finishLoading();
    });
}

function enableRelatedFieldSection(predefinedValue) {
    $('.form_builder_block select[name="salesforce_rel_field"] option').remove();
    var option = '<option data-object="none" value="none"> ' + window.translation.none + '</option>';
    $('.form_builder_block select[name="salesforce_rel_field"]').append(option);
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $('.form_builder_block .related-field-section').show();
    var sfObj = $('.form_builder_block select[name="salesforce_field"] option:selected').data('reference-object');
    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetSalesforceFields",
        data: { sfObject: sfObj, skipCache: false, includeSession: false, include_related_objects: false },
        beforeSend: function () {
            activeLoading();
        }
    }).done(function (data) {
        var typeField = $('#form-builder-block select[name="type_field"]').val();
        var allowTime = $('#form-builder-block [name="field_allow_time"]').prop('checked');
        var isEncrypted = $('#form-builder-block [name="encrypted"]').prop('checked');
        var isRichText = $('#form-builder-block [name="rich_text"]').prop('checked');

        if (allowTime == true && typeField == 'datetime') {
            typeField = 'datetime_time';
        }

        if (typeField == 'textbox' && isEncrypted) {
            typeField = 'textbox_encrypted';
        }

        if (typeField == 'textarea' && isRichText) {
            typeField = 'rich_text';
        }
        var jsonResult = JSON.parse(data);
        if (jsonResult.status === "ok") {

            var object = jsonResult.salesforceFields.fields;
            var allArrayItems = [];

            $.each(object, function (index, item) {
                if (acceptedSalesforceFields(typeField, item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                    allArrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, type: item.type });
                }
            });

            if (!include_related_objects) {
                //Sort array
                allArrayItems.sort(function (a, b) {
                    if (a.label < b.label) return -1;
                    if (a.label > b.label) return 1;
                    return 0;
                });
            }
            $.each(allArrayItems, function (index, item) {
                var option = '<option value="' + item.apiName + '" data-type="' + item.type + '">' + item.label + '</option>';
                $('.form_builder_block select[name="salesforce_rel_field"]').append(option);
            });

            if (predefinedValue != undefined) {
                $('.form_builder_block select[name="salesforce_rel_field"]').val(predefinedValue);
            }
        } else {

            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });
        }
        
    });

    
}

function disableRelatedFieldSection() {
    $('.form_builder_block select[name="salesforce_rel_field"]').val('');
    $('.form_builder_block input[name="is_master_detail"]').val(false);
    $('.form_builder_block input[name="reference_to_object"]').val('');
    $('.form_builder_block input[name="reference_field"]').val('');
    $('.form_builder_block .related-field-section').hide();
}

function acceptedSalesforceFields(typeField, SalesforceType, extratypeinfo, updatable, calculated, isReference, isAddressElement, isSalesforceAllFields) {
    var content = false;

    var isLLSHOC = $('body').hasClass('hoc-volunteer-system-hybrid');
    if (isReference) {
        content = true;
    }
    if (typeField == 'hidden') { //Allowed all types
        content = true;
    }
    if ((typeField == 'textbox' || isAddressElement) && (SalesforceType == "string" || SalesforceType == "reference") && calculated == false) {
        content = true;
    }
    if (typeField == 'percent' && (SalesforceType == "percent") && calculated == false) {
        content = true;
    }
    if (typeField == 'calculate' && (SalesforceType == "string" || SalesforceType == "reference") && calculated == false) {
        content = true;
    }
    if (typeField == 'signature' && (SalesforceType == "string" || SalesforceType == "reference" || SalesforceType == "url") && calculated == false) {
        content = true;
    }
    if (typeField == 'gpttext' && (SalesforceType == "textarea" || SalesforceType == "string" || SalesforceType == "reference") && calculated == false) {
        content = true;
    }
    if (typeField == 'textbox_encrypted' && SalesforceType == "encryptedstring") {
        content = true;
    }
    if ((typeField == 'textarea' || isAddressElement === true) && SalesforceType == "textarea" && extratypeinfo != "richtextarea" && calculated == false) {
        content = true;
    }
    if (typeField == 'rich_text' && SalesforceType == "textarea" && calculated == false) {
        content = true;
    }
    if ((typeField == 'dropdown' || isAddressElement) && (SalesforceType == "picklist" || SalesforceType == "reference" || SalesforceType == "multipicklist" || isSalesforceAllFields == true) && calculated == false) {
        content = true;
    }
    if (typeField == 'multiselect' && SalesforceType == "multipicklist" && calculated == false) {
        content = true;
    }
    if (typeField == 'email' && SalesforceType == "email" && calculated == false) {
        content = true;
    }
    if (typeField == 'password' && SalesforceType == "string" && calculated == false) {
        content = true;
    }
    if (typeField == 'phone' && SalesforceType == "phone" && calculated == false) {
        content = true;
    }
    if (typeField == 'datetime' && SalesforceType == "date" && calculated == false) {
        content = true;
    }
    if (typeField == 'datetime_time' && SalesforceType == "datetime" && calculated == false) {
        content = true;
    }
    if (typeField == 'datetime' && SalesforceType == "datetime" && calculated == false) {
        content = true;
    }
    if (typeField == 'file' && (SalesforceType == "url" || isLLSHOC && SalesforceType == "string") && calculated == false) {
        content = true;
    }
    if (typeField == 'multiple_file' && SalesforceType == "textarea" && calculated == false) {
        content = true;
    }
    if (typeField == 'number' && (SalesforceType == "int" || SalesforceType == "double") && calculated == false) {
        content = true;
    }
    if (typeField == 'checkbox' && SalesforceType == "boolean" && calculated == false) {
        content = true;
    }
    if (typeField == 'radio' && SalesforceType == "picklist" && calculated == false) {
        content = true;
    }
    if (typeField == 'currency' && SalesforceType == "currency" && calculated == false) {
        content = true;
    }
    if (typeField == 'url' && SalesforceType == "url" && calculated == false) {
        content = true;
    }

    if (typeField == 'paymentcomponent-label' && SalesforceType == 'string' && calculated == false) {
        content = true;
    }

    if (typeField == 'paymentcomponent-amount' && (SalesforceType == 'string' || SalesforceType == "double" || SalesforceType == "currency") && calculated == false) {
        content = true;
    }

    if (typeField === 'paymentcomponent-transaction' && SalesforceType === 'string' && calculated === false) {
        content = true;
    }

    if (typeField === 'paymentcomponent-get-amount' && SalesforceType === 'currency' && calculated === false) {
        content = true;
    }

    if (typeField == 'formula' && calculated == true) {
        content = true;
    }

    if ((typeField == 'mentions') && (SalesforceType == "string" || SalesforceType == "textarea") && calculated == false) {
        content = true;
    }
        
    return content;
}


async function AjaxLoadSalesForceFieldsAll(skipCache, sfObj) {
    //Get if site is sharingPortalPlus
    var sfFieldPreviouslySelected = $('#form-builder-block select[name="salesforce_field"]').val();
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $('.form_builder_block select[name="field_to_filter"] option').remove();
    $('.form_builder_block select[name="filter_value"] option').remove();
    if ($('#form-builder-block select[name="salesforce_object"]').length > 0 && $('#form-builder-block select[name="salesforce_object"]').val() != '' && $('#form-builder-block select[name="salesforce_object"]').val() != null) {
        sfObj = $('#form-builder-block select[name="salesforce_object"]').val();
    }
    var include_related_objects = $('#form-builder-block input[name="include_related_objects"]').prop('checked');

    var jsonData = localStorage.getItem("salesforce-fields-all");

    if (sfObj !== null && sfObj !== undefined && sfObj !== "") {
        if (jsonData != "" && jsonData != null) {
            var JsonFields = JSON.parse(jsonData);

            var needChangeOfDisplay = include_related_objects && $('.form_builder_block select[name="salesforce_field"] optgroup').length == 0
                || !include_related_objects && $('.form_builder_block select[name="salesforce_field"] optgroup').length > 0;
            
            if (JsonFields.salesforceObject !== sfObj) {  
                let response = await $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetSalesforceFields",
                    data: { sfObject: sfObj, skipCache: skipCache, includeSession: true, include_related_objects: true },
                    beforeSend: function () {
                        activeLoading();
                    }
                });
                if (response !== null && response !== undefined) {
                    var jsonResult = JSON.parse(response);
                    if (jsonResult.status === "ok") {
                        localStorage.setItem("salesforce-fields-all", JSON.stringify(jsonResult.salesforceFields));
                        var object = jsonResult.salesforceFields.fields;
                        var objectSession = jsonResult.salesforceFields.sessionVariables;
                        var allArrayItems = [];
                        var sessionVarItems = [];

                        $.each(object, function (index, item) {
                            allArrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, relationshipName: item.relationshipName, objectLabel: item.objectLabel, isMasterDetail: item.isMasterDetail, referenceToObject: item.referenceToObject, referenceField: item.referenceField });
                        });
                        $.each(objectSession, function (index, item) {
                            sessionVarItems.push({ object: item.label, apiName: item.token, label: item.token });
                        });

                        if (!include_related_objects) {
                            //Sort array
                            allArrayItems.sort(function (a, b) {
                                if (a.label < b.label) return -1;
                                if (a.label > b.label) return 1;
                                return 0;
                            });
                        }
                        $.each(allArrayItems, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '" data-type="' + item.type + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="field_to_filter"]').append(option);
                        });
                        populate_salesforce_fields_include_related(include_related_objects, allArrayItems);

                        $.each(sessionVarItems, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="filter_value"]').append(option);
                        });
                        var dataForAutocomplete = get_data_for_autocomplete_filter_field_formbuilder(sessionVarItems, false, false, true);
                        $('.form_builder_block input[name="custom_parameter_name"], .form_builder_block input[name="sf_listview_default_value"], .form_builder_block input[name="sf_listview_filter_value"],.form_builder_block input[name="sf_listview_filter_value_rule"]').autocomplete({
                            source: dataForAutocomplete,
                        });

                        finishLoading();
                    } else {

                        Swal.fire({
                            title: window.translation.warning,
                            text: jsonResult.message,
                            icon: "error",
                            closeOnConfirm: true
                        });
                    }

                }
                /*$.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetSalesforceFields",
                    data: { sfObject: sfObj, skipCache: skipCache, includeSession: true, include_related_objects: true },
                    beforeSend: function () {
                        activeLoading();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.status === "ok") {
                        localStorage.setItem("salesforce-fields-all", JSON.stringify(jsonResult.salesforceFields));
                        var object = jsonResult.salesforceFields.fields;
                        var objectSession = jsonResult.salesforceFields.sessionVariables;
                        var allArrayItems = [];
                        var sessionVarItems = [];

                        $.each(object, function (index, item) {
                            allArrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, relationshipName: item.relationshipName, objectLabel: item.objectLabel, isMasterDetail: item.isMasterDetail, referenceToObject: item.referenceToObject, referenceField: item.referenceField  });
                        });
                        $.each(objectSession, function (index, item) {
                            sessionVarItems.push({ object: item.label, apiName: item.token, label: item.token });
                        });

                        if (!include_related_objects) {
                            //Sort array
                            allArrayItems.sort(function (a, b) {
                                if (a.label < b.label) return -1;
                                if (a.label > b.label) return 1;
                                return 0;
                            });
                        }
                        $.each(allArrayItems, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '" data-type="' + item.type + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="field_to_filter"]').append(option);
                        });
                        populate_salesforce_fields_include_related(include_related_objects, allArrayItems);

                        $.each(sessionVarItems, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="filter_value"]').append(option);
                        });

                        var dataForAutocomplete = get_data_for_autocomplete_filter_field_formbuilder(sessionVarItems, false, false, true);                        
                        $('.form_builder_block input[name="custom_parameter_name"], .form_builder_block input[name="sf_listview_default_value"], .form_builder_block input[name="sf_listview_filter_value"],.form_builder_block input[name="sf_listview_filter_value_rule"]').autocomplete({
                            source: dataForAutocomplete,
                        });


                    } else {

                        Swal.fire({
                            title: window.translation.warning,
                            text: jsonResult.message,
                            icon: "error",
                            closeOnConfirm: true
                        });
                    }
                    
                });*/
                return true;
            } else {
                var JsonFields = JSON.parse(jsonData);
                var objectSession = JsonFields.sessionVariables;
                var object = JsonFields.fields;
                var allArrayItems = [];
                var sessionVarItems = [];


                
                $.each(object, function (index, item) {
                    allArrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, type: item.type });
                });
                $.each(objectSession, function (index, item) {
                    sessionVarItems.push({ object: item.label, apiName: item.token, label: item.token });
                });

                //Sort array
                allArrayItems.sort(function (a, b) {
                    if (a.label < b.label) return -1;
                    if (a.label > b.label) return 1;
                    return 0;
                });

                $.each(allArrayItems, function (index, item) {
                    var option = '<option data-object="' + item.object + '" value="' + item.apiName + '" data-type="' + item.type + '">' + item.label + '</option>';
                    $('.form_builder_block select[name="field_to_filter"]').append(option);
                });
                $.each(sessionVarItems, function (index, item) {
                    var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                    $('.form_builder_block select[name="filter_value"]').append(option);
                });
                var dataForAutocomplete = get_data_for_autocomplete_filter_field_formbuilder(sessionVarItems, false, false, true);
                $('.form_builder_block input[name="custom_parameter_name"], .form_builder_block input[name="sf_listview_default_value"], .form_builder_block input[name="sf_listview_filter_value"],.form_builder_block input[name="sf_listview_filter_value_rule"]').autocomplete({
                    source: dataForAutocomplete,
                });

                finishLoading();
                
            }
        }
        else {
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetSalesforceFields",
                data: { sfObject: sfObj, skipCache: skipCache, includeSession: true, include_related_objects: include_related_objects },
                beforeSend: function () {
                    activeLoading();
                }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.status === "ok") {

                        localStorage.setItem("salesforce-fields-all", JSON.stringify(jsonResult.salesforceFields));
                        var allArrayItems = [];
                        var sessionVarItems = [];
                        var object = jsonResult.salesforceFields.fields;
                        var objectSession = jsonResult.salesforceFields.sessionVariables;

                        $('.form_builder_block select[name="field_to_filter"] option').remove();

                        $.each(object, function (index, item) {
                            allArrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, type: item.type  });
                        });
                        $.each(objectSession, function (index, item) {
                            sessionVarItems.push({ object: item.label, apiName: item.token, label: item.label });
                        });


                        //Sort array
                        allArrayItems.sort(function (a, b) {
                            if (a.label < b.label) return -1;
                            if (a.label > b.label) return 1;
                            return 0;
                        });
                        $.each(allArrayItems, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '" data-type="' + item.type + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="field_to_filter"]').append(option);
                        });
                        $.each(sessionVarItems, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '" >' + item.label + '</option>';
                            $('.form_builder_block select[name="filter_value"]').append(option);
                        });

                        var dataForAutocomplete = get_data_for_autocomplete_filter_field_formbuilder(sessionVarItems, false, false, true);
                        $('.form_builder_block input[name="custom_parameter_name"], .form_builder_block input[name="sf_listview_default_value"], .form_builder_block input[name="sf_listview_filter_value"],.form_builder_block input[name="sf_listview_filter_value_rule"]').autocomplete({
                            source: dataForAutocomplete,
                        });

                        finishLoading();

                    } else {


                        Swal.fire({
                            title: window.translation.warning,
                            text: jsonResult.message,
                            icon: "error",
                            closeOnConfirm: true
                        });
                    }

                    //Hide processing screen
                    
                });
                return true;
        }
    }
    return false;
}

async function AjaxLoadSalesForceFields(elementId, skipCache, IsCheckboxChange) {
    
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var sfObj = $('#form-builder-block select[name="salesforce_object"]').val();
    var sfFieldPreviouslySelected = $('#form-builder-block select[name="salesforce_field"]').val();
    var typeField = $('#form-builder-block select[name="type_field"]').val();
    var isMultipleFile = $('#form-builder-block [name="multiple_files"]').prop('checked');
    var allowTime = $('#form-builder-block [name="field_allow_time"]').prop('checked');
    var isEncrypted = $('#form-builder-block [name="encrypted"]').prop('checked');
    var isRichText = $('#form-builder-block [name="rich_text"]').prop('checked');
    var include_related_objects = $('#form-builder-block input[name="include_related_objects"]').prop('checked');
    var isAddresComponentElement = false;
    var jsonCurrentFormData = GetLocalFormBuilderStorage();
    var elementItem = null;
    var isSalesforceAllFields = false;
    var property_pull_values_from_sf = null;

    $('.form_builder_block input[name="mentions_textarea"]').prop("checked", false);
    
    if (jsonCurrentFormData != "" && jsonCurrentFormData != null) {
        var jsonCurrentForm = JSON.parse(jsonCurrentFormData);
        elementItem = jsonCurrentForm.find(x => x.elementId == elementId);

        if (elementItem !== null && elementItem !== undefined && typeField !== null && typeField !== "hidden") {
            //this not apply for fields related to latitude and longitude
            let property = elementItem.properties.find(x => x.name == "custom_cssclass");
            property_pull_values_from_sf = elementItem.properties.find(x => x.name == "pull_values_from_sf");
            //property_pull_values_from_sf = elementItem.properties.find(x => x.name == "option_from_source_sf");
            if (property !== null && property !== undefined && property.value !== null) {
                isAddresComponentElement = property.value.indexOf('address-component') > -1;
            }
        }
    }




    if (isRichText == false) {
        isRichText = isFieldRichTextFromElement(elementItem);
    }
    if (isMultipleFile == false) {
        isMultipleFile = isMultipleFileFromElement(elementItem);
    }

    if (isEncrypted == false) {
        isEncrypted = isEncriptedFieldFromElement(elementItem);
    } else {
        if (elementId !== '0') {
            var isEnc = isEncriptedFieldFromElement(elementItem);
            if (isEnc == false) {
                isEncrypted = false;
            }

        }
    }


    var jsonData = localStorage.getItem("salesforce-fields");
    if(allowTime == true && typeField == 'datetime'){
        typeField = 'datetime_time';
    }

    if(typeField == 'textbox' && isEncrypted) {
        typeField = 'textbox_encrypted';
    }

    if(typeField == 'textarea' && isRichText) {
        typeField = 'rich_text';
    }

    if (typeField == 'file' && isMultipleFile) {
        typeField = 'multiple_file';
    }

    if( typeField === 'dropdown'){
        let input_pull_values_from_sf = false;
        if (IsCheckboxChange) {
                input_pull_values_from_sf = $('#form-builder-block .build-field-settings .pull_values_from_sf input[name="pull_values_from_sf"]').prop('checked');
        }else{
            if (property_pull_values_from_sf !== null && property_pull_values_from_sf !== undefined && property_pull_values_from_sf.value !== null) {
                input_pull_values_from_sf = property_pull_values_from_sf.value;
            }
        }

        isSalesforceAllFields = (input_pull_values_from_sf === true) ? false : true;


    }
    if (sfObj !== null && sfObj !== undefined && sfObj !== "") {
        if (jsonData != "" && jsonData != null) {
            var JsonFields = JSON.parse(jsonData);
            var needChangeOfDisplay = include_related_objects && $('.form_builder_block select[name="salesforce_field"] optgroup').length == 0
                || !include_related_objects && $('.form_builder_block select[name="salesforce_field"] optgroup').length > 0;
            if (JsonFields.salesforceObject !== sfObj) {

                let response = await $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetSalesforceFields",
                    data: { sfObject: sfObj, typeField: typeField, skipCache: skipCache, include_related_objects: true },
                    beforeSend: function () {
                        activeLoading();
                    }
                });

                if (response !== null && response !== undefined) {
                    var jsonResult = JSON.parse(response);
                    if (jsonResult.status === "ok") {
                        localStorage.setItem("salesforce-fields", JSON.stringify(jsonResult.salesforceFields));
                        var object = jsonResult.salesforceFields.fields;
                        var option = '<option data-object="none" value="none"> ' + window.translation.none + '</option>';
                        var arrayItems = [];
                        var paymentLabel = [];
                        var paymentAmount = [];
                        var paymentTransaction = [];
                        var getPaymentAmount = [];
                        $('.form_builder_block select[name="salesforce_field"] option').remove();
                        $('.form_builder_block select[name="salesforce_field"] optgroup').remove();
                        $('.form_builder_block select[name="salesforce_field"]').append(option);
                        $('.form_builder_block select[name="sf-label-pc"] option').remove();
                        $('.form_builder_block select[name="sf-label-pc"]').append(option);
                        $('.form_builder_block select[name="sf-amount-pc"] option').remove();
                        $('.form_builder_block select[name="sf-amount-pc"]').append(option);
                        $('.form_builder_block select[name="sf-transtaction-status"] option').remove();
                        $('.form_builder_block select[name="sf-transtaction-status"]').append(option);
                        $('.form_builder_block select[name="sf-get-salesforce-amount-field"] option').remove();
                        $('.form_builder_block select[name="sf-get-salesforce-amount-field"]').append(option);
                        $('.form_builder_block select[name="sf-transtaction-payment-method"] option').remove();
                        $('.form_builder_block select[name="sf-transtaction-payment-method"]').append(option);
                        $('.form_builder_block select[name="sf-transtaction-payment-billing-name"] option').remove();
                        $('.form_builder_block select[name="sf-transtaction-payment-billing-name"]').append(option);
                        $('.form_builder_block select[name="sf-transtaction-payment-subscription-info"] option').remove();
                        $('.form_builder_block select[name="sf-transtaction-payment-subscription-info"]').append(option);
                        $('.form_builder_block select[name="sf-total-transaction-fee"] option').remove();
                        $('.form_builder_block select[name="sf-total-transaction-fee"]').append(option);
                        $('.form_builder_block select[name="sf-transtaction-id"] option').remove();
                        $('.form_builder_block select[name="sf-transtaction-id"]').append(option);

                        $.each(object, function (index, item) {
                            if (acceptedSalesforceFields(typeField, item.type, item.extraTypeInfo, item.updatable, item.calculated, item.isReference, isAddresComponentElement) == true) {
                                arrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, relationshipName: item.relationshipName, objectLabel: item.objectLabel, isMasterDetail: item.isMasterDetail, referenceToObject: item.referenceToObject, referenceField: item.referenceField });
                            }
                            if (acceptedSalesforceFields('paymentcomponent-label', item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                                paymentLabel.push({ object: item.object, apiName: item.apiName, label: item.label });
                            }
                            if (acceptedSalesforceFields('paymentcomponent-amount', item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                                paymentAmount.push({ object: item.object, apiName: item.apiName, label: item.label });
                            }
                            if (acceptedSalesforceFields('paymentcomponent-transaction', item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                                paymentTransaction.push({ object: item.object, apiName: item.apiName, label: item.label });
                            }
                            if (acceptedSalesforceFields('paymentcomponent-get-amount', item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                                getPaymentAmount.push({ object: item.object, apiName: item.apiName, label: item.label });
                            }
                        });



                        //Sort array
                        if (!include_related_objects) {
                            arrayItems.sort(function (a, b) {
                                if (a.label < b.label) return -1;
                                if (a.label > b.label) return 1;
                                return 0;
                            });
                        }
                        populate_salesforce_fields_include_related(include_related_objects, arrayItems);
                        paymentLabel.sort(function (a, b) {
                            if (a.label < b.label) return -1;
                            if (a.label > b.label) return 1;
                            return 0;
                        });

                        paymentAmount.sort(function (a, b) {
                            if (a.label < b.label) return -1;
                            if (a.label > b.label) return 1;
                            return 0;
                        });
                        paymentTransaction.sort(function (a, b) {
                            if (a.label < b.label) return -1;
                            if (a.label > b.label) return 1;
                            return 0;
                        });

                        $.each(paymentLabel, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="sf-label-pc"]').append(option);
                        });

                        $.each(paymentAmount, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="sf-amount-pc"]').append(option);
                            $('.form_builder_block select[name="sf-total-transaction-fee"]').append(option);
                        });

                        $.each(paymentTransaction, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="sf-transtaction-id"]').append(option);
                            $('.form_builder_block select[name="sf-transtaction-status"]').append(option);
                            $('.form_builder_block select[name="sf-transtaction-payment-method"]').append(option);
                            $('.form_builder_block select[name="sf-transtaction-payment-billing-name"]').append(option);
                            $('.form_builder_block select[name="sf-transtaction-payment-subscription-info"]').append(option);
                        });

                        $.each(getPaymentAmount, function (index, item) {
                            var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                            $('.form_builder_block select[name="sf-get-salesforce-amount-field"]').append(option);
                        });

                        if (elementId != '0') {
                            if (!IsCheckboxChange) {
                                await loadValuesFromLocalStorage(elementId);
                            }
                        } else {
                            if (IS_LLAMAPI_ENABLED == true && (active_from_registration == true || active_from_update_user_information == true) && typeField == "email") {
                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').val('Email');

                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').prop('disabled', 'disabled');
                                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').prop('disabled', 'disabled');
                                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').prop('disabled', 'disabled');

                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').attr('is-llamapi-userinfo-update', 'true');
                                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').attr('is-llamapi-userinfo-update', 'true');
                                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').attr('is-llamapi-userinfo-update', 'true');

                                $('#form-builder-block').find('.field-configuration button.save_field').trigger('click');
                                active_from_registration = false;
                                active_from_update_user_information = false;

                            } else if (IS_LLAMAPI_ENABLED == true && $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').attr('is-llamapi-userinfo-update')) {

                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').removeAttr('disabled');
                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').removeAttr('is-llamapi-userinfo-update');
                                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').removeAttr('disabled');
                                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').removeAttr('is-llamapi-userinfo-update');
                                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').removeAttr('disabled');
                                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').removeAttr('is-llamapi-userinfo-update');
                            }
                        }


                    } else {

                        Swal.fire({
                            title: window.translation.warning,
                            text: jsonResult.message,
                            icon: "error",
                            closeOnConfirm: true
                        });
                    }

                    finishLoading();
                }
                
                return true;
            } else {
                var JsonFields = JSON.parse(jsonData);

                var object = JsonFields.fields;
                var arrayItems = [];
                var datetTimeItems = [];
                var paymentLabel = [];
                var paymentAmount = [];
                var paymentTransaction = [];
                var getPaymentAmount =[];

                var option = '<option data-object="none" value="none"> ' + window.translation.none + '</option>';
                $('.form_builder_block select[name="salesforce_field"] option').remove();
                $('.form_builder_block select[name="salesforce_field"] optgroup').remove();
                $('.form_builder_block select[name="sf-label-pc"] option').remove();
                $('.form_builder_block select[name="sf-label-pc"]').append(option);
                $('.form_builder_block select[name="sf-amount-pc"] option').remove();
                $('.form_builder_block select[name="sf-amount-pc"]').append(option);
                $('.form_builder_block select[name="sf-transtaction-status"] option').remove();
                $('.form_builder_block select[name="sf-transtaction-status"]').append(option);
                $('.form_builder_block select[name="sf-get-salesforce-amount-field"] option').remove();
                $('.form_builder_block select[name="sf-get-salesforce-amount-field"]').append(option);
                $('.form_builder_block select[name="sf-transtaction-payment-method"] option').remove();
                $('.form_builder_block select[name="sf-transtaction-payment-method"]').append(option);
                $('.form_builder_block select[name="sf-transtaction-payment-billing-name"] option').remove();
                $('.form_builder_block select[name="sf-transtaction-payment-billing-name"]').append(option);
                $('.form_builder_block select[name="sf-transtaction-payment-subscription-info"] option').remove();
                $('.form_builder_block select[name="sf-transtaction-payment-subscription-info"]').append(option);
                $('.form_builder_block select[name="sf-total-transaction-fee"] option').remove();
                $('.form_builder_block select[name="sf-total-transaction-fee"]').append(option);
                $('.form_builder_block select[name="sf-transtaction-id"] option').remove();
                $('.form_builder_block select[name="sf-transtaction-id"]').append(option);
                $('.form_builder_block select[name="salesforce_field"]').append(option);


                $.each(object, function (index, item) {
                    if (acceptedSalesforceFields(typeField, item.type, item.extraTypeInfo, item.updatable, item.calculated, item.isReference, isAddresComponentElement,isSalesforceAllFields) === true) {
                        arrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, relationshipName: item.relationshipName, objectLabel: item.objectLabel, isMasterDetail: item.isMasterDetail, referenceToObject: item.referenceToObject, referenceField: item.referenceField  });
                    }
                    if ((typeField == 'datetime' || typeField == 'datetime_time') && 
                        acceptedSalesforceFields('datetime_time', item.type, item.extraTypeInfo, item.updatable, item.calculated) === true) {
                        datetTimeItems.push(item.apiName);
                    }
                    if (acceptedSalesforceFields('paymentcomponent-label', item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                        paymentLabel.push({ object: item.object, apiName: item.apiName, label: item.label });
                    }
                    if (acceptedSalesforceFields('paymentcomponent-amount', item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                        paymentAmount.push({ object: item.object, apiName: item.apiName, label: item.label });
                    }
                    if (acceptedSalesforceFields('paymentcomponent-transaction', item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                        paymentTransaction.push({ object: item.object, apiName: item.apiName, label: item.label });
                    }


                    if (acceptedSalesforceFields('paymentcomponent-get-amount', item.type, item.extraTypeInfo, item.updatable, item.calculated) == true) {
                        getPaymentAmount.push({ object: item.object, apiName: item.apiName, label: item.label });
                    }
                });

                //Sort array
                if (!include_related_objects) {
                    arrayItems.sort(function (a, b) {
                        if (a.label < b.label) return -1;
                        if (a.label > b.label) return 1;
                        return 0;
                    });
                }
                populate_salesforce_fields_include_related(include_related_objects, arrayItems, datetTimeItems);
                //Sort array
                paymentLabel.sort(function (a, b) {
                    if (a.label < b.label) return -1;
                    if (a.label > b.label) return 1;
                    return 0;
                });

                paymentAmount.sort(function (a, b) {
                    if (a.label < b.label) return -1;
                    if (a.label > b.label) return 1;
                    return 0;
                });

                paymentTransaction.sort(function (a, b) {
                    if (a.label < b.label) return -1;
                    if (a.label > b.label) return 1;
                    return 0;
                });
                                
                //Populate select
                $.each(paymentLabel, function (index, item) {
                    var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                    $('.form_builder_block select[name="sf-label-pc"]').append(option);
                });

                $.each(paymentAmount, function (index, item) {
                    var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                    $('.form_builder_block select[name="sf-amount-pc"]').append(option);
                    $('.form_builder_block select[name="sf-total-transaction-fee"]').append(option);
                });

                $.each(paymentTransaction, function (index, item) {
                    var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                    $('.form_builder_block select[name="sf-transtaction-id"]').append(option);
                    $('.form_builder_block select[name="sf-transtaction-status"]').append(option);
                    $('.form_builder_block select[name="sf-transtaction-payment-method"]').append(option);
                    $('.form_builder_block select[name="sf-transtaction-payment-billing-name"]').append(option);
                    $('.form_builder_block select[name="sf-transtaction-payment-subscription-info"]').append(option);
                });

                $.each(getPaymentAmount, function (index, item) {
                    var option = '<option data-object="' + item.object + '" value="' + item.apiName + '">' + item.label + '</option>';
                    $('.form_builder_block select[name="sf-get-salesforce-amount-field"]').append(option);
                });

                if (IS_LLAMAPI_ENABLED == true && (active_from_registration == true || active_from_update_user_information == true) && typeField == "email") {
                    $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').val('Email');

                    $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').prop('disabled', 'disabled');
                    $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').prop('disabled', 'disabled');
                    $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').prop('disabled', 'disabled');

                    $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').attr('is-llamapi-userinfo-update', 'true');
                    $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').attr('is-llamapi-userinfo-update', 'true');
                    $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').attr('is-llamapi-userinfo-update', 'true');


                    $('#form-builder-block').find('.field-configuration button.save_field').trigger('click');
                    active_from_registration = false;
                    active_from_update_user_information = false;

                } else if (IS_LLAMAPI_ENABLED == true && $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').attr('is-llamapi-userinfo-update')) {

                    $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').removeAttr('disabled');
                    $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').removeAttr('is-llamapi-userinfo-update');
                    $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').removeAttr('disabled');
                    $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').removeAttr('is-llamapi-userinfo-update');
                    $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').removeAttr('disabled');
                    $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').removeAttr('is-llamapi-userinfo-update');
                }

                if (sfFieldPreviouslySelected != undefined && sfFieldPreviouslySelected != '' && sfFieldPreviouslySelected != 'none') {
                    $('#form-builder-block select[name="salesforce_field"]').val(sfFieldPreviouslySelected);
                }

                
                finishLoading();
            }
        }
        else {
            if (typeField != 'description' && typeField != "submit" && typeField != "") {
                var include_related_objects = $('#form-builder-block input[name="include_related_objects"]').prop('checked');

                let response = await $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetSalesforceFields",
                    data: { sfObject: sfObj, typeField: typeField, skipCache: skipCache, include_related_objects: true },
                    beforeSend: function () {
                        activeLoading();
                    }
                });
                if (response !== null && response !== undefined) {
                    var jsonResult = JSON.parse(response);
                    if (jsonResult.status === "ok") {

                        localStorage.setItem("salesforce-fields", JSON.stringify(jsonResult.salesforceFields));
                        var arrayItems = [];
                        var datetTimeItems = [];
                        var object = jsonResult.salesforceFields.fields;
                        var option = '<option data-object="none" value="none"> ' + window.translation.none + '</option>';

                        $('.form_builder_block select[name="salesforce_field"] option').remove();
                        $('.form_builder_block select[name="salesforce_field"] optgroup').remove();
                        $('.form_builder_block select[name="salesforce_field"]').append(option);

                        $.each(object, function (index, item) {
                            if (acceptedSalesforceFields(typeField, item.type, item.extraTypeInfo, item.updatable, item.calculated, item.isReference) == true) {
                                arrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, relationshipName: item.relationshipName, objectLabel: item.objectLabel, isMasterDetail: item.isMasterDetail, referenceToObject: item.referenceToObject, referenceField: item.referenceField });
                            }
                            if ((typeField == 'datetime' || typeField == 'datetime_time') &&
                                acceptedSalesforceFields('datetime_time', item.type, item.extraTypeInfo, item.updatable, item.calculated) === true) {
                                datetTimeItems.push(item.apiName);
                            }
                        });

                        if (!include_related_objects) {
                            arrayItems.sort(function (a, b) {
                                if (a.label < b.label) return -1;
                                if (a.label > b.label) return 1;
                                return 0;
                            });
                        }
                        populate_salesforce_fields_include_related(include_related_objects, arrayItems, datetTimeItems);

                        if (elementId != '0') {
                            await loadValuesFromLocalStorage(elementId);
                        } else {
                            if (IS_LLAMAPI_ENABLED == true && (active_from_registration == true || active_from_update_user_information == true) && typeField == "email") {
                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').val('Email');

                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').prop('disabled', 'disabled');
                                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').prop('disabled', 'disabled');
                                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').prop('disabled', 'disabled');

                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').attr('is-llamapi-userinfo-update', 'true');
                                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').attr('is-llamapi-userinfo-update', 'true');
                                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').attr('is-llamapi-userinfo-update', 'true');



                                $('#form-builder-block').find('.field-configuration button.save_field').trigger('click');
                                active_from_registration = false;
                                active_from_update_user_information = false;

                            } else if (IS_LLAMAPI_ENABLED == true && $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').attr('is-llamapi-userinfo-update')) {

                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').removeAttr('disabled');
                                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').removeAttr('is-llamapi-userinfo-update');
                                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').removeAttr('disabled');
                                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').removeAttr('is-llamapi-userinfo-update');
                                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').removeAttr('disabled');
                                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').removeAttr('is-llamapi-userinfo-update');
                            }

                        }

                    } else {
                        Swal.fire({
                            title: window.translation.warning,
                            text: jsonResult.message,
                            icon: "error",
                            closeOnConfirm: true
                        });
                    }

                    finishLoading();
                }

                return true;
            }
        }
    }
    return false;
}

function EventAlertHandleDateTimeAsDate() {

    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block select[name="salesforce_field"]', function () {
        
        var _value = $(this).val();
        var arrayItems = [];
        var _type = $('#row-fields .field-row.active').data('type-field');
        var allowTime = $('.form_builder_block input[name="field_allow_time"]:checked').length > 0;


        $('select[name="salesforce_field"] option.datetime-option').each(function () {
            arrayItems.push($(this).val());
            
        });

        if (_type == 'datetime' && !allowTime && arrayItems.indexOf(_value) != -1) {
            
            Swal.fire({
                title: window.translation.warning,
                text: 'This input is mapped with a Salesforce DateTime field. If you do not Allow Time, 00:00:00 is going to be sent as the hour of each date.',
                icon: "warning",
                closeOnConfirm: true
            });
        }
    });
}



function populate_salesforce_fields_include_related(includeRelatedObject, arrayItems, datetTimeItems) {
    $('.form_builder_block select[name="salesforce_field"] option').remove();
    
    var option = '<option data-object="none" value="none"> ' + window.translation.none + '</option>';
    var referencesItems = '';
    $.each(arrayItems, function (index, item) {
        
        if (includeRelatedObject && item.objectLabel != '' || item.objectLabel == '' || item.objectLabel == undefined) {

            if (item.objectLabel == '') {
                item.objectLabel = $('.form_builder_block select[name="salesforce_object"] option:selected').text();
            }
            var classDateTime = '';
            if (datetTimeItems != undefined && datetTimeItems.indexOf(item.apiName) != -1) {
                classDateTime = 'class="datetime-option"';
            }
            option += '<option data-object="' + item.object + '"';
            option += ' value="' + item.apiName + '"';
            option += item.objectLabel ? (' data-object-label="' + item.objectLabel + '"' ): '';
            option += item.referenceField ? (' data-reference-field="' + item.referenceField + '"' ): '';
            option += item.referenceToObject ? (' data-reference-object="' + item.referenceToObject + '"' ): '';
            option += item.relationshipName ? (' data-relation-name="' + item.relationshipName + '"' ): '';
            option += item.isMasterDetail ? (' data-master-detail="' + item.isMasterDetail + '"' ): '';
            option +=  '  ' + classDateTime + '  >' + item.label + '</option>';
            previousGroup = item.objectLabel;

            if (item.relationshipName) {
                referencesItems += referencesItems == '' ? (item.referenceField.toLowerCase()) : (', ' + item.referenceField.toLowerCase());
            }
        }
        else {
        }
    });
    
    $('#relation-fields-helptext').html(referencesItems);
    $('.form_builder_block select[name="salesforce_field"]').append(option);
    
}


function AjaxLoadSalesForceFieldsForMentions(sfObj, valueSelected) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var include_related_objects = false;
    if (sfObj !== null && sfObj !== undefined && sfObj !== "") {
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetSalesforceFields",
            data: { sfObject: sfObj, include_related_objects: include_related_objects },
            beforeSend: function () {
                activeLoading();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            if (jsonResult.status === "ok") {
                //localStorage.setItem("salesforce-fields", JSON.stringify(jsonResult.salesforceFields));
                var arrayItems = [];
                var datetTimeItems = [];
                var object = jsonResult.salesforceFields.fields;
                $('.form_builder_block select[name="field_mentions"] option').remove();
                $('.form_builder_block select[name="field_mentions"] optgroup').remove();
                $('.form_builder_block select[name="field_mentions"]').append(option);

                $.each(object, function (index, item) {
                    if (acceptedSalesforceFields('mentions', item.type, item.extraTypeInfo, item.updatable, item.calculated, item.isReference, false) == true) {
                        arrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, relationshipName: item.relationshipName, objectLabel: item.objectLabel, isMasterDetail: item.isMasterDetail, referenceToObject: item.referenceToObject, referenceField: item.referenceField });
                    }
                    
                    if (item.type == 'datetime') {
                        datetTimeItems.push(item.apiName);
                    }

                });

                //Sort array
                if (!include_related_objects) {
                    arrayItems.sort(function (a, b) {
                        if (a.label < b.label) return -1;
                        if (a.label > b.label) return 1;
                        return 0;
                    });
                }

                
                var option = '<option data-object="none" value="none"> ' + window.translation.none + '</option>';
                $.each(arrayItems, function (index, item) {

                    if (item.objectLabel == '' || item.objectLabel == undefined) {

                        if (item.objectLabel == '') {
                            item.objectLabel = $('.form_builder_block select[name="salesforce_object"] option:selected').text();
                        }
                        var classDateTime = '';
                        if (datetTimeItems != undefined && datetTimeItems.indexOf(item.apiName) != -1) {
                            classDateTime = 'class="datetime-option"';
                        }
                        option += '<option data-object="' + item.object + '"';
                        option += ' value="' + item.apiName + '"';
                        option += item.objectLabel ? (' data-object-label="' + item.objectLabel + '"') : '';                        
                        option += '  ' + classDateTime + '  >' + item.label + '</option>';
                    }
                });

                $('.form_builder_block select[name="field_mentions"]').append(option);

                if (valueSelected) {
                    $('.form_builder_block select[name="field_mentions"]').val(valueSelected);
                }
               


            } else {


                Swal.fire({
                    title: window.translation.warning,
                    text: jsonResult.message,
                    icon: "error",
                    closeOnConfirm: true
                });
            }
            //Hide processing screen
           
        });
    } else {
        // this is due to always shown the processing screen for some forms that were saved incorrectly previous to the fix of HOC3-12469,
        //then if objects is null or empty the processing screen is removed
        
    }
}

async function AjaxPreLoadSalesForceFields(sfObj) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var include_related_objects = $('#form-builder-block input[name="include_related_objects"]').prop('checked');
    if (sfObj !== null && sfObj !== undefined && sfObj !== "") {
        let response = await $.ajax({
            method: "POST",
            url: urlSite + "admin/GetSalesforceFields",
            data: { sfObject: sfObj, include_related_objects: true },
            beforeSend: function () {
                activeLoading();
            }
        });
        if (response !== null && response !== undefined) {
            var jsonResult = JSON.parse(response);
            if (jsonResult.status === "ok") {
                localStorage.setItem("salesforce-fields", JSON.stringify(jsonResult.salesforceFields));
                var arrayItems = [];
                var datetTimeItems = [];
                var object = jsonResult.salesforceFields.fields;
                var option = '<option data-object="none" value="none"> ' + window.translation.none + '</option>';
                $('.form_builder_block select[name="salesforce_field"] option').remove();
                $('.form_builder_block select[name="salesforce_field"] optgroup').remove();
                $('.form_builder_block select[name="salesforce_field"]').append(option);

                $.each(object, function (index, item) {
                    arrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, relationshipName: item.relationshipName, objectLabel: item.objectLabel, isMasterDetail: item.isMasterDetail, referenceToObject: item.referenceToObject, referenceField: item.referenceField });
                    if (item.type == 'datetime') {
                        datetTimeItems.push(item.apiName);
                    }

                });

                //Sort array
                if (!include_related_objects) {
                    arrayItems.sort(function (a, b) {
                        if (a.label < b.label) return -1;
                        if (a.label > b.label) return 1;
                        return 0;
                    });
                }
                populate_salesforce_fields_include_related(include_related_objects, arrayItems, datetTimeItems);

            } else {


                Swal.fire({
                    title: window.translation.warning,
                    text: jsonResult.message,
                    icon: "error",
                    closeOnConfirm: true
                });
            }
            //Hide processing screen
            finishLoading();

        }
        /*$.ajax({
            method: "POST",
            url: urlSite + "admin/GetSalesforceFields",
            data: { sfObject: sfObj, include_related_objects: true },
            beforeSend: function () {
                activeLoading();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            if (jsonResult.status === "ok") {
                localStorage.setItem("salesforce-fields", JSON.stringify(jsonResult.salesforceFields));
                var arrayItems = [];
                var datetTimeItems = [];
                var object = jsonResult.salesforceFields.fields;
                var option = '<option data-object="none" value="none"> ' + window.translation.none + '</option>';
                $('.form_builder_block select[name="salesforce_field"] option').remove();
                $('.form_builder_block select[name="salesforce_field"] optgroup').remove();
                $('.form_builder_block select[name="salesforce_field"]').append(option);

                $.each(object, function (index, item) {
                    arrayItems.push({ object: item.object, apiName: item.apiName, label: item.label, relationshipName: item.relationshipName, objectLabel: item.objectLabel, isMasterDetail: item.isMasterDetail, referenceToObject: item.referenceToObject, referenceField: item.referenceField });
                    if (item.type == 'datetime') {
                        datetTimeItems.push(item.apiName);
                    }

                });

                //Sort array
                if (!include_related_objects) {
                    arrayItems.sort(function (a, b) {
                        if (a.label < b.label) return -1;
                        if (a.label > b.label) return 1;
                        return 0;
                    });
                }
                populate_salesforce_fields_include_related(include_related_objects, arrayItems, datetTimeItems);

            } else {


                Swal.fire({
                    title: window.translation.warning,
                    text: jsonResult.message,
                    icon: "error",
                    closeOnConfirm: true
                });
            }
            //Hide processing screen
            finishLoading();
        });*/
    } else {
        // this is due to always shown the processing screen for some forms that were saved incorrectly previous to the fix of HOC3-12469,
        //then if objects is null or empty the processing screen is removed
        finishLoading();
    }
}

function ShowSubmitButtonFormBuilder() {
    if (!is_backend_page()) return;
    if (GetQuantityElementsFormBuilder() > 0 && $('.form_builder_block .form-preview .container-form .submit-row').length === 0) {
        //Generating submit button
        $('.form_builder_block .submit-row').remove();
        var form_preview = $('.form_builder_block .form-preview .container-form');
        var submit_field = '<div data-element-id="0" class="submit-row field-row" data-type-field="submit" data-field-id="0" data-block-name="submit">'
            + '<div class="content full">'
            + '<div class="right-full">'
            + '<button type="button" class="button">' + window.translation.submit + '</button>'
            + '</div>'
            + '</div>'
            + '<div class="options quick">'
            + '<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="0" title="submit" class="logic"  data-element-id="0" data-for-submit="true">' + window.translation.logic + '</a>'
            + '<a data-type-field="submit" title="edit-field" class="edit-field" data-field-id="0" data-element-id="0"></a>'
            + '<span class="move" data-element-id="0"></span>'
            + '</div>'
            + '</div>';
        form_preview.append(submit_field);
        $('.form_builder_block .submit-row').removeClass("hidden");



        //$('.form_builder_block .submit-row').removeClass("hidden");
    } 
}
function isNewCMSFeature() {
    let isNewCMS = false;
    if ($('#form-builder input[name="newcmsfeature"]').length > 0)
        isNewCMS = $('#form-builder input[name="newcmsfeature"]').val() == "1";
    return isNewCMS;

}

function activeLoading() {
    if (!isNewCMSFeature()) {
        $('#form-builder').find('.processing_screen').attr('style', '');
        $('#form-builder').find('.processing_screen').removeClass('hide-custom');
    } else
        displayWaitModal();
}

function finishLoading() {
    if (!isNewCMSFeature()) {
        $('#form-builder').find('.processing_screen').attr('style', '');
        $('#form-builder').find('.processing_screen').addClass('hide-custom');
    } else
        hideWaitModal();
}

function SetActiveField() {
    if (!is_backend_page()) return;
    $(document).on('click', '.form_builder_block .tabs .tabs-title', async function (event) {
        var field_row_active = $('.form_builder_block .field-row.active');
        var type_field_active = field_row_active.data("type-field");
        var align_selected = $(".form_builder_block").find('select[name="align_label"]').val();
        await updateFormBuilderPreview(type_field_active, align_selected);
    });
    $(document).on('click', '.form_builder_block .field-row', async function (event) {
        event.stopPropagation();
        activeLoading();
        var data_lang = ($(this).attr('data-lang') != '') ? $(this).attr('data-lang') : '';
        if(data_lang){
            $('.field-configuration .tabs .tabs-title').each(function(index, el) {
                var lang_id = $(this).find('.tab-language').attr('data-language-id');
                if (data_lang == lang_id) {
                    //$(this).click();
                }
            });
        }
        var form_preview = $('.form_builder_block .form-preview');
        var field_row = $(this);
        
        var elementId = field_row.data('element-id');

        var is_active = $(this).hasClass('active');
        var typefield = field_row.data("type-field");
        $('.form_builder_block').find('input[name="include_cancel_button"]').prop('checked', false);
        // removing dependent_sf_rule meesage
        $('.salesforce-mapping-section').find('.dependent_sf_rule').remove();


        var isExternalRegistrationEmailInput = IS_LLAMAPI_ENABLED == true && $(this).hasClass('external-registration-username');
        if (is_active == false) {
            //Validate if there are field changes
            if ($("#form_changed").val() === "false") {
                // inactive field-row to set one new field active
                form_preview.find('.field-row').removeClass('active');
                form_preview.find('.submit-row').removeClass('active');
                field_row.addClass("active");
                HideFormBuilderFields(typefield);
                if (typefield == "submit" && $('.form_builder_block input[name="enable_add_records_button"]').val() === "true") {
                    $('.form_builder_block .add_more_record_label_section').removeClass("hidden");
                }

                $('.form_builder_block input[name="element-id"]').val(elementId);
                $("#form-builder-block .dropdown-options .added").remove();
                var executed = false;
                
                if ($('.form_builder_block input[name="save_data_salesforce"]:checked').length > 0) {
                    // Set properties of field first
                    // to load based SF mappings based on these
                    fromService = await AjaxLoadSalesForceFields(elementId, false);
                    if (fromService === false) {
                        await loadValuesFromLocalStorage(elementId);
                        executed = true;
                    } 
                }
                if (executed === false) {
                    await loadValuesFromLocalStorage(elementId);
                }
                
                $("#form_changed").val(false);
                $(".form_builder_block button.save_field").removeClass("pending_changes");
                var align_selected = $(".form_builder_block").find('select[name="align_label"]').val();
                AddTimeToPreview();
                $('.form_builder_block ul.tabs a:first').trigger("click");
                await updateFormBuilderPreview(typefield, align_selected);
                ShowTimeFormatField();
                if (typefield=='datetime') {
                    ShowDateValidations();
                }
            }
            else {
                // Saving pending changes
                var lastTypefield = $('#form-builder-block').find('input[name="last-type-field-selected"]').val();

                if (lastTypefield === 'paymentcomponent') {
                    Swal.fire({
                        title: window.translation.warning,
                        text: 'The payment component should be reviewed, Please review its settings and click on Save field button',
                        icon: "warning",
                        closeOnConfirm: true
                        
                    });
                    return false;
                } else {
                    $(".form_builder_block .save_section button.save_field").trigger("click");
                    form_preview.find('.field-row').removeClass('active');
                    form_preview.find('.submit-row').removeClass('active');
                    field_row.addClass("active");
                    HideFormBuilderFields(typefield);

                    $('.form_builder_block input[name="element-id"]').val(elementId);
                    $("#form-builder-block .dropdown-options .added").remove();
                    var executed = false;
                    if ($('.form_builder_block input[name="save_data_salesforce"]:checked').length > 0) {
                        // Set properties of field first
                        // to load based SF mappings based on these
                        var fromService = await AjaxLoadSalesForceFields(elementId, false);
                        if (fromService == false) {
                            await loadValuesFromLocalStorage(elementId);
                            executed = true;
                        }
                    }

                    if (executed === false) {
                        await loadValuesFromLocalStorage(elementId);

                    }


                    $("#form_changed").val(false);
                    $(".form_builder_block button.save_field").removeClass("pending_changes");
                    AddTimeToPreview();
                    $('.form_builder_block ul.tabs a:first').trigger("click");
                    var align_selected = $(".form_builder_block").find('select[name="align_label"]').val();
                    await updateFormBuilderPreview(typefield, align_selected);
                    ShowTimeFormatField();
                    if (typefield == 'datetime') {
                        ShowDateValidations();
                    }

                }

            }

            if (isExternalRegistrationEmailInput) {
                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').prop('disabled', 'disabled');
                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').prop('disabled', 'disabled');
                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').prop('disabled', 'disabled');

                $('#form-builder-block').find('.field-configuration select[name="salesforce_field"]').attr('is-llamapi-userinfo-update', 'true');
                $('#form-builder-block').find('.field-configuration input[name="save_field_salesforce"]').attr('is-llamapi-userinfo-update', 'true');
                $('#form-builder-block').find('.field-configuration input[name="retrieve_data_salesforce"]').attr('is-llamapi-userinfo-update', 'true');
            }

        } else {
            //HideFormBuilderFields(typefield);
        }

        if (typefield !== 'paymentcomponent' && typefield !=='addresscomponent') {

            if (typefield !== 'submit') {
                ValidationShowSalesforceMappingSection();
            }
        } else {
            $('.form_builder_block').find('.salesforce-mapping-section').addClass('hidden');
            $('#form-builder-block .field_to_mention_section').addClass("hidden");
        }


        if (typefield === 'dropdown') {
            //ValidationDisplayOrHideFieldsSFDropdown();
            checkDependentPicklistMessage();
        }
        else if (typefield === 'multiselect') {
            DisplayAsCheckboxesFunctions();
        }
        else if (typefield == "file") {
            DisplaySalesforceFilesOptions();
        }else if (typefield == "calculate"){
            ShowHideCalculatedFields();
        }else if(typefield == "signature"){
            displaySignatureConfigFields('.form_builder_block');
        }
        finishLoading();

        return false;
    });


    $(document).on('click', '.form_builder_block .link-refresh-sobjects-llamapi', async function () {
        if (IS_LLAMAPI_ENABLED === true) {
            
            activeLoading();
            localStorage.removeItem('salesforce-fields');
            var selectedObject = $('.form_builder_block input[name="salesforce_object_field"]').val();
            var salesforce_field = $('.form_builder_block select[name="salesforce_field"]').val();
            await AjaxLoadSalesForceFields(selectedObject, true);
            await AjaxLoadSalesForceFieldsAll(true);

            if ($('.form_builder_block input[name="salesforce_object_field"]').length > 0) {
                await LoadSalesForceObjects(selectedObject, false, false, true, false);
            }else
                await loadSfObjects(selectedObject, true);
            $('.form_builder_block select[name="salesforce_field"]').val(salesforce_field);
        }
    });

    $(document).on('click', '.form_builder_block .submit-row', async function () {
        var form_preview = $('.form_builder_block .form-preview');
        var field_row = $(this);
        var elementId = field_row.data('element-id');
        var is_active = $(this).hasClass('active');
        var typefield = field_row.data("type-field");
        var lastTypefield = $('#form-builder-block').find('input[name="last-type-field-selected"]').val();
        if (is_active == false) {
            //Validate if there are field changes
            if ($("#form_changed").val() == "false") {
                // inactive field-row to set one new field active
                form_preview.find('.field-row').removeClass('active');
                field_row.addClass("active");
                HideFormBuilderFields(typefield);
                $('.form_builder_block input[name="element-id"]').val(elementId);
                $("#form-builder-block .dropdown-options .added").remove();
                await loadValuesFromLocalStorage(elementId);
                $("#form_changed").val(false);
                $(".form_builder_block button.save_field").removeClass("pending_changes");
                var align_selected = $(".form_builder_block").find('select[name="align_label"]').val();
                await updateFormBuilderPreview(typefield, align_selected);
                $('.form_builder_block ul.tabs a:first').trigger("click");
                $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
                $('#form-builder-block .field_to_mention_section').addClass("hidden");
                $('.form_builder_block .salesforce-mapping-section-notrf').addClass("hidden");
                $(".form_builder_block .encrypted").addClass("hidden");
            } else {

                if (lastTypefield === 'paymentcomponent') {
                    Swal.fire({
                        title: window.translation.warning,
                        text: 'The payment component should be reviewed, Please review its settings and click on Save field button',
                        icon: "warning",
                        closeOnConfirm: true,
                    });
                    return false;
                } else {
                    $(".form_builder_block .save_section button.save_field").trigger("click");
                    // inactive field-row to set one new field active
                    form_preview.find('.field-row').removeClass('active');
                    field_row.addClass("active");
                    HideFormBuilderFields(typefield);
                    $('.form_builder_block input[name="element-id"]').val(elementId);
                    $("#form-builder-block .dropdown-options .added").remove();
                    await loadValuesFromLocalStorage(elementId);
                    $("#form_changed").val(false);
                    $(".form_builder_block button.save_field").removeClass("pending_changes");
                    var align_selected = $(".form_builder_block").find('select[name="align_label"]').val();
                    await updateFormBuilderPreview(typefield, align_selected);
                    $('.form_builder_block ul.tabs a:first').trigger("click");
                    $('.form_builder_block .salesforce-mapping-section').addClass("hidden");
                    $('#form-builder-block .field_to_mention_section').addClass("hidden");
                    $('.form_builder_block .salesforce-mapping-section-notrf').removeClass("hidden");
                    $(".form_builder_block .encrypted").addClass("hidden");

                }
            }
        } else {
            HideFormBuilderFields(typefield);
        }
    });


    $(document).on('click', '.sf_listview_rule_filter .add_rule_listview_filter', function () {
        let field = $('select[name="sf_listview_filter_field_rule"]').val();
        let operator = $('select[name="sf_listview_filter_operator_rule"]').val();
        var operatorText = $('select[name="sf_listview_filter_operator_rule"] option[value="' + operator + '"]').text();
        let value = $('input[name="sf_listview_filter_value_rule"]').val();
        let type = $('select[name="sf_listview_filter_field_rule"] option:selected').attr('data-type');
        let html_rule = '<div class="rule" data-field="'+field+'" data-operator="'+operator+'" data-value="'+value+'" data-type="'+type+'">' 
        +'<span class="field">'+field+'</span>'
        +'<span class="operator">'+operatorText+'</span>'
        +'<span class="value">'+value+'</span>'
        +'<span class="condition">AND</span>'
        +'<span class="delete_rule">X</span>'
        +'</div>';
        $('.sf_listview_without_rules').append(html_rule);
        $('select[name="sf_listview_filter_field_rule"]').val('');
        $('select[name="sf_listview_filter_operator_rule"]').val('');
        $('input[name="sf_listview_filter_value_rule"]').val('');
        sf_listview_generate_json_form_rules();
        $("#form_changed").val(true);
        $(".form_builder_block button.save_field").addClass("pending_changes");
        EnableorDisableFilterLogicFieldInSalesforceSourceListview();
        return false;
    });

    $(document).on('focus blur keyup keydown input change', 'textarea[name="soql_query_options"]', function () {
        showMessageInSoqlSource();
    });
    

    $(document).on('click', 'span.top.field-id', function (e) {
    e.stopPropagation();
    var titleValue = $(this).attr('title');
    var tempInput = $('<input>');
    $('body').append(tempInput);
    tempInput.val(titleValue).select();
    document.execCommand('copy');
    tempInput.remove();
    var toast = $('<div class="toast">copied!</div>');
    $(this).append(toast);
    toast.css({
        position: 'absolute',
        top: '20px',
        rich:'0',
        transform: 'translateX(-50%)',
        background: 'rgba(0, 0, 0, 0.7)',
        color: 'white',
        padding: '8px',
        borderRadius: '5px',
        opacity: '0',
        animation: 'fadeIn 0.3s forwards',
        fontSize:'10px',
        zIndex:'10'
    });
    setTimeout(function () {
        toast.css('opacity', '0');
        setTimeout(function () {
            toast.remove();
        }, 500);
    }, 2000);
});



    $(document).on('click', '.filter-picklist-mentions .add_rule_mention', function () {
        let field = $('select[name="filter_field_rule_mentions"]').val();
        let operator = $('select[name="filter_operator_rule_mentions"]').val();
        var operatorText = $('select[name="filter_operator_rule_mentions"] option[value="' + operator + '"]').text();
        let value = $('input[name="filter_value_rule_mentions"]').val();
        let type = $('select[name="filter_field_rule_mentions"] option:selected').attr('data-type');
        let html_rule = '<div class="rule" data-field="' + field + '" data-operator="' + operator + '" data-value="' + value + '" data-type="' + type + '">'
            + '<span class="field">' + field + '</span>'
            + '<span class="operator">' + operatorText + '</span>'
            + '<span class="value">' + value + '</span>'
            + '<span class="condition">AND</span>'
            + '<span class="delete_rule mention">X</span>'
            + '</div>';
        $('.without_rules_mentions').append(html_rule);
        $('select[name="filter_field_rule_mentions"]').val('');
        $('select[name="filter_operator_rule_mentions"]').val('');
        $('input[name="filter_value_rule_mentions"]').val('');
        sf_listview_generate_json_form_rules(true);
        $("#form_changed").val(true);
        $(".form_builder_block button.save_field").addClass("pending_changes");
    });

 $(document).on('click', '.sf_listview_without_rules .delete_rule', function () {
    $(this).parent('.rule').remove();
    sf_listview_generate_json_form_rules();
    $("#form_changed").val(true);
    $(".form_builder_block button.save_field").addClass("pending_changes");
    EnableorDisableFilterLogicFieldInSalesforceSourceListview();
 });

    $(document).on('click', '.without_rules_mentions .delete_rule', function () {
        $(this).parent('.rule').remove();
        sf_listview_generate_json_form_rules(true);
        $("#form_changed").val(true);
        $(".form_builder_block button.save_field").addClass("pending_changes");
    });


    $(document).on('click', '#form-builder-block .enforce_session_section button.add_rule_enforce', function () {
        var fieldToFilter = $('#form-builder-block select[name="field_to_filter"]').val();
        var friendlyFieldName = $('#form-builder-block select[name="field_to_filter"] option:selected').text();
        var filter_value = $('#form-builder-block select[name="filter_value"]').val();
        var operator = $('#form-builder-block select[name="filter_operator"]').val();
        if (fieldToFilter === null || fieldToFilter === '') {
            var textError = window.translation.please_choose_at_least_a_field;
            var error = '<span class="error">' + textError + '</span>';
            if ($('#form-builder-block .rule_filter span.error').length > 0) {
                $('#form-builder-block .rule_filter span.error').first().text(textError);
            } else {
                $('#form-builder-block .rule_filter').append(error);
            }
        } else {
            addRuleFilterFormBuilder(fieldToFilter, friendlyFieldName, filter_value, operator);
        }
        return false;
    });

    $(document).on('click', '#form-builder-block .delete_rule a', function () {
        if ($('#form-builder-block .filter_rules .rule').length === 1) {
            $('#form-builder-block .without_rules').removeClass('hide-custom');
        }
        $(this).parent().parent().remove();
        $('#form-builder-block .filter_rules .rule').each(function (index) {
            $(this).find('.field_order').text((index + 1) + '.');
        });
        return false;
    });

    $(document).on('change', '#form-builder-block select[name="field_to_filter"]', function () {
        var fieldType = $('#form-builder-block select[name="field_to_filter"] option:selected').data('type');
        $('#form-builder-block select[name="filter_operator"] option').removeClass('is-hidden');
        
        if (fieldType === 'datetime') {
            
            $('#form-builder-block select[name="filter_operator"] option[value="contains"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value="notcontains"]').addClass('is-hidden');
        } else if (fieldType === 'double') {
            $('#form-builder-block select[name="filter_operator"] option[value="contains"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value="notcontains"]').addClass('is-hidden');
        } else if (fieldType === 'boolean') {
            $('#form-builder-block select[name="filter_operator"] option[value="contains"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value="notcontains"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value="<"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value=">"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value="<="]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value=">="]').addClass('is-hidden');
        } else if (fieldType === 'picklist' || fieldType === 'multipicklist') {
            $('#form-builder-block select[name="filter_operator"] option[value="<"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value=">"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value="<="]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value=">="]').addClass('is-hidden');
        } else {
            $('#form-builder-block select[name="filter_operator"] option[value="<"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value=">"]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value="<="]').addClass('is-hidden');
            $('#form-builder-block select[name="filter_operator"] option[value=">="]').addClass('is-hidden');
        }
    });
}


function EnableorDisableFilterLogicFieldInSalesforceSourceListview(){
    var filters = $('.build-field-settings input[name="sf_listview_filter_rules"]').val();
    if(filters != ''){
        var obj = typeof filters === "string" ? JSON.parse(filters) : filters;
        if( obj != null ){
            const containsF = obj.some(item => String(item.comparisonValue).includes('f:') );
            if (containsF) {
                $('.build-field-settings input[name="sf_listview_filter_logic"]').attr('disabled', true);
                $('.build-field-settings i.message').text("This field is only available when the filters do not contain references to 'f:' fields.");
                $('.build-field-settings input[name="sf_listview_filter_logic"]').val('');
            } else {
                $('.build-field-settings input[name="sf_listview_filter_logic"]').attr('disabled', false);
                $('.build-field-settings i.message').text("");
            }
        }
    }else{
        $('.build-field-settings input[name="sf_listview_filter_logic"]').attr('disabled', false);
        $('.build-field-settings i.message').text("");
    }
}

function showMessageInSoqlSource(){
    var soqlval = $('.build-field-settings textarea[name="soql_query_options"]').val();
    if(soqlval != ''){
        var AoqlFilters = getDataFiltersSOQL(soqlval);
        if(AoqlFilters){
            $('.build-field-settings i.message').text("Please note that when using field references ('f:') in filters, You cannot use 'OR' logical connectors or creating overly complex queries.");
        }else{
            $('.build-field-settings i.message').text("");
        }
    }
}

function getDataFiltersSOQL(filters) {
    var HasFieldReference = false;
    const upperFilters = filters.toUpperCase();
    const whereIndex = upperFilters.indexOf('WHERE');
    if (whereIndex === -1) {return false; }
    const conditionPart = filters.substring(whereIndex + 5).trim();
    const splitByEndKeywords = conditionPart.split(/ORDER BY|LIMIT|GROUP BY/i);
    const conditions = splitByEndKeywords[0].trim();
    const containsFPrefix = /['"]f:[^'"]+['"]/.test(conditions);
    if(containsFPrefix){
        HasFieldReference = true;
    }
    return HasFieldReference;
}

function show_hide_operator_options(elementReveal,typeSelected){
    if (typeSelected == "string" || typeSelected == "email") {
        $('#' + elementReveal).find('select[name="sf_listview_filter_operator_rule"] option.validation-only-text').removeClass("hidden");
        $('#' + elementReveal).find('select[name="filter_operator_rule_mentions"] option.validation-only-text').removeClass("hidden");
        $('#' + elementReveal).find('select[name="sf_listview_filter_operator_rule"] option.validation-only-other').addClass("hidden");
        $('#' + elementReveal).find('select[name="filter_operator_rule_mentions"] option.validation-only-other').addClass("hidden");
    } else {
        $('#' + elementReveal).find('select[name="sf_listview_filter_operator_rule"] option.validation-only-text').addClass("hidden");
        $('#' + elementReveal).find('select[name="filter_operator_rule_mentions"] option.validation-only-text').addClass("hidden");
        $('#' + elementReveal).find('select[name="sf_listview_filter_operator_rule"] option.validation-only-other').removeClass("hidden");
        $('#' + elementReveal).find('select[name="filter_operator_rule_mentions"] option.validation-only-other').removeClass("hidden");
    }
    $('#' + elementReveal).find('select[name="sf_listview_filter_operator_rule"] option.validation-special').each(function () {
        var optionElement = $(this);
        if (optionElement.attr('data-field-types').indexOf(typeSelected) != -1) {
            optionElement.removeClass("hidden");
        }
        else {
            optionElement.addClass("hidden");
        }
    });

    $('#' + elementReveal).find('select[name="filter_operator_rule_mentions"] option.validation-special').each(function () {
        var optionElement = $(this);
        if (optionElement.attr('data-field-types').indexOf(typeSelected) != -1) {
            optionElement.removeClass("hidden");
        }
        else {
            optionElement.addClass("hidden");
        }
    });
    $('#' + elementReveal).find('select[name="sf_listview_filter_operator_rule"] option.validation-special-remove').each(function () {
        var optionElement = $(this);
        var valueOfData = optionElement.attr('data-not-field-types');
        var listData = valueOfData.split(',');
        if (listData.indexOf(typeSelected) != -1) {
            optionElement.addClass("hidden");
        }
    });
    $('#' + elementReveal).find('select[name="filter_operator_rule_mentions"] option.validation-special-remove').each(function () {
        var optionElement = $(this);
        var valueOfData = optionElement.attr('data-not-field-types');
        var listData = valueOfData.split(',');
        if (listData.indexOf(typeSelected) != -1) {
            optionElement.addClass("hidden");
        }
    });
}

function sf_listview_generate_json_form_rules(forMentions){
    if ($('#form-builder-block .sf_listview_without_rules .rule').length > 0 && !forMentions ||
        $('#form-builder-block .without_rules_mentions .rule').length > 0 && forMentions ) {
        let ruleList = [];
        if (!forMentions) {
            $('#form-builder-block .sf_listview_without_rules .rule').each(function (index) {
                let rule = $(this);
                let field = rule.data('field');
                let operator = rule.data('operator');
                let ruleValue = rule.data('value');
                let typeField = rule.data('type');
                ruleList.push({
                    fieldId: index + 1,
                    typeField: typeField,
                    field: field,
                    operator: operator,
                    comparisonValue: ruleValue
                });
            });
            $('#form-builder-block .filter-section-listview-dropdown input[name="sf_listview_filter_rules"]').val(JSON.stringify(ruleList));
        }
        else {
            $('#form-builder-block .without_rules_mentions .rule').each(function (index) {
                let rule = $(this);
                let field = rule.data('field');
                let operator = rule.data('operator');
                let ruleValue = rule.data('value');
                let typeField = rule.data('type');
                ruleList.push({
                    fieldId: index + 1,
                    typeField: typeField,
                    field: field,
                    operator: operator,
                    comparisonValue: ruleValue
                });
            });
            $('#form-builder-block input[name="filter_rules_mentions"]').val(JSON.stringify(ruleList));
        }
    } else {
        $('#form-builder-block .filter-section-listview-dropdown input[name="sf_listview_filter_rules"]').val('');
        $('#form-builder-block .filter-section-listview-dropdown input[name="sf_listview_filter_value"]').val('');
        $('#form-builder-block .filter-section-listview-dropdown select[name="sf_listview_filter_field"]').val('');
    }
}

function sf_listview_generate_json_form_rules_for_mentions() {
    if ($('#form-builder-block .without_rules_mentions .rule').length > 0) {
        let ruleList = [];
        $('#form-builder-block .without_rules_mentions .rule').each(function (index) {
            let rule = $(this);
            let field = rule.data('field');
            let operator = rule.data('operator');
            let ruleValue = rule.data('value');
            let typeField = rule.data('type');
            ruleList.push({
                fieldId: index + 1,
                typeField: typeField,
                field: field,
                operator: operator,
                comparisonValue: ruleValue
            });
        });
        $('#form-builder-block .filter-section-listview-dropdown input[name="filter_rules_mentions"]').val(JSON.stringify(ruleList));
    } else {
        $('#form-builder-block .filter-section-listview-dropdown input[name="filter_rules_mentions"]').val('');
        $('#form-builder-block .filter-section-listview-dropdown input[name="filter_field_rule_mentions"]').val('');
        $('#form-builder-block .filter-section-listview-dropdown select[name="filter_operator_rule_mentions"]').val('');
    }
}

function addRuleFilterFormBuilder(fieldToFilter, friendlyFieldName, filter_value, operator) {
    $('#form-builder-block .rule_filter span.error').remove();
    var ruleQuantity = $('#form-builder-block .filter_rules .rule').length;
    var value_rule = filter_value === '' ? '<span class="empty">Empty</span>' : filter_value;

    var operatorText = $('#form-builder-block select[name="filter_operator"] option[value="' + operator + '"]').text();
    if (operatorText === "") {
        operatorText = operator;
    }

    var rule = '<div class="rule columns" data-field="' + fieldToFilter + '" data-operator="' + operator +'"  data-value="' + filter_value + '">'
        + '<div class="field_order columns small-1">' + (ruleQuantity + 1) + '.' + '</div>'
        + '<div class="field_rule columns small-3">' + friendlyFieldName + '</div>'
        + '<div class="operator_rule columns small-3">' + operatorText + '</div>'
        + '<div class="value_rule columns small-3">' + value_rule + '</div>'
        + '<div class="columns small-1 operation">AND</div>'
        + '<div class="delete_rule  columns small-1"><a href="#" aria-label="delete rule"></a></div>'
        + '<div/>';

    // adding new rule    
    $('#form-builder-block .without_rules').addClass('hide-custom');
    $('#form-builder-block .filter_rules').append(rule);
    $('#form-builder-block input[name="filter_value"]').val('');
}

function is_valid_item(item) {
    return (item !== null && item !== undefined);
}

async function loadValuesFromLocalStorage(elementId) {
    var section_border_sttus = '';
    let st = new Date();

    if (parseInt(elementId) === 0) {
        cleanFormBuilderFields();
        $('.form_builder_block select[name="salesforce_field"]').val('');
        $('.form_builder_block input[name="element-id"]').val(0);
        //$("#form-builder-block form input[name='label-" + window.translation.language + "']").val(window.translation.submit);
        $("#form-builder-block form .row.label_field input[name^='label-'").val(window.translation.submit)
    }    
    var jsonData = GetLocalFormBuilderStorage();
    activeLoading();
    if (jsonData != "" && jsonData != null) {
        var json = JSON.parse(jsonData);

        var item = json.find(x => x.elementId == elementId);

        if (item != undefined && item != null) {
                var typeField = item.typeField;
                if (typeField !== 'paymentcomponent') {
                    //Clear all changes related to the payment component
                    clear_payment_component_after_change();

                    var is_delete = item.delete;
                    var is_required = hide_label = read_only = exist_options = is_validate = allow_time = extensions = display_as_slide = salesforceField = rich_text = do_not_save_field_to_database = include_signature_transaction_info = is_maximum_value_of_another_field = is_minimum_value_of_another_field = is_include_non_visible_fields = is_validate_text = false;
                    var field_visibility = 0;
                    var list_view_salesforce_object = "";
                    var object_for_mentions = "";
                    var listview = "";
                    var listview_mentions = "";
                    var from_sf_list_views = false;
                    var use_mentions = false;
                    var auto_suggest = false;
                    var pull_values_sf_source = 0;
                    var paginate_options = false; 
                    var is_label_diferent_section = false;
                    var private_file = false;
                    var display_as_checkboxes = false;
                    var display_inline = false;
                    var display_inline_inputs = false;
                    var is_master_detail = false;
                    var reference_to_object = '';
                    var reference_field = '';
                    var is_encrypted = false;
                    var is_encrypted_value = false;
                    var pull_values_from_sf = false;
                    var only_future = false;
                    var only_past = false;
                    var allow_current_date = false;
                    var depends_another_date = false;
                    var dont_save_sf = false;
                    var dont_retr_sf = false;
                    var save_in_salesforce = false;
                    var multiple_files = false;
                    var related_files = false;
                    var file_image = false;
                    var salesforce_library = "";
                    var sflistViewLabel = "";
                    var listview_name = "";
                    var sflistViewValue = "";
                    var sflistViewFilterField = "";
                    var sflistViewFilterValue = "";
                    var sfListViewFilterRules = "";
                    var sfListViewFilterLogic = "";
                    var displayAs = "";
                    var displayPicklistMode = "";
                    var alignLabel = "";
                    var sfRecordToRelate = "";
                    var salesforceField_value = "";
                    var salesforce_rel_field = "";
                    var is_label_diferent = false;
                    var sf_default_value_field = "";
                    var show_format = false;
                    let customCssClass = '';
                    var useUserLocation = false;
                    var useAddressVerification = false;
                    var useAutoComplete = false;

                    item.properties.forEach(function (key) {
                        switch (key.name) {
                            case 'field_id': $("#form-builder-block form input[name='field_id']").val(key.value);
                                break;
                            case 'block_id': $("#form-builder-block form input[name='block_id']").val(key.value);
                                break;
                            case 'is_required':

                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='is_required']").prop("checked", true);
                                    is_required = true;
                                }
                                break;
                            case 'do_not_save_field_to_database':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='do_not_save_field_to_database']").prop("checked", true);
                                    do_not_save_field_to_database = true;
                                }
                                break;
                            case 'include_signature_transaction_info':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='include_signature_transaction_info']").prop("checked", true);
                                    include_signature_transaction_info = true;
                                }
                                break;
                                
                            case 'show_format':

                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='show_format']").prop("checked", true);
                                    $('#form-builder-block .decimal_mark').addClass("hidden");
                                    show_format = true;
                                }
                                break;
                            case 'hide_label':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='hide_label']").prop("checked", true);
                                    hide_label = true;
                                }
                                break;
                            case 'read_only':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='read_only']").prop("checked", true);
                                    read_only = true;
                                }
                                break;
                            case 'field_visibility':
                                $("#form-builder-block select[name='field_visibility']").val(key.value);
                                break;
                            case 'file_image':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='file_image']").prop("checked", true);
                                    file_image = true;
                                }
                                validateOnlyImageLoad();
                                validateOnlyImage();
                                break;
                            case 'file_image_width': $("#form-builder-block input[name='file_image_width']").val(key.value);
                                break;
                            case 'file_image_height': $("#form-builder-block input[name='file_image_height']").val(key.value);
                                break;
                            case 'rich_text':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='rich_text']").prop("checked", true);
                                    rich_text = true;
                                }
                                break;
                            case 'encrypted':
                                $("#form-builder-block input[name='encrypted']").prop("checked", false);
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    //$("#form-builder-block input[name='encrypted']").prop("checked", true);
                                    is_encrypted_value = true;
                                } else {
                                    //$("#form-builder-block input[name='encrypted']").prop("checked", false);
                                    is_encrypted = false;
                                }
                                break;
                            case 'maximum_characters': $("#form-builder-block input[name='maximum_characters']").val(key.value);
                                break;
                            case 'minimum_characters': $("#form-builder-block input[name='minimum_characters']").val(key.value);
                                break;
                            case 'max_height': $("#form-builder-block input[name='max_height']").val(key.value);
                                break;
                            case 'placeholder_field': $("#form-builder-block input[name='placeholder_field']").val(key.value);
                                break;
                            case 'chat_gpt_text_area_mode': 
                                $("#form-builder-block input[name='chat_gpt_text_area_mode']").prop("checked", false);
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='chat_gpt_text_area_mode']").prop("checked", true);
                                }
                                break;
                            case 'chat_gpt_allow_enter_complete_prompt': 
                                $("#form-builder-block input[name='chat_gpt_allow_enter_complete_prompt']").prop("checked", false);
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='chat_gpt_allow_enter_complete_prompt']").prop("checked", true);
                                }
                                break;
                            case 'chat_gpt_allow_multiple_pre_define_prompts': 
                                $("#form-builder-block input[name='chat_gpt_allow_multiple_pre_define_prompts']").prop("checked", false);
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='chat_gpt_allow_multiple_pre_define_prompts']").prop("checked", true);
                                }
                                break;
                            case 'chat_gpt_by_ia': $("#form-builder-block select[name='chat_gpt_by_ia']").val(key.value);
                                break;
                            case 'default_value_field': $("#form-builder-block input[name='default_value_field']").val(key.value);
                                sf_default_value_field = key.value;
                                break;
                            case 'rows': $("#form-builder-block input[name='rows']").val(key.value);
                                break;
                            case 'field_validate':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='field_validate']").prop("checked", true);
                                    is_validate = true;
                                }
                                break;
                            case 'field_validate_confirm_text':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='field_validate_confirm_text']").prop("checked", true);
                                    is_validate_text = true;
                                }
                                break;
                            case 'minimum_age': $("#form-builder-block input[name='minimum_age']").val(key.value);
                                break;
                            case 'date_format': $("#form-builder-block select[name='date_format']").val(key.value);
                                break;
                            case 'field_allow_time':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='field_allow_time']").prop("checked", true);
                                    allow_time = true;
                                }
                                break;
                            case 'time_format': $("#form-builder-block select[name='time_format']").val(key.value);
                                break;
                            case 'default_datetime':
                                $("#form-builder-block input[name='default_datetime']").prop("checked", false);
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='default_datetime']").prop("checked", true);
                                }
                                break;
                            case 'hide_placeholder':
                                $("#form-builder-block input[name='hide_placeholder']").prop("checked", false);
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='hide_placeholder']").prop("checked", true);
                                }
                                break;

                            case 'extensions':
                                if (key.value !== "" && key.value != "null" && key.value != null) {
                                    extensions = true;
                                    var ext = JSON.parse(key.value);
                                    $("#form-builder-block input[name='extension_allowed']").prop("checked", false);
                                    for (var i = 0; i < ext.length; i++) {
                                        switch (ext[i]) {
                                            case 'jpg': $("#form-builder-block #jpg_type").prop("checked", true);
                                                break;
                                            case 'txt': $("#form-builder-block #txt_type").prop("checked", true);
                                                break;
                                            case 'wmv': $("#form-builder-block #wmv_type").prop("checked", true);
                                                break;
                                            case 'rar': $("#form-builder-block #rar_type").prop("checked", true);
                                                break;
                                            case 'jpeg': $("#form-builder-block #jpeg_type").prop("checked", true);
                                                break;
                                            case 'pdf': $("#form-builder-block #pdf_type").prop("checked", true);
                                                break;
                                            case 'mp3': $("#form-builder-block #mp3_type").prop("checked", true);
                                                break;
                                            case 'avi': $("#form-builder-block #avi_type").prop("checked", true);
                                                break;
                                            case 'gif': $("#form-builder-block #gif_type").prop("checked", true);
                                                break;
                                            case 'doc': $("#form-builder-block #doc_type").prop("checked", true);
                                                break;
                                            case 'mp4': $("#form-builder-block #mp4_type").prop("checked", true);
                                                break;
                                            case 'png': $("#form-builder-block #png_type").prop("checked", true);
                                                break;
                                            case 'docx': $("#form-builder-block #docx_type").prop("checked", true);
                                                break;
                                            case 'mpeg': $("#form-builder-block #mpeg_type").prop("checked", true);
                                                break;
                                            case 'wav': $("#form-builder-block #wav_type").prop("checked", true);
                                                break;
                                            case 'zip': $("#form-builder-block #zip_type").prop("checked", true);
                                                break;
                                            case 'xlsx': $("#form-builder-block #xlsx_type").prop("checked", true);
                                                break;
                                            case 'tar': $("#form-builder-block #tar_type").prop("checked", true);
                                                break;
                                            case 'bmp': $("#form-builder-block #bmp_type").prop("checked", true);
                                                break;
                                            case 'xls': $("#form-builder-block #xls_type").prop("checked", true);
                                                break;
                                            case 'csv': $("#form-builder-block #csv_type").prop("checked", true);
                                                break;
                                            case 'ai': $("#form-builder-block #ai_type").prop("checked", true);
                                                break;
                                            case 'eps': $("#form-builder-block #eps_type").prop("checked", true);
                                                break;
                                            case 'heic': $("#form-builder-block #heic_type").prop("checked", true);
                                                break;
                                        }
                                    }
                                }

                                break;
                            case 'decimal_places': $("#form-builder-block input[name='decimal_places']").val(key.value);
                                break;
                            case 'display_picklist_mode': $("#form-builder-block select[name='display_picklist_mode']").val(key.value);
                                displayPicklistMode = key.value;
                                break;
                            case 'display_as': $("#form-builder-block select[name='display_as']").val(key.value);
                                displayAs = key.value;
                                break;
                            case 'align_label': $("#form-builder-block select[name='align_label']").val(key.value);
                                alignLabel = key.value;
                                break;
                            case 'scale_color': $("#form-builder-block select[name='scale_color']").val(key.value);
                                break;
                            case 'minimum_value': $("#form-builder-block input[name='minimum_value']").val(key.value);
                                break;
                            case 'maximum_value': $("#form-builder-block input[name='maximum_value']").val(key.value);
                                break;
                            case 'salesforce_field':
                                var sf_object_value = item.properties.find(function (obj) { return obj.name === 'salesforce_object' });
                                var sf_object_value_text = $('.form_builder_block input[name="salesforce_object_field"]').val();

                                if (key.value === null || key.value === "" || key.value === "none") {
                                    $("#form-builder-block select[name='salesforce_field']").val("none");
                                }
                                else {
                                    if (sf_object_value !== null && sf_object_value !== undefined && sf_object_value.value !== null && sf_object_value.value !== undefined && sf_object_value.value.indexOf('Both') == 0) {
                                        $("select[name='salesforce_field'] option[value='" + key.value + "'][data-object='" + sf_object_value_text + "']").prop("selected", true);
                                    }
                                    else {
                                        $("#form-builder-block select[name='salesforce_field']").val(key.value);
                                    }
                                    salesforceField = true;
                                    salesforceField_value = key.value;
                                    checkDependentPicklistMessage();
                                }
                                break;

                            case 'salesforce_rel_field':
                                $("#form-builder-block select[name='salesforce_rel_field']").val(key.value);
                                salesforce_rel_field = key.value;
                                break;
                            case 'salesforce_object_field':
                                $('.form_builder_block input[name="salesforce_object_field"]').val(key.value);
                                break;
                            case 'related_field_object':
                                $('.form_builder_block select[name="related_field_object"]').val(key.value);
                                break;
                            case 'list_view_salesforce_object':
                                list_view_salesforce_object = key.value;
                                object_for_mentions = key.value;
                                break;
                            case 'listview':
                                listview = key.value;
                                listview_mentions = key.value;
                                break;
                            case 'is_master_detail':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="is_master_detail"]').val(key.value);
                                    is_master_detail = true;
                                }
                                break;
                            case 'reference_field':
                                reference_field = key.value;
                                break;
                            case 'reference_to_object':
                                reference_to_object = key.value;
                                break;
                            case 'auto_suggest':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="auto_suggest"]').prop("checked", true);
                                    auto_suggest = true;
                                }
                                break;
                            case 'paginate_options':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="paginate_options"]').prop("checked", true);
                                    paginate_options = true;
                                }
                                break;
                                
                            case 'option_from_source_sf':
                                $('#form-builder-block select[name="pull_values_sf_source"]').val(key.value);
                                if (key.value == 1) {
                                    $('#form-builder-block .is_label_diferent_section').addClass('hidden');
                                    $('#form-builder-block .pull_values_from_sf_help').removeClass("hidden");
                                    $('#form-builder-block .dropdown-options-reloaded').addClass('hidden');
                                    $('#form-builder-block .soql_options_section').addClass('hidden');
                                    $("#form-builder-block .list_view_options").addClass("hidden");
                                    $("#form-builder-block .dropdown-options").addClass("hidden");
                                    $('#form-builder-block .dropdown_field').addClass('hidden');
                                    pull_values_from_sf = true;
                                } else if (key.value == 2) {
                                    
                                    $("#form-builder-block .list_view_options").removeClass("hidden");
                                    $('#form-builder-block .is_label_diferent_section').addClass('hidden');
                                    $("#form-builder-block .dropdown-options").addClass("hidden");
                                    $('#form-builder-block .dropdown_field').addClass('hidden');
                                    $('#form-builder-block .dropdown-options-reloaded').removeClass('hidden');
                                    $('#form-builder-block .soql_options_section').addClass('hidden');
                                    from_sf_list_views = true;
                                } else if (key.value == 3) {
                                    $('#form-builder-block .is_label_diferent_section').addClass('hidden');
                                    $('#form-builder-block .pull_values_from_sf_help').addClass("hidden");
                                    $('#form-builder-block .dropdown-options-reloaded').addClass('hidden');
                                    $('#form-builder-block .soql_options_section').addClass('hidden');
                                    $("#form-builder-block .list_view_options").addClass("hidden");
                                    $("#form-builder-block .dropdown-options").addClass("hidden");
                                    $('#form-builder-block .dropdown_field').addClass('hidden');
                                    $('#form-builder-block .soql_options_section').removeClass('hidden');

                                }
                                pull_values_sf_source = key.value;
                                break;

                            case 'soql_query_options':
                                $('#form-builder-block textarea[name="soql_query_options"]').val(key.value);
                                break;

                            case 'soql_query_field_label':
                                $('#form-builder-block input[name="soql_query_field_label"]').val(key.value);
                                break;

                            case 'soql_query_field_id':
                                $('#form-builder-block input[name="soql_query_field_id"]').val(key.value);
                                break;

                            case 'use_mentions':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="mentions_textarea"]').prop("checked", true);
                                    DisplayMentionsSection();
                                    use_mentions = true;
                                }
                                break;
                            case 'retrieve_data_salesforce':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('#form-builder-block input[name="retrieve_data_salesforce"]').prop('checked', true);
                                    dont_retr_sf = true;
                                } else {
                                    $('#form-builder-block input[name="retrieve_data_salesforce"]').prop('checked', false);
                                    dont_retr_sf = false;
                                }
                                break;
                            case 'save_field_salesforce':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('#form-builder-block input[name="save_field_salesforce"]').prop('checked', true);
                                    dont_save_sf = true;
                                } else {
                                    $('#form-builder-block input[name="save_field_salesforce"]').prop('checked', false);
                                    dont_save_sf = false;

                                }
                                break;
                            case 'currency_type':
                                if (key.value == "" || key.value == "none") {
                                    $("#form-builder-block select[name='currency_type']").val("USD");
                                } else {
                                    $("#form-builder-block select[name='currency_type']").val(key.value);
                                }
                                break;
                            case 'decimal_mark':
                                if (key.value == "" || key.value == "none" || key.value == null) {
                                    $("#form-builder-block select[name='decimal_mark']").val(window.decimalCharacter);
                                } else {
                                    $("#form-builder-block select[name='decimal_mark']").val(key.value);
                                }
                                break;
                            case 'private_file':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="private_file"]').prop("checked", true);
                                    private_file = true;
                                }
                                break;
                            case 'min_number_options': $('.form_builder_block input[name="min_number_options"]').val(key.value);
                                break;
                            case 'max_number_options': $('.form_builder_block input[name="max_number_options"]').val(key.value);
                                break;
                            case 'number_of_columns_checkbox': $('.form_builder_block input[name="number_of_columns_checkbox"]').val(key.value);
                                break;
                            case 'max_days_in_future': $('.form_builder_block input[name="max_days_in_future"]').val(key.value);
                                break;
                            case 'max_days_in_past': $('.form_builder_block input[name="max_days_in_past"]').val(key.value);
                                break;
                            case 'rule_to_validate': $("#form-builder-block select[name='rule_to_validate']").val(key.value);
                                break;
                            case 'validator_date_field':
                                $('.form_builder_block select[name="validator_date_field"] option').each(function () {
                                    $(this).remove();
                                });
                                $('.form_builder_block select[name="validator_date_field"]').append(DatatimeFieldsOptions());
                                $("#form-builder-block select[name='validator_date_field']").val(key.value);
                                break;
                            case 'copy_to_hidden':
                                if ($('.form_builder_block select[name="copy_to_hidden"]').length > 0) {
                                    $('.form_builder_block select[name="copy_to_hidden"] option').each(function () {
                                        $(this).remove();
                                    });
                                    $('.form_builder_block select[name="copy_to_hidden"]').append(HiddenFieldsOptions());
                                    $("#form-builder-block select[name='copy_to_hidden']").val(key.value);
                                }
                                else {
                                    $("#form-builder-block input[name='copy_to_hidden']").val(key.value);
                                }
                                break;
                            case 'custom_cancel_url':
                                $('.form_builder_block input[name="custom_cancel_url"]').val(key.value);
                                break;
                            case 'include_cancel_button':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='include_cancel_button']").prop("checked", true);
                                    $("#form-builder-block input[name='include_cancel_button']").trigger('change');
                                    $('#form-builder-block .custom_Cancel_url').show();
                                }
                                break;
                            case 'calculate_items':
                                if (typeField == 'calculate'){
                                    populate_calculate_fields(key.value);
                                    $("#form-builder-block input[name='calculate_items']").val(key.value);
                                }
                                break;
                            case 'field_maximum_value':
                                if (typeField == 'calculate'){
                                    populate_select_field_maximum_value(key.value);
                                }
                                break;
                            case 'field_minimum_value':
                                if (typeField == 'calculate'){
                                    populate_select_field_minimum_value(key.value);
                                }
                                break; 
                            case 'is_maximum_value_of_another_field':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='is_maximum_value_of_another_field']").prop("checked", true);
                                    is_maximum_value_of_another_field = true;
                                }
                                break;
                            case 'is_minimum_value_of_another_field':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='is_minimum_value_of_another_field']").prop("checked", true);
                                    is_minimum_value_of_another_field = true;
                                }
                                break;
                            case 'is_include_non_visible_fields':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='is_include_non_visible_fields']").prop("checked", true);
                                    is_include_non_visible_fields = true;
                                }
                                break;
                            case 'display_as_checkboxes':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block select[name="display_as_multiselect"]').val("1");
                                    display_as_checkboxes = true;
                                } else {
                                    $('.form_builder_block select[name="display_as_multiselect"]').val("0");
                                    display_as_checkboxes = false;
                                }
                                break;
                            case 'display_as_multiselect':
                                $('.form_builder_block select[name="display_as_multiselect"]').val(key.value);
                                break;
                            case 'label_position':
                                $('.form_builder_block select[name="label_position"]').val(key.value);
                                break;
                            case 'display_inline_inputs':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="display_inline_inputs"]').prop("checked", true);
                                    display_inline_inputs = true;
                                }
                                break;
                            case 'only_future':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="only_future"]').prop("checked", true);
                                    only_future = true;
                                }
                                break;

                            case 'only_past':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="only_past"]').prop("checked", true);
                                    only_past = true;
                                }
                                break;
                            case 'allow_current_date':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="allow_current_date"]').prop("checked", true);
                                    allow_current_date = true;
                                }
                                break;
                            case 'depends_another_date':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="depends_another_date"]').prop("checked", true);
                                    depends_another_date = true;
                                }
                                break;
                            case 'step_value':
                                if (key.value != null && key.value != "") {
                                    $('.form_builder_block input[name="step_value"]').val(key.value);
                                }
                                break;

                            case 'is_label_diferent':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="is_label_diferent"]').prop("checked", true);
                                    is_label_diferent = true;
                                }
                                break;

                            case 'save_in_salesforce':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="save_in_salesforce"]').prop("checked", true);
                                    save_in_salesforce = true;
                                }
                                break;
                            case 'multiple_files':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="multiple_files"]').prop("checked", true);
                                    multiple_files = true;
                                }
                                break;
                            case 'related_files':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $('.form_builder_block input[name="related_files"]').prop("checked", true);
                                    $('#form-builder-block').find('.copy_to_hidden').addClass('hidden');
                                    related_files = true;
                                }
                                break;
                            case 'sf_record_to_relate':
                                sfRecordToRelate = key.value;
                                $('.form_builder_block input[name="sf_record_to_relate"]').val(sfRecordToRelate);
                                break;
                            case 'salesforce_library':
                                salesforce_library = key.value;
                                break;
                            case 'columns_number':
                                $("#form-builder-block select[name='columns_number']").val(key.value);
                                break;
                            case 'include_grid_lines':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='include_grid_lines']").prop("checked", true);
                                } else {
                                    $("#form-builder-block input[name='include_grid_lines']").prop("checked", false);
                                }
                                break;
                            case 'section_border_option':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='section_border_option']").prop("checked", true);
                                    section_border_sttus = 'active';
                                } else {
                                    $("#form-builder-block input[name='section_border_option']").prop("checked", false);
                                }
                                break;
                            case 'section_border_for':
                                $("#form-builder-block select[name='section_border_for']").val(key.value);
                                break;
                            case 'sf_listview_label_field': sflistViewLabel = key.value;
                                break;
                            case 'listview_name':
                                listview_name = key.value;
                                break;
                            case 'sf_listview_value_field': sflistViewValue = key.value;
                                break;

                            case 'sf_listview_filter_field': sflistViewFilterField = key.value;
                                break;
                            case 'sf_listview_filter_value': $('.form_builder_block input[name="sf_listview_filter_value"]').val(key.value);
                                break;
                            case 'sf_listview_filter_rules': $('.form_builder_block input[name="sf_listview_filter_rules"]').val(key.value);
                                break;
                            case 'sf_listview_filter_logic':
                                $('.form_builder_block input[name="sf_listview_filter_logic"]').val(key.value);
                                $('.form_builder_block input[name="filter_logic_mentions"]').val(key.value);
                                break;
                            case 'field_mentions':
                                var sfObjCurrent = $(".form_builder_block  select[name='salesforce_object']").val();
                                AjaxLoadSalesForceFieldsForMentions(sfObjCurrent, key.value)
                                break;
                            case 'sf_listview_default_value': $('.form_builder_block input[name="sf_listview_default_value"]').val(key.value);
                                break;
                            case 'sf_listview_filter_operator': $('.form_builder_block select[name="sf_listview_filter_operator"]').val(key.value);
                                break;
                            case 'custom_cssclass':
                                $('.form_builder_block input[name="custom_cssclass"]').val(key.value);
                                break;
                            case 'addresscomponent_use_user_location':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='addresscomponent_use_user_location']").prop("checked", true);
                                    useUserLocation = true;
                                }
                                break;
                            case 'addresscomponent_address_verification':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='addresscomponent_address_verification']").prop("checked", true);
                                    useAddressVerification = true;
                                }
                                break;
                            case 'addresscomponent_autocomplete':
                                if (key.value != "" && (key.value == true || key.value == "on")) {
                                    $("#form-builder-block input[name='addresscomponent_autocomplete']").prop("checked", true);
                                    useAutoComplete = true;
                                }
                                break;
                        }
                    });


                    $("#form-builder-block form ul.tabs li a").each(function () {
                        var langId = $(this).data('language-id');
                        var label = 'label-' + langId;
                        var labelgptbtn = 'label-gpttext-btn-' + langId;
                        var helptext = 'helptext_field-' + langId;
                        var chatgptprompt = 'chat_gpt_prompt-' + langId;
                        var options = 'options-' + langId;
                        var label_textarea = 'label-textarea-' + langId;
                        var option_checkbox = 'checkbox-option-' + langId;
                        var checkbox_default = 'checkbox-default-' + langId;
                        var text_validation = 'number_validation_text-' + langId;
                        var topminimum = 'top_minimum_label-' + langId;
                        var topmaximum = 'top_maximum_label-' + langId;
                        var check_button = 'text_to_check-' + langId;
                        var options_labels = 'options-labels-textarea-' + langId;
                        var prompt_options_labels = 'prompt-options-labels-textarea-' + langId;
                        var prompt_options_values = 'prompt-options-values-textarea-' + langId;
                        var back_label = 'back_button_label-' + langId;
                        var next_label = 'next_button_label-' + langId;
                        var cancel_label = 'cancel-label-' + langId;
                        var addrecord_label = 'addrecord-label-' + langId;

                        var addRecordLabelItem = item.properties.find(x => x.name == addrecord_label);
                        var backLabelItem = item.properties.find(x => x.name == back_label);
                        var nextLabelItem = item.properties.find(x => x.name == next_label);
                        var cancelLabelItem = item.properties.find(x => x.name == cancel_label);
                        var optionsLabelsItem = item.properties.find(x => x.name == options_labels);
                        var promptOptionsLabelsItem = item.properties.find(x => x.name == prompt_options_labels);
                        var promptOptionsValuesItem = item.properties.find(x => x.name == prompt_options_values);
                        var topMinimumItem = item.properties.find(x => x.name == topminimum);
                        var topMaximumItem = item.properties.find(x => x.name == topmaximum);
                        var check_buttonItem = item.properties.find(x => x.name == check_button);
                        var textValidationItem = item.properties.find(x => x.name == text_validation);
                        var labelItem = item.properties.find(x => x.name == label);
                        var labelItemGpttextBtn = item.properties.find(x => x.name == labelgptbtn);
                        var helpTextItem = item.properties.find(x => x.name == helptext);
                        var chatGptPromptItem = item.properties.find(x => x.name == chatgptprompt);
                        var optionsItem = item.properties.find(x => x.name == options);
                        var LabelTextAreaItem = item.properties.find(x => x.name == label_textarea);
                        var checkboxOptions = item.properties.find(x => x.name == option_checkbox);

                        if (typeField === 'submit') {
                            if (is_valid_item(backLabelItem)) {
                                $("#form-builder-block form input[name='" + back_label + "']").val(backLabelItem.value);
                            }
                            if (is_valid_item(nextLabelItem)) {
                                $("#form-builder-block form input[name='" + next_label + "']").val(nextLabelItem.value);
                            }
                            if (is_valid_item(cancelLabelItem)) {
                                $("#form-builder-block form input[name='" + cancel_label + "']").val(cancelLabelItem.value);
                            }
                            if (is_valid_item(addRecordLabelItem)) {
                                $("#form-builder-block form input[name='" + addrecord_label + "']").val(addRecordLabelItem.value);
                            }
                        } else {
                            $("#form-builder-block form input[name='" + back_label + "']").val('');
                            $("#form-builder-block form input[name='" + next_label + "']").val('');
                        }

                        if (is_label_diferent == true && is_valid_item(optionsLabelsItem)) {
                            $("#form-builder-block form textarea[name='" + options_labels + "']").val(optionsLabelsItem.value);
                        }

                        if (is_valid_item(promptOptionsLabelsItem)) {
                            $("#form-builder-block form textarea[name='" + prompt_options_labels + "']").val(promptOptionsLabelsItem.value);
                        }
                        if (is_valid_item(promptOptionsValuesItem)) {
                            $("#form-builder-block form textarea[name='" + prompt_options_values + "']").val(promptOptionsValuesItem.value);
                        }

                        if (is_valid_item(topMinimumItem)) {
                            $("#form-builder-block form input[name='" + topminimum + "']").val(topMinimumItem.value);
                        }
                        if (is_valid_item(topMaximumItem)) {
                            $("#form-builder-block form input[name='" + topmaximum + "']").val(topMaximumItem.value);
                        }
                        if (is_valid_item(check_buttonItem)) {
                            $("#form-builder-block form input[name='" + check_button + "']").val(check_buttonItem.value);
                        }
                        if (is_valid_item(textValidationItem)) {
                            $("#form-builder-block form input[name='" + text_validation + "']").val(textValidationItem.value);
                        }

                        if (is_valid_item(labelItem)) {
                            $("#form-builder-block form input[name='" + label + "']").val(labelItem.value);
                        }
                        if (is_valid_item(labelItemGpttextBtn)) {
                            $("#form-builder-block form input[name='" + labelgptbtn + "']").val(labelItemGpttextBtn.value);
                        }
                        if (is_valid_item(helpTextItem)) {
                            $("#form-builder-block form input[name='" + helptext + "']").val(helpTextItem.value);
                        }
                        if (is_valid_item(chatGptPromptItem)) {
                            $("#form-builder-block form input[name='" + chatgptprompt + "']").val(chatGptPromptItem.value);
                        }
                        if (is_valid_item(optionsItem)) {
                            exist_options = true;
                            $(".form_builder_block .dropdown-options[data-language-id=" + langId + "] .added").remove();
                            $(".form_builder_block .dropdown-options-reloaded[data-language-id=" + langId + "] textarea").val('');

                            if (optionsItem.value != "") {
                                var option_list = JSON.parse(optionsItem.value);
                                //here is to load the value in each text area, Pending fill the default value, is needed?

                                $(".form_builder_block .dropdown-options-reloaded[data-language-id=" + langId + "] textarea").val(option_list.join("\n"));

                                var optionsValues = GenerateOptionsForPreview(option_list, typeField, true);
                                var myParent = $(".form_builder_block .dropdown-options-reloaded[data-language-id=" + langId + "]").parents('.tabs-panel');
                                PopulateDefaultValueFieldInPreviewReloaded(optionsValues, myParent);
                            }
                        }
                        if (is_valid_item(LabelTextAreaItem)) {
                            if (LabelTextAreaItem.value != "") {
                                CKEDITOR.instances[label_textarea].setData(LabelTextAreaItem.value);
                            }
                        }
                        if (is_valid_item(checkboxOptions)) {
                            $("#form-builder-block form input[name='" + option_checkbox + "']").val(checkboxOptions.value);
                        }

                        var default_value_dropdown = 'default_value_dropdown_simple-' + langId;
                        var defaultDropdownValueItem = item.properties.find(x => x.name == default_value_dropdown);

                        if (is_valid_item(defaultDropdownValueItem)) {
                            defaultValuePicklist = defaultDropdownValueItem.value;
                            $("#form-builder-block form select[name='" + default_value_dropdown + "']").val(defaultDropdownValueItem.value);
                        }
                    });

                    if (typeField === 'number') {
                        ratingScaleValidation(displayAs);

                    }
                    

                    if (typeField === 'dropdown') {
                        ratingScaleValidationPicklist(displayPicklistMode);
                        ShowDisplayAsRadioButtonsValues();
                    }
                    if (typeField === 'number' || typeField === 'dropdown' || typeField === 'radio' || typeField === "multiselect") {
                        isLabelDiferent();
                    }


                    
                    if (typeField === 'checkbox') {
                        var checkbox_defaults = [];
                        for (var i = item.properties.length - 1; i >= 0; i--) {
                            if (item.properties[i].name.includes('checkbox-default-')) {
                                checkbox_defaults.push(item.properties[i]);
                            }
                        }
                        if (checkbox_defaults.length > 0) {
                            $("#form-builder-block form input.checkbox-default").prop("checked", false);
                            $('#form-builder-block form input.checkbox-default-radio-unchecked').prop("checked", true);
                            for (var i = checkbox_defaults.length - 1; i >= 0; i--) {
                                if (checkbox_defaults[i].value === "on") {
                                    $("#form-builder-block form input[name='" + checkbox_defaults[i].name + "']").prop("checked", true);
                                    $('#form-builder-block form input[name="radio-' + checkbox_defaults[i].name + '"][data-value="Checked"]').prop("checked", true);
                                }
                            }
                        } else {
                            $("#form-builder-block form input.checkbox-default").prop("checked", false);
                            $('#form-builder-block form input.checkbox-default-radio-unchecked').prop("checked", true);
                        }
                    }
                    
                    var defaultValuePicklist = '';

                   //Iterate again to populate default value dropdown simple
                    if (is_required === false) {
                        $("#form-builder-block input[name='is_required']").prop("checked", false);
                    }
                    if (do_not_save_field_to_database === false) {
                        $("#form-builder-block input[name='do_not_save_field_to_database']").prop("checked", false);
                    }
                    if (include_signature_transaction_info === false) {
                        $("#form-builder-block input[name='include_signature_transaction_info']").prop("checked", false);
                    }
                    if (is_maximum_value_of_another_field === false) {
                        $("#form-builder-block input[name='is_maximum_value_of_another_field']").prop("checked", false);
                    }
                    if (is_minimum_value_of_another_field === false) {
                        $("#form-builder-block input[name='is_minimum_value_of_another_field']").prop("checked", false);
                    }
                     if (is_include_non_visible_fields === false) {
                        $("#form-builder-block input[name='is_include_non_visible_fields']").prop("checked", false);
                    }
                    if (show_format === false) {
                        $("#form-builder-block input[name='show_format']").prop("checked", false);
                       // $("#form-builder-block .step_value").removeClass('hidden');
                    } else {
                        $("#form-builder-block .step_value").addClass('hidden');
                    }
                    if (hide_label === false) {
                        $("#form-builder-block input[name='hide_label']").prop("checked", false);
                    }
                    if (read_only === false) {
                        $("#form-builder-block input[name='read_only']").prop("checked", false);
                    }
                    if (file_image === false) {
                        $("#form-builder-block input[name='file_image']").prop("checked", false);
                        validateOnlyImageLoad();
                    }
                    if (rich_text === false) {
                        $("#form-builder-block input[name='rich_text']").prop("checked", false);
                    }
                    if (is_encrypted === false) {
                        $("#form-builder-block input[name='encrypted']").prop("checked", false);
                    }
                    if (is_validate === false) {
                        $("#form-builder-block input[name='field_validate']").prop("checked", false);
                    }
                    if (is_validate_text === false) {
                        $("#form-builder-block input[name='field_validate_confirm_text']").prop("checked", false);
                    }
                    if (exist_options === false) {
                        $("#form-builder-block .dropdown-options .added").remove();
                    }
                    if (allow_time === false) {
                        $("#form-builder-block input[name='field_allow_time']").prop("checked", false);
                    }
                    if (extensions === false) {
                        $("#form-builder-block input[name='extension_allowed']").prop("checked", false);
                    }
                    if (display_as_slide === false) {
                        $("#form-builder-block input[name='allow_range']").prop("checked", false);
                    }
                    if (salesforceField === false) {
                        $("#form-builder-block select[name='salesforce_field']").val('none');
                    }
                    if (dont_save_sf === false) {
                        $('#form-builder-block input[name="save_field_salesforce"]').prop("checked", false);
                    }
                    if (dont_retr_sf === false) {
                        $('#form-builder-block input[name="retrieve_data_salesforce"]').prop("checked", false);
                    }


                    if (is_label_diferent === false) {
                        $('#form-builder-block input[name="is_label_diferent"]').prop("checked", false);
                        isLabelDiferent();
                    }
                    if (pull_values_from_sf === false) {
                        $('#form-builder-block .pull_values_from_sf_help').addClass("hidden");
                        if (typeField == 'dropdown')
                            $('#form-builder-block .dropdown-options-reloaded').removeClass('hidden');
                    }
                    if (from_sf_list_views === true) {
                        if (list_view_salesforce_object !== "") {
                            if ($("#form-builder-block select[name='list_view_salesforce_object'] option").length === 0) {
                               
                                loadSfObjects(list_view_salesforce_object);
                            } else {
                                $("#form-builder-block select[name='list_view_salesforce_object']").val(list_view_salesforce_object);
                            }

                            if (listview !== "") {
                                loadSfListViews(list_view_salesforce_object, listview, sflistViewLabel, sflistViewValue, sflistViewFilterField, listview_name);
                            }
                        } else {
                            $("#form-builder-block select[name='list_view_salesforce_object']").val("");
                            $("#form-builder-block select[name='listview'] option").remove();
                        }
                    }

                    if (use_mentions === true) {
                        $('.form_builder_block input[name="mentions_textarea"]').prop("checked", true);
                        if (object_for_mentions !== "") {
                            if ($("#form-builder-block select[name='objects_mentions'] option").length === 0) {
                                
                                loadSfObjects(object_for_mentions);
                            } else {
                                $("#form-builder-block select[name='objects_mentions']").val(object_for_mentions);
                            }

                            if (listview_mentions !== "") {
                                loadSfListViews(object_for_mentions, listview_mentions, sflistViewLabel, sflistViewValue, sflistViewFilterField);
                            }
                        } else {
                            $("#form-builder-block select[name='objects_mentions']").val("");
                            $("#form-builder-block select[name='listviews_mentions'] option").remove();
                        }
                    } else {
                        $('.form_builder_block input[name="mentions_textarea"]').prop("checked", false);

                    }

                    if (auto_suggest == false) {
                        $("#form-builder-block input[name='auto_suggest']").prop("checked", false);
                    }
                    if (paginate_options == false) {
                        $("#form-builder-block input[name='paginate_options']").prop("checked", false);
                    }
                    if (is_master_detail == false) {
                        $("#form-builder-block input[name='is_master_detail']").val("");
                    }
                    if (reference_to_object == '') {
                        $("#form-builder-block input[name='reference_to_object']").val("");
                    }
                    if (reference_field == '') {
                        $("#form-builder-block input[name='reference_field']").val("");
                    }
                    if (is_label_diferent_section == false) {
                        $("#form-builder-block input[name='is_label_diferent_section']").prop("checked", false);
                    }
                    if (private_file == false) {
                        $("#form-builder-block input[name='private_file']").prop("checked", false);
                    }
                    if (display_inline_inputs == false) {
                        $("#form-builder-block input[name='display_inline_inputs']").prop("checked", false);
                    }
                    if (only_future == false) {
                        $("#form-builder-block input[name='only_future']").prop("checked", false);
                    }
                    if (only_past == false) {
                        $("#form-builder-block input[name='only_past']").prop("checked", false);
                    }
                    if (allow_current_date == false) {
                        $("#form-builder-block input[name='allow_current_date']").prop("checked", false);
                    }
                    if (depends_another_date == false) {
                        $("#form-builder-block input[name='depends_another_date']").prop("checked", false);
                    }
                    if (save_in_salesforce == false) {
                        $("#form-builder-block input[name='save_in_salesforce']").prop("checked", false);
                    }
                    if (related_files == false) {
                        $("#form-builder-block input[name='related_files']").prop("checked", false);
                    }
                    if (save_in_salesforce == true) {
                        //if (salesforce_library != '') {
                        loadSfLibraries(salesforce_library);
                        //}
                    }

                    MultipleFilesActions(multiple_files);
                    

                    if (is_encrypted_value) {
                        $("#form-builder-block input[name='encrypted']").prop("checked", true);
                    }
                    else {
                        $("#form-builder-block input[name='encrypted']").prop("checked", false);
                    }
                    if (salesforceField) {
                        var sf_object_value_text = $('.form_builder_block input[name="salesforce_object_field"]').val();
                        var sf_object_value = item.properties.find(function (obj) { return obj.name === 'salesforce_object' });
                        var valueObjectText = $("#form-builder-block select[name='salesforce_object']").val() == undefined ? '' : $("#form-builder-block select[name='salesforce_object']").val();
                        if ((sf_object_value !== null && sf_object_value !== undefined && sf_object_value.value !== null
                            && sf_object_value.value !== undefined && sf_object_value.value.indexOf('Both') == 0)
                            || (valueObjectText !== null && valueObjectText !== undefined && valueObjectText.indexOf('Both') == 0)) {
                            $("select[name='salesforce_field'] option[value='" + salesforceField_value + "'][data-object='" + sf_object_value_text + "']").prop("selected", true);
                        }
                        else {
                            $("#form-builder-block select[name='salesforce_field']").val(salesforceField_value);
                            if ($("select[name='salesforce_field'] option[value='" + salesforceField_value + "']").data("relation-name")
                                && $("select[name='salesforce_field'] option[value='" + salesforceField_value + "']").data("relation-name") != '') {                                
                                $("#form-builder-block related-field-section").show();
                                enableRelatedFieldSection(salesforce_rel_field);
                            }
                            else {
                                disableRelatedFieldSection();
                            }
                        }
                    }

                    if (salesforce_rel_field == '') {
                        $("#form-builder-block select[name='salesforce_rel_field']").val('');
                    }

                    if (typeField === 'dropdown' && salesforceField !== false && pull_values_from_sf !== false) {
                        add_default_values_for_picklist_from_salesforce(sf_default_value_field);
                    }

                    if (typeField === 'dropdown') {
                        ValidationDisplayOrHideFieldsSFDropdown();
                        ShowHideForPaginationFeature(displayPicklistMode, auto_suggest, pull_values_sf_source);
                    }
                    if (typeField !== 'section' && typeField !== 'paymentcomponent' && typeField !== 'hidden' && typeField !== 'description' && typeField !=='submit') {
                        alignLabelBehavior();
                    }

                    

                    if (typeField === 'section') {
                        borderOptionBehavior();
                    }                    

                    if (useUserLocation === false) {
                        $("#form-builder-block input[name='addresscomponent_use_user_location']").prop("checked", false);
                    }
                    
                    if (useAddressVerification === false) {
                        $("#form-builder-block input[name='addresscomponent_address_verification']").prop("checked", false);
                    }

                    if (useAutoComplete === false) {
                        $("#form-builder-block input[name='addresscomponent_autocomplete']").prop("checked", false);
                    }
                    DisplayRichTextOptions();
                    DisplayTextAreaModeOptions();
                    DisplayMultiplePreDefinePromptsOptions();
                } else {
                    load_payment_component_selected_formbuilder(item);
                }

            }

    }
    //finishLoading();
    EventActiveBorder(section_border_sttus);


    $('.checkbox_default input[type="radio"]').change(function (event) {
        if ($(this).attr('data-value') === 'Checked') {
            $(this).parent().siblings('input.checkbox-default').prop("checked", true);
        }else{
            $(this).parent().siblings('input.checkbox-default').prop("checked", false);
        }
    });

}

function DetectFormChange() {
    if (!is_backend_page()) return;
    $(document).on('change', '#form-builder-block form .build-field-settings input', function () {
        $("#form_changed").val("true");
        $(".form_builder_block button.save_field").addClass("pending_changes");
    });

    $(document).on('change', '#form-builder-block form .build-field-settings select', function () {
        $("#form_changed").val("true");
        $(".form_builder_block button.save_field").addClass("pending_changes");
    });

    $(document).on('change', '#form-builder-block form .build-field-settings textarea', function () {
        $("#form_changed").val("true");
        $(".form_builder_block button.save_field").addClass("pending_changes");
    });
}
/// should be based on the default language
function AssignOptionToPreviewReloaded(options, typeSelect, default_value) {
    if (typeSelect == "multiselect") {
        var multiselect = '<select name="select-preview" multiple="" readonly="" class="multiselect-preview">' + options + ' </select>';
        $('.form_builder_block .field-row.active .input-group-select').html(multiselect);
        $('.form_builder_block .field-row.active .input-group-select .multiselect-preview').multiselect();

    } else if (typeSelect == "dropdown") {
        $('.form_builder_block .field-row.active .select-preview').html(options);

    } else if (typeSelect == "radio") {

        $('.form_builder_block .field-row.active .radio_field_preview').html(options);
        $('.form_builder_block .field-row.active .input-group-select .multiselect-preview').multiselect();
    }
}

function PopulateDefaultValueFieldInPreviewReloaded(options, self) {
    options = '<option value="">' + window.translation.select_option + '</option>' + options;
    self.find('.default_value_dropdown_simple').empty();
    self.find('.default_value_dropdown_simple').html(options);

}
function GenerateOptionsForPreview(currentLines, typeSelect, forceNormalOptions,default_value) {
    var options = '';
    var i = 0;
    var line = null;

    if (typeSelect == "dropdown" || typeSelect == "multiselect" || forceNormalOptions === true) {
        for (i = 0; i < currentLines.length; i++) {
            line = $.trim(currentLines[i]);
            if ($(line != "")) {
                if (default_value && default_value==line) {
                    options += '<option selected value="' + line + '">' + line + '</option>';
                }else{
                    options += '<option value="' + line + '">' + line + '</option>';
                }
            }
        }

    } else if (typeSelect == "radio") {
        for (i = 0; i < currentLines.length; i++) {
            line = $.trim(currentLines[i]);
            if ($(line != "")) {
                options += '<div><input type="radio" name="radio_preview" value="option-1" id="option_radio-' + line + '"><label for="option_radio-' + line + '">' + line + '</label></div>';
            }
        }
    }

    return options;
}

/**
 * This method is to verify if the other options are empty then
 * populate the same values in the textarea and in the internal preview
 * */
function ProccessOptionsAdditionalLanguages(currentTextAreaId, options, typeSelect, currentTextAreaValue) {
    $('.form_builder_block .dropdown-options-reloaded textarea[id!="' + currentTextAreaId + '"]').each(function () {

        var currentValue = $.trim($(this).val());
        if (currentValue == '' || currentValue == null) {
            $(this).val(currentTextAreaValue);
            PopulateDefaultValueFieldInPreviewReloaded(options, $(this).parents('.tabs-panel'));
        }

    });
}
function AddOptionToDropdownOrMultiselect() {
    if (!is_backend_page()) return;
    $(document).on('blur', '.form_builder_block .dropdown-options-reloaded textarea', function () {
        var parent = $(this).parents('.tabs-panel');
        var currentTextAreaId = $(this).prop('id');

        var i = 0;
        var line = null;
        var currentValue = $.trim($(this).val());
        if (currentValue.length > 0) {
            var typeSelect = $(".form_builder_block select[name='type_field']").val();
            var currentLines = currentValue.split(/\r?\n/g);
            var options = GenerateOptionsForPreview(currentLines, typeSelect);

            AssignOptionToPreviewReloaded(options, typeSelect);

            if (typeSelect === 'radio')
                options = GenerateOptionsForPreview(currentLines, typeSelect, true);

            PopulateDefaultValueFieldInPreviewReloaded(options, parent, true);
            ProccessOptionsAdditionalLanguages(currentTextAreaId, options, typeSelect, currentValue);

        }

    });


    $(document).on('keypress', '.form_builder_block .dropdown-options .option-master', function (e) {
        // Detecting enter event for input
        if (e.which === 13) {
            return false;
        }
    });
}

function AddOptionToPreviewUpdate(typeSelect, _options, _checkbox_option, _default_values, elementId) {
    var options = "";
    if (typeSelect == 'dropdown') {
        if(_options != null && _options != ''){
            $.each(_options, function( i, option ) {
                if(_default_values){
                    for (var i = _default_values.length - 1; i >= 0; i--) {
                        var op =(_default_values[i].value === option)? '<option selected value="' + option + '">' + option + '</option>' : '<option value="' + option + '">' + option + '</option>';
                    }
                }else{
                    var op = '<option value="' + option + '">' + option + '</option>';
                }
                options = options + op;
            });
        }
        $('.form_builder_block div[class="field-row"][data-element-id="' + elementId + '"] .select-preview').html(options);

        //TODO Populate default value dropdown
    }
    else if (typeSelect == 'multiselect') {
        if(_options != null && _options != ''){
            $.each(_options, function( i, option ) {
                var op = '<option value="' + option + '">' + option + '</option>';
                options = options + op;
            });
        }

        var multiselect = '<select name="select-preview" multiple="" readonly="" class="multiselect-preview">' + options + ' </select>';
        $('.form_builder_block div[class="field-row"][data-element-id="' + elementId + '"] .input-group-select').html(multiselect);
        $('.form_builder_block div[class="field-row"][data-element-id="' + elementId + '"] .input-group-select .multiselect-preview').multiselect();
    }
    else if (typeSelect == 'radio') {
        if(_options != null && _options != ''){
            $.each(_options, function( i, option ) {
                var op = '<div><input type="radio" name="radio_preview" value="' + option + '" id="option_radio-'+ option +'"><label for="option_radio-'+ option +'">'+ option +'</label></div>';
                options = options + op;
            });
        }
        else {
            options = '<div><input type="radio" name="radio_preview" value="option-1" id="option_radio-1"><label for="option_radio-1">Option 1</label></div><div><input type="radio" name="radio_preview" value="option-2" id="option_radio-2"><label for="option_radio-2">Option 2</label></div>';
        }
        $('.form_builder_block div[class="field-row"][data-element-id="' + elementId + '"] .radio_field_preview').html(options);
        $('.form_builder_block div[class="field-row"][data-element-id="' + elementId + '"] .input-group-select .multiselect-preview').multiselect();

        //Populate default values field
        if(_default_values) {
            _default_values.forEach(function(item) {
                $('.form_builder_block select[name="default_value_dropdown_simple-' + item.language + '"]').val(item.value);
            });
        }
    }
    else if (typeSelect == 'checkbox') {
        $('.form_builder_block div[class="field-row"][data-element-id="' + elementId + '"] .checkbox_field_preview label').text(_checkbox_option);
    }
}

function EventOpenFormInModal() {
    $(document).on('click', '.form-user-modal .close-form-modal-button.special-close-button', function () {
        var formId = $(this).attr('data-form-id');
        var revealModal = $(this).attr('data-reveal-modal');
        closeCustomForm(formId, revealModal);
    });
    $(document).on('click', '.open-form-modal', function (e) {
        e.preventDefault();
        var formId = $(this).attr('data-form-id');
        var isHidden = $('#form-user-modal-' + formId).length > 0 ? $('#form-user-modal-' + formId).hasClass('hidden-autosubmit-form') : false;
        if (isHidden) {
            event_hidden_form($(this));
        }
        else {
            event_modal_form($(this));
        }
        return false;
    });
}

function event_hidden_form(thisElement) {
    var formId = thisElement.attr('data-form-id');
    var customUrlParameters = thisElement.attr('data-url-parameters') != undefined ? thisElement.attr('data-url-parameters') : '';
    var tokens = [];
    var listingCMSRelated = null;
    var totalChecked = 0;

    var SPINNER_IMG_TMP = '<img alt="' + window.translation.loading_image + '" title="' + window.translation.loading_image + '" class="spinner spinner-' + formId + '" src="/img/default/spinner-green.svg" height="30" width="30" />';
    thisElement.after(SPINNER_IMG_TMP);
    thisElement.addClass('disabled-' + formId);
    thisElement.attr('disabled', 'disabled');

    /*
    if (thisElement.hasClass('multiple-update') && customUrlParameters) {
        if (formId == '0') {
            var formName = thisElement.attr('data-action');
            if ($('[id="' + formName + '-formblock"].formBlock.blockContainer').length > 0) {
                formId = $('[id="' + formName + '-formblock"].formBlock.blockContainer').first().attr('data-form-id');
                thisElement.attr('data-form-id', formId);
                thisElement.attr('data-element-reveal', 'form-user-modal-' + formId);
            }
        }
        listingCMSRelated = thisElement.closest('.listingcmsblock').find('[name="listingcmsid"]').val();
        var exp = /\{[a-zA-Z0-9_.]+(__r\.[a-zA-Z0-9_]+)?\}/g;
        if (customUrlParameters) {
            customUrlParameters.replace(exp, function (a, b) {
                tokens.push(a.substr(1, a.length - 2));
            });
        }
        tokens.forEach(function (itemObj) {
            var tokenValueItems = [];

            var datatable_records = $('#dataTable' + listingCMSRelated).dataTable();
            totalChecked = datatable_records.$('input[type="checkbox"].check-record:checked').length;
            datatable_records.$('input[type="checkbox"].check-record:checked').each(function () {
                var myCheck = thisElement;
                if (!tokenValueItems.includes(thisElement.attr('data-' + itemObj.toLowerCase())))
                    tokenValueItems.push(thisElement.attr('data-' + itemObj.toLowerCase()));
            });
            tokenValue = tokenValueItems.join(';');
            let searchValue = "{" + itemObj.toLowerCase() + "}";
            let regExp = new RegExp(searchValue, "gi");
            customUrlParameters = customUrlParameters.replaceAll(regExp, tokenValue);
        });
    }

    if (thisElement.hasClass('multiple-update') && totalChecked == 0) {
        Swal.fire({
            title: window.translation.please_select_at_lease_one_record,
            icon: "info"
        });
        return;
    }
    */
    var selectToReload = thisElement.attr('data-select-field') != undefined ? thisElement.attr('data-select-field') : '';
    $('#form-user-modal-' + formId).find('input[name="custom-url-received"]').val(customUrlParameters);
    $('#form-user-modal-' + formId).find('input[name="select-to-reload"]').val(selectToReload);
    $('#form-user-modal-' + formId).find('.message_sid_querystring').addClass('hidden');
    $('#form-user-modal-' + formId).find('a.submit-button').removeAttr('disabled');

    PopulateCustomRecId($('#form-user-modal-' + formId).find('.formBlock'), customUrlParameters);

    openCustomForm(formId, true);
    var self = $('.formBlock[data-form-id="' + formId + '"]');

    $(self).find('select').each(function () {
        var dataType = thisElement.attr('data-type');
        if (dataType == 'multiselect') {
            //thisElement.multiselect();
        }
    });
    form_initialize_date_picker(self);
}

function event_modal_form(thisElement) {
    var modalId = thisElement.data('element-reveal');
    var formId = thisElement.attr('data-form-id');
    var customUrlParameters = thisElement.attr('data-url-parameters') != undefined ? thisElement.attr('data-url-parameters') : '';
    var tokens = [];
    var listingCMSRelated = null;
    var totalChecked = 0;
    if (thisElement.hasClass('multiple-update') && customUrlParameters) {
        if (formId == '0') {
            var formName = thisElement.attr('data-action');
            if ($('[id="' + formName + '-formblock"].formBlock.blockContainer').length > 0) {
                formId = $('[id="' + formName + '-formblock"].formBlock.blockContainer').first().attr('data-form-id');
                thisElement.attr('data-form-id', formId);
                thisElement.attr('data-element-reveal', 'form-user-modal-' + formId);
            }
        }
        listingCMSRelated = thisElement.closest('.listingcmsblock').find('[name="listingcmsid"]').val();
        var exp = /\{[a-zA-Z0-9_.]+(__r\.[a-zA-Z0-9_]+)?\}/g;
        if (customUrlParameters) {
            customUrlParameters.replace(exp, function (a, b) {
                tokens.push(a.substr(1, a.length - 2));
            });
        }
        tokens.forEach(function (itemObj) {
            var tokenValueItems = [];
            var datatable_records = $('#dataTable' + listingCMSRelated).dataTable();
            totalChecked = datatable_records.$('input[type="checkbox"].check-record:checked').length;
            datatable_records.$('input[type="checkbox"].check-record:checked').each(function () {
                var myCheck = $(this);
                if (!tokenValueItems.includes($(this).attr('data-' + itemObj.toLowerCase()))) {
                    tokenValueItems.push($(this).attr('data-' + itemObj.toLowerCase()));

                }
            });
            tokenValue = tokenValueItems.join(';');
            let searchValue = "{" + itemObj.toLowerCase() + "}";
            let regExp = new RegExp(searchValue, "gi");
            customUrlParameters = customUrlParameters.replaceAll(regExp, tokenValue);
        });
    }

    if (thisElement.hasClass('multiple-update') && totalChecked == 0) {
        Swal.fire({
            title: window.translation.please_select_at_lease_one_record,
            icon: "info"
        });
        return;
    }
    var selectToReload = thisElement.attr('data-select-field') != undefined ? thisElement.attr('data-select-field') : '';
    $('#form-user-modal-' + formId).find('input[name="custom-url-received"]').val(customUrlParameters);
    $('#form-user-modal-' + formId).find('input[name="select-to-reload"]').val(selectToReload);
    $('#form-user-modal-' + formId).find('.message_sid_querystring').addClass('hidden');
    $('#form-user-modal-' + formId).find('a.submit-button').removeAttr('disabled');

    PopulateCustomRecId($('#form-user-modal-' + formId).find('.formBlock'), customUrlParameters);
    openCustomForm(formId);
    var self = $('.formBlock[data-form-id="' + formId + '"]');

    $(self).find('select').each(function () {
        var dataType = thisElement.attr('data-type');
        if (dataType == 'multiselect') {
            //thisElement.multiselect();
        }
    });
    form_initialize_date_picker(self);
}
function EventsDetectValidateField() {
    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block input[name="field_validate"]', function () {

        if ($('.form_builder_block input[name="field_validate"]:checked').length > 0) {
            var classHidden = "";
            if ($('.form_builder_block input[name="hide_label"]:checked').length > 0) {
                classHidden = "hidden";
            }
            var classRequired = "";
            if ($('.form_builder_block input[name="is_required"]:checked').length > 0) {
                classRequired = "required";
            }
            $('.form_builder_block .field-row.active .confirm_email_preview').remove();
            $('.form_builder_block .field-row.active .confirm_password_preview').remove();
            if ($(".form_builder_block select[name='type_field']").val() == "email") {

                var confirm = '<div class="confirm_email_preview">'
                    + '<div class="left"><label class="label_preview ' + classHidden + ' ' + classRequired + '">' + window.translation.confirm_email + '</label></div>'
                    +'<div class="right"><input id="email_confirm_preview" name="email_confirm_preview" readonly="" type="text" placeholder="Ex." class="email_confirm_preview"></div>'
                    +'</div>';
                    $('.form_builder_block .field-row.active .content').append(confirm);
            }
            if ($(".form_builder_block select[name='type_field']").val() == "password")
            {
                var confirm = '<div class="confirm_password_preview">'
                    + '<div class="left"><label class="label_preview ' + classHidden + ' ' + classRequired + '">' + window.translation.confirm_password + '</label></div>'
                    + '<div class="right"><input id="password_confirm_preview" name="password_confirm_preview" readonly="" type="text" placeholder="Ex." class="password_confirm_preview"></div>'
                    + '</div>';
                $('.form_builder_block .field-row.active .content').append(confirm);
            }

        } else {
            $('.form_builder_block .field-row.active .confirm_email_preview').remove();
            $('.form_builder_block .field-row.active .confirm_password_preview').remove();
        }
    });
}

function DetectValidateField() {

    if (!is_backend_page()) return;
    if ($('.form_builder_block input[name="field_validate"]:checked').length > 0) {
        $('.form_builder_block .field-row.active .confirm_email_preview').remove();
        $('.form_builder_block .field-row.active .confirm_password_preview').remove();
        // validate if hide is active
        var classHidden = "";
        if ($('.form_builder_block input[name="hide_label"]:checked').length > 0) {
            classHidden = "hidden";
        }
        var classRequired = "";
        if ($('.form_builder_block input[name="is_required"]:checked').length > 0) {
            classRequired = "required";
        }

        if ($(".form_builder_block select[name='type_field']").val() == "email") {

            var confirm = '<div class="confirm_email_preview">'
                + '<div class="left"><label class="label_preview '+classHidden+' '+classRequired+'">' + window.translation.confirm_email + '</label></div>'
                + '<div class="right"><input id="email_confirm_preview" name="email_confirm_preview" readonly="" type="text" placeholder="Ex." class="email_confirm_preview"></div>'
                + '</div>';
            $('.form_builder_block .field-row.active .content').append(confirm);
        }
        if ($(".form_builder_block select[name='type_field']").val() == "password") {
            var confirm = '<div class="confirm_password_preview">'
                + '<div class="left"><label class="label_preview ' + classHidden + ' ' + classRequired + '">' + window.translation.confirm_password + '</label></div>'
                + '<div class="right"><input id="password_confirm_preview" name="password_confirm_preview" readonly="" type="text" placeholder="Ex." class="password_confirm_preview"></div>'
                + '</div>';
            $('.form_builder_block .field-row.active .content').append(confirm);
        }

    } else {
        $('.form_builder_block .field-row.active .confirm_email_preview').remove();
        $('.form_builder_block .field-row.active .confirm_password_preview').remove();
    }
    ValidateRequiredField();

}

function GetLocalFormBuilderStorage() {

    if (!is_backend_page()) return;
    var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
    var jsonData = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);
    if (jsonData == "" || jsonData == null) {
        setDataToSessionStore("", formTokenStore);
        //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, "");
        jsonData = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);
    }


    return jsonData;
}

/*** Start Section: Methods for properties***/
/*
    Here MUST BE created the methods to set the properties (e.g is_hidden, align_label, etc) that are used in more
    than one field (e.g textbox, hidden, select, etc). The properties that are exclusive of a field type (e.g decimal_mark)
    are added directly into the field method
 */
function set_object_property_values(_name, _value) {
    return {name: _name, value:_value}
}

function set_boolean_property_value(fieldName, selector, properties) {
    if (fieldName !== undefined && selector !== undefined) {
        if ($(selector).is(':checked') === true) {
            properties.push(set_object_property_values(fieldName, $(selector).val()));
        }
    }
    return properties;
}
function set_common_properties(properties, type_field) {
    //form-id
    properties.push(set_object_property_values('form-id', $('.form_builder_block form input[name="form-id"]').val()));

    //field_id
    properties.push(set_object_property_values('field_id', $('.form_builder_block form input[name="field_id"]').val()));

    //form_builder_block_id
    properties.push(set_object_property_values('form_builder_block_id', $('.form_builder_block form input[name="form_builder_block_id"]').val()));

    //element-id
    properties.push(set_object_property_values('element-id', $('.form_builder_block form input[name="element-id"]').val()));

    //custom_cssclass
    properties.push(set_object_property_values('custom_cssclass', $('.form_builder_block form input[name="custom_cssclass"]').val()));

    //type_field
    properties.push(set_object_property_values('type_field', type_field));


    return properties;
}

function set_multilanguage_input_properties(properties, prefix) {

    let selector = '.form_builder_block form input[name^="' + prefix + '"]';

    if (prefix == 'label-')
        selector += ':not(input[name$="-donation"])';
    else if (prefix == 'options-') {
        selector += ':not(input[name^="options-labels-"])';
    }

    $(selector).each(function () {
        properties.push(set_object_property_values($(this).prop("id"), $(this).val()));
    });
    return properties;
}

function set_multilanguage_textarea_properties(properties, prefix) {

    let selector = '.form_builder_block form textarea[name^="' + prefix + '"]';

    $(selector).each(function () {
        properties.push(set_object_property_values($(this).prop("id"), $(this).val()));
    });
    return properties;
}


function set_multilanguage_dropdown_properties(properties, prefix) {

    let selector = '.form_builder_block form select[name^="' + prefix + '"]';

    $(selector).each(function () {
        properties.push(set_object_property_values($(this).prop("name"), $(this).val()));
    });
    return properties;
}

function set_labels_properties(properties) {   
    return set_multilanguage_input_properties(properties, 'label-');
}

function set_labels_gptbtn_properties(properties) {   
    return set_multilanguage_input_properties(properties, 'label-gpttext-btn-');
}
function set_checkbox_options_properties(properties) {
    return set_multilanguage_input_properties(properties, 'checkbox-option-');
}

function set_salesforce_mapping_properties(properties) {

    properties.push(set_object_property_values('salesforce_object', $('.form_builder_block form select[name="salesforce_object"]').val()));
    properties.push(set_object_property_values('salesforce_object_field', $('.form_builder_block form input[name="salesforce_object_field"]').val()));
    properties.push(set_object_property_values('salesforce_field', $('.form_builder_block form select[name="salesforce_field"]').val()));
    properties.push(set_object_property_values('salesforce_rel_field', $('.form_builder_block form select[name="salesforce_rel_field"]').val()));
    properties.push(set_object_property_values('is_master_detail', $('.form_builder_block form input[name="is_master_detail"]').val()));
    properties.push(set_object_property_values('reference_to_object', $('.form_builder_block form input[name="reference_to_object"]').val()));
    properties.push(set_object_property_values('reference_field', $('.form_builder_block form input[name="reference_field"]').val()));
    properties.push(set_object_property_values('related_field_object', $('.form_builder_block form select[name="related_field_object"]').val()));

    //include_related_objects

    properties = set_boolean_property_value('save_data_salesforce', '.form_builder_block form input[name="save_data_salesforce"]', properties);
    properties = set_boolean_property_value('retrieve_data_salesforce', '.form_builder_block form input[name="retrieve_data_salesforce"]', properties);
    properties = set_boolean_property_value('save_field_salesforce', '.form_builder_block form input[name="save_field_salesforce"]', properties);

    return properties;
}
function set_almost_common_properties(properties) {

    //these properties must be added only if the field is not submit,hidden, description, payment component, section address compopnent
    properties = set_labels_properties(properties);
    properties = set_salesforce_mapping_properties(properties);
    properties = set_help_text_property(properties);
    properties = set_align_label_property(properties);
    properties = set_copy_to_hidden_property(properties);
    properties = set_is_hidden_label_property(properties);
    properties = set_field_visibility(properties);

    //read_only
    properties = set_boolean_property_value('read_only', '.form_builder_block form input[name="read_only"]', properties);
    //is_required
    properties = set_boolean_property_value('is_required', '.form_builder_block form input[name="is_required"]', properties);
    //do_not_save_field_to_database
    properties = set_boolean_property_value('do_not_save_field_to_database', '.form_builder_block form input[name="do_not_save_field_to_database"]', properties);
    properties = set_boolean_property_value('include_signature_transaction_info', '.form_builder_block form input[name="include_signature_transaction_info"]', properties);

    return properties;
}

function set_copy_to_hidden_property(properties) {
    properties.push(set_object_property_values('copy_to_hidden', $('.form_builder_block form select[name="copy_to_hidden"]').val()));
    return properties;
}

function set_field_visibility(properties) {
    properties.push(set_object_property_values('field_visibility', $('.form_builder_block form select[name="field_visibility"]').val()));
    return properties;
}

function set_is_hidden_label_property(properties) {
    properties = set_boolean_property_value('hide_label', '.form_builder_block form input[name="hide_label"]', properties);
    return properties;
}

function set_align_label_property(properties) {
    properties.push(set_object_property_values('align_label', $('.form_builder_block form select[name="align_label"]').val()));
    return properties;
}

function set_checkbox_default_property(properties) {
    $('.form_builder_block input.checkbox-default').each(function () {
        if ($(this).is(':checked')) {
            properties.push(set_object_property_values($(this).prop('name'), 'on'));
        }
    });

    return properties;
}

function set_help_text_property(properties) {
    return set_multilanguage_input_properties(properties, 'helptext_field-');
}


function set_place_holder_property(properties) {
    properties.push(set_object_property_values('placeholder_field', $('.form_builder_block form input[name="placeholder_field"]').val()));
    return properties;
}
function set_chat_gpt_prompt_property(properties) {
    return set_multilanguage_input_properties(properties, 'chat_gpt_prompt-');
}
function set_chat_gpt_text_area_mode_property(properties) {
    properties = set_boolean_property_value('chat_gpt_text_area_mode', '.form_builder_block form input[name="chat_gpt_text_area_mode"]', properties);
    return properties;
}
function set_chat_gpt_allow_enter_complete_prompt_property(properties) {
    properties = set_boolean_property_value('chat_gpt_allow_enter_complete_prompt', '.form_builder_block form input[name="chat_gpt_allow_enter_complete_prompt"]', properties);
    return properties;
}
function set_chat_gpt_allow_multiple_pre_define_prompts_property(properties) {
    properties = set_boolean_property_value('chat_gpt_allow_multiple_pre_define_prompts', '.form_builder_block form input[name="chat_gpt_allow_multiple_pre_define_prompts"]', properties);
    return properties;
}
function set_chat_gpt_prompt_labels_options_property(properties) {
    properties = set_multilanguage_textarea_properties(properties, 'prompt-options-labels-textarea-');
    return properties;
}
function set_chat_gpt_prompt_values_options_property(properties) {
    properties = set_multilanguage_textarea_properties(properties, 'prompt-options-values-textarea-');
    return properties;
}
function set_chat_gpt_by_ia_property(properties) {
    properties.push(set_object_property_values('chat_gpt_by_ia', $('.form_builder_block form select[name="chat_gpt_by_ia"]').val()));
    return properties;
}

function set_default_value_property(properties) {
    properties.push(set_object_property_values('default_value_field', $('.form_builder_block form input[name="default_value_field"]').val()));
    return properties;
}
function set_minimum_value_property(properties) {
    properties.push(set_object_property_values('minimum_value', $('.form_builder_block form input[name="minimum_value"]').val()));
    return properties;
}

function set_maximum_value_property(properties) {
    properties.push(set_object_property_values('maximum_value', $('.form_builder_block form input[name="maximum_value"]').val()));
    return properties;
}

function set_scale_color_property(properties) {
    properties.push(set_object_property_values('scale_color', $('.form_builder_block form select[name="scale_color"]').val()));
    return properties;
}


function set_properties_for_option_from_sf(properties) {
    properties.push(set_object_property_values('option_from_source_sf', $('.form_builder_block form select[name="pull_values_sf_source"]').val()));
    return properties;
}



function set_sf_listview_object_property(properties) {
    properties.push(set_object_property_values('list_view_salesforce_object', $('.form_builder_block form select[name="list_view_salesforce_object"]').val()));
    return properties;
}

function set_listview_property(properties) {
    properties.push(set_object_property_values('listview', $('.form_builder_block form select[name="listview"]').val()));
    return properties;
}

function set_auto_suggest_property(properties) {
    properties = set_boolean_property_value('auto_suggest', '.form_builder_block form input[name="auto_suggest"]', properties);
    return properties;
}

function set_paginate_options_property(properties) {
    properties = set_boolean_property_value('paginate_options', '.form_builder_block form input[name="paginate_options"]', properties);
    return properties;
}

function set_is_label_different_property(properties) {
    properties = set_boolean_property_value('is_label_diferent', '.form_builder_block form input[name="is_label_diferent"]', properties);
    return properties;
}

function set_dropdown_options_property(properties) {
    properties = set_multilanguage_textarea_properties(properties, 'options-textarea-');
    properties = set_multilanguage_input_properties(properties, 'options-');

    return properties;
}

function set_dropdown_label_options_property(properties) {
    properties = set_multilanguage_textarea_properties(properties, 'options-labels-textarea-');
    return properties;
}

function set_load_options_from_list_view_properties(properties) {
    properties.push(set_object_property_values('listview_name', $('.form_builder_block form input[name="listview_name"]').val()));
    properties.push(set_object_property_values('sf_listview_label_field', $('.form_builder_block form select[name="sf_listview_label_field"]').val()));
    properties.push(set_object_property_values('sf_listview_value_field', $('.form_builder_block form select[name="sf_listview_value_field"]').val()));
    properties.push(set_object_property_values('sf_listview_filter_field', $('.form_builder_block form select[name="sf_listview_filter_field"]').val()));
    properties.push(set_object_property_values('sf_listview_filter_value', $('.form_builder_block form input[name="sf_listview_filter_value"]').val()));
    properties.push(set_object_property_values('sf_listview_filter_rules', $('.form_builder_block form input[name="sf_listview_filter_rules"]').val()));
    properties.push(set_object_property_values('sf_listview_filter_logic', $('.form_builder_block form input[name="sf_listview_filter_logic"]').val()));
    properties.push(set_object_property_values('sf_listview_default_value', $('.form_builder_block form input[name="sf_listview_default_value"]').val()));
    properties.push(set_object_property_values('sf_listview_filter_operator', $('.form_builder_block form select[name="sf_listview_filter_operator"]').val()));

    return properties;
}
function set_load_mention_from_list_view_properties(properties) {
    properties.push(set_object_property_values('sf_listview_label_field', $('.form_builder_block form select[name="field_label_mentions"]').val()));
    properties.push(set_object_property_values('sf_listview_value_field', $('.form_builder_block form select[name="field_value_mentions"]').val()));
    properties.push(set_object_property_values('sf_listview_filter_rules', $('.form_builder_block form input[name="filter_rules_mentions"]').val()));
    properties.push(set_object_property_values('sf_listview_filter_logic', $('.form_builder_block form input[name="filter_logic_mentions"]').val()));
    return properties;
}

function set_number_of_columns_checkbox_properties(properties) {
    properties.push(set_object_property_values('number_of_columns_checkbox', $('.form_builder_block form input[name="number_of_columns_checkbox"]').val()));
    return properties;
}

function set_default_value_for_picklist(properties) {
    properties = set_multilanguage_dropdown_properties(properties,'default_value_dropdown_simple-');
    return properties;
}

function set_minimum_characters_property(properties) {
    properties.push(set_object_property_values('minimum_characters', $('.form_builder_block form input[name="minimum_characters"]').val()));
    return properties;
}

function set_max_height_property(properties) {
    properties.push(set_object_property_values('max_height', $('.form_builder_block form input[name="max_height"]').val()));
    return properties;
}

function set_encrypted_property(properties) {
    properties = set_boolean_property_value('encrypted', '.form_builder_block form input[name="encrypted"]', properties);
    return properties;
}

function set_maximum_characters_property(properties) {
    properties.push(set_object_property_values('maximum_characters', $('.form_builder_block form input[name="maximum_characters"]').val()));
    return properties;
}

function set_columns_number_property(properties) {
    properties.push(set_object_property_values('columns_number', $('.form_builder_block form select[name="columns_number"]').val()));
    return properties;
}
function set_section_border_option_property(properties) {
    properties = set_boolean_property_value('section_border_option', '.form_builder_block form input[name="section_border_option"]', properties);
    return properties;
}
function set_section_border_for_property(properties) {
    properties.push(set_object_property_values('section_border_for', $('.form_builder_block form select[name="section_border_for"]').val()));
    return properties;
}
/*** End Section: Methods for properties***/

/*** Start section: Methods for fields ****/
/*
 * Here MUST be created the methods to set the properties by field, the structure is set_properties_for_{field_type}_field
 */
function set_properties_for_checkbox_field(properties) {
    properties = set_checkbox_options_properties(properties);
    properties = set_checkbox_default_property(properties);

    properties.push(set_object_property_values('label_position', $('.form_builder_block form select[name="label_position"]').val()));

    return properties;
}

function set_properties_for_submit_field(properties) {
    properties = set_labels_properties(properties);

    properties = set_boolean_property_value('include_cancel_button', '.form_builder_block form input[name="include_cancel_button"]', properties);

    properties.forEach(function (item) {
        if (item.name === "include_cancel_button" && item.value === "on") {
            properties = set_multilanguage_input_properties(properties, 'cancel-label-');
            properties.push(set_object_property_values('custom_cancel_url', $('.form_builder_block form input[name="custom_cancel_url"]').val()));
        }
    });

    properties = set_multilanguage_input_properties(properties, 'addrecord-label-');
    return properties;
}

function set_properties_for_currency_field(properties) {
    properties = set_place_holder_property(properties);
    properties = set_default_value_property(properties);
    properties = set_minimum_value_property(properties);
    properties = set_maximum_value_property(properties);

    properties.push(set_object_property_values('currency_type', $('.form_builder_block form select[name="currency_type"]').val()));
    properties.push(set_object_property_values('decimal_mark', $('.form_builder_block form select[name="decimal_mark"]').val()));

    return properties;
}

function set_properties_for_datetime_field(properties) {
    properties = set_default_value_property(properties);

    properties.push(set_object_property_values('minimum_age', $('.form_builder_block form input[name="minimum_age"]').val()));

    properties = set_boolean_property_value('field_allow_time', '.form_builder_block form input[name="field_allow_time"]', properties);
    properties = set_boolean_property_value('default_datetime', '.form_builder_block form input[name="default_datetime"]', properties);
    properties = set_boolean_property_value('hide_placeholder', '.form_builder_block form input[name="hide_placeholder"]', properties);
    properties = set_boolean_property_value('field_allow_time', '.form_builder_block form input[name="field_allow_time"]', properties);
    properties = set_boolean_property_value('only_future', '.form_builder_block form input[name="only_future"]', properties);
    properties = set_boolean_property_value('only_past', '.form_builder_block form input[name="only_past"]', properties);

    properties.push(set_object_property_values('max_days_in_future', $('.form_builder_block form input[name="max_days_in_future"]').val()));
    properties.push(set_object_property_values('max_days_in_past', $('.form_builder_block form input[name="max_days_in_past"]').val()));

    properties = set_boolean_property_value('depends_another_date', '.form_builder_block form input[name="depends_another_date"]', properties);

    properties.push(set_object_property_values('validator_date_field', $('.form_builder_block form select[name="validator_date_field"]').val()));
    properties.push(set_object_property_values('rule_to_validate', $('.form_builder_block form select[name="rule_to_validate"]').val()));

    properties = set_boolean_property_value('allow_current_date', '.form_builder_block form input[name="allow_current_date"]', properties);

    return properties;
}

function set_properties_for_email_field(properties) {
    properties = set_place_holder_property(properties);
    properties = set_default_value_property(properties);

    properties = set_boolean_property_value('field_validate', '.form_builder_block form input[name="field_validate"]', properties);

    return properties;
}

function set_properties_for_file_field(properties) {
    properties = set_boolean_property_value('private_file', '.form_builder_block form input[name="private_file"]', properties);
    properties = set_boolean_property_value('file_image', '.form_builder_block form input[name="file_image"]', properties);
    properties.push(set_object_property_values('file_image_width', $('.form_builder_block form input[name="file_image_width"]').val()));
    properties.push(set_object_property_values('file_image_height', $('.form_builder_block form input[name="file_image_height"]').val()));
    properties = set_boolean_property_value('save_in_salesforce', '.form_builder_block form input[name="save_in_salesforce"]', properties);
    properties = set_boolean_property_value('multiple_files', '.form_builder_block form input[name="multiple_files"]', properties);
    properties.push(set_object_property_values('salesforce_library', $('.form_builder_block form select[name="salesforce_library"]').val()));
    properties.push(set_object_property_values('sf_record_to_relate', $('.form_builder_block form input[name="sf_record_to_relate"]').val()));

    properties = set_boolean_property_value('related_files', '.form_builder_block form input[name="related_files"]', properties);

    properties.push(set_object_property_values('extensions', $('.form_builder_block form input[name="extensions"]').val()));

    return properties;
}

function set_properties_for_hidden_field(properties) {

    properties = set_default_value_property(properties);
    properties = set_place_holder_property(properties);
    properties = set_salesforce_mapping_properties(properties);

    return properties;
}

function set_properties_for_number_field(properties) {
    properties = set_place_holder_property(properties);
    properties = set_default_value_property(properties);
    properties = set_minimum_value_property(properties);
    properties = set_maximum_value_property(properties);

    properties = set_boolean_property_value('show_format', '.form_builder_block form input[name="show_format"]', properties);
    properties.push(set_object_property_values('step_value', $('.form_builder_block form input[name="step_value"]').val()));
    let displayAs = $('.form_builder_block form select[name="display_as"]').val();
    properties.push(set_object_property_values('decimal_places', $('.form_builder_block form input[name="decimal_places"]').val()));
    properties.push(set_object_property_values('display_as', displayAs));
    properties.push(set_object_property_values('decimal_mark', $('.form_builder_block form select[name="decimal_mark"]').val()));
    if (displayAs == "2" || displayAs == "3" || displayAs == "4") {
        //Intensity rate or scale rate, set values related to this property with this value
        properties = set_multilanguage_input_properties(properties, 'top_minimum_label-');
        properties = set_multilanguage_input_properties(properties, 'top_maximum_label-');

        properties = set_scale_color_property(properties);
    }
    return properties;
}

function set_properties_for_percent_field(properties) {

    properties = set_place_holder_property(properties);
    properties = set_default_value_property(properties);

    properties.push(set_object_property_values('decimal_mark', $('.form_builder_block form select[name="decimal_mark"]').val()));

    return properties;
}

function set_soql_query_picklist(properties) {
    properties.push(set_object_property_values('soql_query_options', $('.form_builder_block form textarea[name="soql_query_options"]').val()));
    return properties;
}

function set_field_id_picklist(properties) {
    properties.push(set_object_property_values('soql_query_field_id', $('.form_builder_block form input[name="soql_query_field_id"]').val()));
    return properties;
}

function set_field_label_picklist(properties) {
    properties.push(set_object_property_values('soql_query_field_label', $('.form_builder_block form input[name="soql_query_field_label"]').val()));
    return properties;
}

function set_properties_for_select_simple_field(properties) {
    /*properties = set_pull_values_from_sf_property(properties);*/
    //properties = set_from_sf_listview_property(properties);
    properties = set_properties_for_option_from_sf(properties);
    properties = set_soql_query_picklist(properties);
    properties = set_field_id_picklist(properties);
    properties = set_field_label_picklist(properties);
    properties = set_sf_listview_object_property(properties);
    properties = set_listview_property(properties);
    properties = set_auto_suggest_property(properties);
    properties = set_paginate_options_property(properties);
    properties = set_is_label_different_property(properties);
    properties = set_dropdown_options_property(properties);
    properties = set_dropdown_label_options_property(properties);
    properties = set_load_options_from_list_view_properties(properties);
    properties = set_number_of_columns_checkbox_properties(properties);
    properties = set_default_value_for_picklist(properties);

    let displayPicklistMode = $('.form_builder_block form select[name="display_picklist_mode"]').val();

    properties.push(set_object_property_values('display_picklist_mode', displayPicklistMode));

    if (displayPicklistMode == "1" || displayPicklistMode == "2" || displayPicklistMode == "6") {
        //Intensity rate or scale rate, set values related to this property with this value
        properties = set_multilanguage_input_properties(properties, 'top_minimum_label-');
        properties = set_multilanguage_input_properties(properties, 'top_maximum_label-');

        properties = set_scale_color_property(properties);
    } else if (displayPicklistMode == "3") {
        properties = set_boolean_property_value('display_inline_inputs', '.form_builder_block form input[name="display_inline_inputs"]', properties);
    } else if (displayPicklistMode == "4") {
        properties = set_multilanguage_input_properties(properties, 'text_to_check-');
    }

    return properties;
}


function set_properties_for_select_multiple_field(properties) {
    /*properties = set_pull_values_from_sf_property(properties);*/
    //properties = set_from_sf_listview_property(properties);
    properties = set_sf_listview_object_property(properties);
    properties = set_listview_property(properties);
    properties = set_auto_suggest_property(properties);
    properties = set_paginate_options_property(properties);
    properties = set_is_label_different_property(properties);
    properties = set_dropdown_options_property(properties);
    properties = set_dropdown_label_options_property(properties);
    properties = set_load_options_from_list_view_properties(properties);
    properties = set_number_of_columns_checkbox_properties(properties);
    properties = set_default_value_for_picklist(properties);
    properties = set_properties_for_option_from_sf(properties);
    properties = set_soql_query_picklist(properties);
    properties = set_field_id_picklist(properties);
    properties = set_field_label_picklist(properties);

    properties.push(set_object_property_values('display_as_multiselect', $('.form_builder_block form select[name="display_as_multiselect"]').val()));
    properties.push(set_object_property_values('min_number_options', $('.form_builder_block form input[name="min_number_options"]').val()));
    properties.push(set_object_property_values('max_number_options', $('.form_builder_block form input[name="max_number_options"]').val()));

    return properties;
}

function set_properties_for_phone_field(properties) {

    properties = set_align_label_property(properties);
    properties = set_place_holder_property(properties);
    properties = set_minimum_characters_property(properties);
    properties = set_default_value_property(properties);

    return properties;
}

function set_properties_for_textbox_field(properties) {

    properties = set_align_label_property(properties);
    properties = set_encrypted_property(properties);
    properties = set_minimum_characters_property(properties);
    properties = set_maximum_characters_property(properties);
    properties = set_place_holder_property(properties);
    properties = set_default_value_property(properties);

    properties = set_boolean_property_value('field_validate_confirm_text', '.form_builder_block form input[name="field_validate_confirm_text"]', properties);
    return properties;
}

function set_properties_for_gpttext_field(properties) {
    properties = set_chat_gpt_prompt_property(properties);
    properties = set_chat_gpt_text_area_mode_property(properties);
    properties = set_chat_gpt_allow_enter_complete_prompt_property(properties);
    properties = set_chat_gpt_allow_multiple_pre_define_prompts_property(properties);
    properties = set_chat_gpt_prompt_labels_options_property(properties);
    properties = set_chat_gpt_prompt_values_options_property(properties);
    properties = set_chat_gpt_by_ia_property(properties);
    properties = set_labels_gptbtn_properties(properties);
    properties = set_boolean_property_value('rich_text', '.form_builder_block form input[name="rich_text"]', properties);
    return properties;
}
function set_properties_for_textarea_field(properties) {

    properties = set_align_label_property(properties);
    properties = set_maximum_characters_property(properties);
    properties = set_place_holder_property(properties);
    properties = set_default_value_property(properties);
    properties = set_boolean_property_value('use_mentions', '.form_builder_block form input[name="mentions_textarea"]', properties);
    properties.push(set_object_property_values('list_view_salesforce_object', $('.form_builder_block form select[name="objects_mentions"]').val()));
    properties.push(set_object_property_values('listview', $('.form_builder_block form select[name="listviews_mentions"]').val()));
    properties = set_load_mention_from_list_view_properties(properties);
    properties.push(set_object_property_values('rows', $('.form_builder_block form input[name="rows"]').val()));
    properties.push(set_object_property_values('field_mentions', $('.form_builder_block form select[name="field_mentions"]').val()));

    properties = set_boolean_property_value('rich_text', '.form_builder_block form input[name="rich_text"]', properties);

    return properties;
}

function set_properties_for_url_field(properties) {

    properties = set_align_label_property(properties);
    properties = set_place_holder_property(properties);

    return properties;
}

function set_properties_for_calculate_field(properties) {

    properties = set_align_label_property(properties);
    properties = set_encrypted_property(properties);

    properties = set_maximum_value_property(properties);
    properties = set_minimum_value_property(properties);
    properties.push(set_object_property_values('calculate_items', $('.form_builder_block form input[name="calculate_items"]').val()));
    properties.push(set_object_property_values('field_maximum_value', $('.form_builder_block form select[name="field_maximum_value"]').val()));
    properties.push(set_object_property_values('field_minimum_value', $('.form_builder_block form select[name="field_minimum_value"]').val()));
    properties = set_boolean_property_value('is_maximum_value_of_another_field', '.form_builder_block form input[name="is_maximum_value_of_another_field"]', properties);
    properties = set_boolean_property_value('is_minimum_value_of_another_field', '.form_builder_block form input[name="is_minimum_value_of_another_field"]', properties);
    properties = set_boolean_property_value('is_include_non_visible_fields', '.form_builder_block form input[name="is_include_non_visible_fields"]', properties);
    properties = set_boolean_property_value('show_format', '.form_builder_block form input[name="show_format"]', properties);
    return properties;
}

function set_properties_for_description_field(properties) {

    properties = set_labels_properties(properties);
    properties = set_multilanguage_textarea_properties(properties, 'label-textarea-');
    properties = set_max_height_property(properties);
    return properties;
}

function set_properties_for_section_field(properties) {

    properties = set_labels_properties(properties);
    properties = set_columns_number_property(properties);
    properties = set_section_border_option_property(properties);
    properties = set_section_border_for_property(properties);
    properties = set_is_hidden_label_property(properties);
    


    return properties;
}

function set_properties_for_paymentcomponent_field(properties) {
    properties = set_multilanguage_input_properties(properties, 'field-text-');

    properties.push(set_object_property_values('pc-payment-process', $('.form_builder_block form select[name="pc-payment-process"]').val()));
    properties.push(set_object_property_values('pc-payment-currency', $('.form_builder_block form select[name="pc-payment-currency"]').val()));

    properties.push(set_object_property_values('pc-payment-transaction-fee-type-fixed-amount', $('.form_builder_block form input[name="pc-payment-transaction-fee-type-fixed-amount"]').val()));
    properties.push(set_object_property_values('pc-payment-transaction-fee-type-fixed-percent', $('.form_builder_block form input[name="pc-payment-transaction-fee-type-fixed-percent"]').val()));

    properties.push(set_object_property_values('pc-payment-transaction-fee-type', $('.form_builder_block form select[name="pc-payment-transaction-fee-type"]').val()));
    properties.push(set_object_property_values('sf-get-salesforce-amount-field', $('.form_builder_block form select[name="sf-get-salesforce-amount-field"]').val()));
    properties.push(set_object_property_values('pc-paypal-mode', $('.form_builder_block form select[name="pc-paypal-mode"]').val()));

    properties = set_boolean_property_value('cp-allow-skip-donation', '.form_builder_block form input[name="cp-allow-skip-donation"]', properties);
    properties = set_boolean_property_value('cp-is-recurring-billing', '.form_builder_block form input[name="cp-is-recurring-billing"]', properties);
    properties = set_boolean_property_value('cp-inclue-processor-transaction-fee', '.form_builder_block form input[name="cp-inclue-processor-transaction-fee"]', properties);
    properties = set_boolean_property_value('cp-show-quantity-in-form', '.form_builder_block form input[name="cp-show-quantity-in-form"]', properties);
    properties = set_boolean_property_value('cp-show-fee-in-form', '.form_builder_block form input[name="cp-show-fee-in-form"]', properties);
    properties = set_boolean_property_value('cp-display-frequencies-in-form', '.form_builder_block form input[name="cp-display-frequencies-in-form"]', properties);
    properties.push(set_object_property_values('cp-frequencies-to-display', $('.form_builder_block form select[name="cp-frequencies-to-display"]').val()));
    properties.push(set_object_property_values('pc-payment-recurring-billing-interval', $('.form_builder_block form select[name="pc-payment-recurring-billing-interval"]').val()));
    properties.push(set_object_property_values('pc-payment-recurring-billing-interval-count', $('.form_builder_block form select[name="pc-payment-recurring-billing-interval-count"]').val()));
    properties = set_boolean_property_value('cp-show-bank-payment', '.form_builder_block form input[name="cp-show-bank-payment"]', properties);
    properties = set_boolean_property_value('pc-payment-btn-label', '.form_builder_block form input[name="pc-payment-btn-label"]', properties);
    properties = set_boolean_property_value('pc-payment-hide-pay-amounts', '.form_builder_block form input[name="pc-payment-hide-pay-amounts"]', properties);
    properties = set_boolean_property_value('pc-payment-hide-pay-with', '.form_builder_block form input[name="pc-payment-hide-pay-with"]', properties);

    properties.push(set_object_property_values('payment-component-alignment', $('.form_builder_block form select[name="payment-component-alignment"]').val()));
    properties.push(set_object_property_values('donation-amount-json', $('.form_builder_block form input[name="donation-amount-json"]').val()));

    properties = set_boolean_property_value('cp-display-amount-vertical', '.form_builder_block form input[name="cp-display-amount-vertical"]', properties);
    properties = set_boolean_property_value('cp-hide-title', '.form_builder_block form input[name="cp-hide-title"]', properties);
    properties = set_boolean_property_value('cp-allow-select-multiple-amount', '.form_builder_block form input[name="cp-allow-select-multiple-amount"]', properties);
    properties = set_boolean_property_value('cp-allow-other', '.form_builder_block form input[name="cp-allow-other"]', properties);
    properties = set_boolean_property_value('cp-allow-another-additional-amount', '.form_builder_block form input[name="cp-allow-another-additional-amount"]', properties);
    properties = set_boolean_property_value('pc-payment-get-salesforce-amount', '.form_builder_block form input[name="pc-payment-get-salesforce-amount"]', properties);
    properties = set_boolean_property_value('cp-display-add-remove-btn', '.form_builder_block form input[name="cp-display-add-remove-btn"]', properties);
    properties = set_boolean_property_value('do_not_save_field_to_database', '.form_builder_block form input[name="do_not_save_field_to_database"]', properties);
    properties = set_boolean_property_value('include_signature_transaction_info', '.form_builder_block form input[name="include_signature_transaction_info"]', properties);

    properties.push(set_object_property_values('prod-paypal-client-id', $('.form_builder_block form input[name="prod-paypal-client-id"]').val()));
    properties.push(set_object_property_values('prod-paypal-secret-id', $('.form_builder_block form input[name="prod-paypal-secret-id"]').val()));
    properties.push(set_object_property_values('sandbox-paypal-client-id', $('.form_builder_block form input[name="sandbox-paypal-client-id"]').val()));
    properties.push(set_object_property_values('sandbox-paypal-secret-id', $('.form_builder_block form input[name="sandbox-paypal-secret-id"]').val()));

    properties.push(set_object_property_values('sf-label-pc', $('.form_builder_block form select[name="sf-label-pc"]').val()));
    properties.push(set_object_property_values('sf-amount-pc', $('.form_builder_block form select[name="sf-amount-pc"]').val()));
    properties.push(set_object_property_values('sf-transtaction-id', $('.form_builder_block form select[name="sf-transtaction-id"]').val()));
    properties.push(set_object_property_values('sf-transtaction-status', $('.form_builder_block form select[name="sf-transtaction-status"]').val()));
    properties.push(set_object_property_values('sf-transtaction-payment-method', $('.form_builder_block form select[name="sf-transtaction-payment-method"]').val()));
    properties.push(set_object_property_values('sf-transtaction-payment-billing-name', $('.form_builder_block form select[name="sf-transtaction-payment-billing-name"]').val()));
    properties.push(set_object_property_values('sf-transtaction-payment-subscription-info', $('.form_builder_block form select[name="sf-transtaction-payment-subscription-info"]').val()));
    properties.push(set_object_property_values('sf-total-transaction-fee', $('.form_builder_block form select[name="sf-total-transaction-fee"]').val()));

    return properties;
}

function set_properties_for_addresscomponent_field(properties) {

    properties = set_labels_properties(properties);
    properties = set_align_label_property(properties);
    properties = set_columns_number_property(properties);
    properties = set_section_border_option_property(properties);
    properties = set_section_border_for_property(properties);
    properties = set_is_hidden_label_property(properties);

    properties = set_boolean_property_value('addresscomponent_use_user_location', '.form_builder_block form input[name="addresscomponent_use_user_location"]', properties);
    properties = set_boolean_property_value('addresscomponent_address_verification', '.form_builder_block form input[name="addresscomponent_address_verification"]', properties);
    properties = set_boolean_property_value('addresscomponent_autocomplete', '.form_builder_block form input[name="addresscomponent_autocomplete"]', properties);

    return properties;
}

function set_properties_for_signature_field(properties) {
    properties = set_align_label_property(properties);
    properties = set_encrypted_property(properties);

    return properties;
}

function set_properties_for_formula_field(properties) {
    properties = set_align_label_property(properties);

    return properties;
}
/***  End section for methods for field***/

function add_properties_by_field_type(type_field) {

    if (form_builder_save_field_new_approach === false) {
        return $('.form_builder_block form').serializeArray();
    }else {
        var properties = new Array();

        properties = set_common_properties(properties, type_field);

        //these properties must be added only if the field is not submit,hidden, description, payment component, section address compopnent
        if (type_field !== "submit" && type_field !== "hidden" && type_field !== "description" && type_field !== "paymentcomponent" && type_field !== "section" && type_field !== "addresscomponent" )
            properties = set_almost_common_properties(properties);

        if (type_field == "checkbox") {
            properties = set_properties_for_checkbox_field(properties);

        } else if (type_field == "submit") {
            properties = set_properties_for_submit_field(properties);
        } else if (type_field == "currency") {
            properties = set_properties_for_currency_field(properties);

        } else if (type_field == "datetime") {
            properties = set_properties_for_datetime_field(properties);

        } else if (type_field == "email") {
            properties = set_properties_for_email_field(properties);

        } else if (type_field == "file") {
            properties = set_properties_for_file_field(properties);

        } else if (type_field == "hidden") {
            properties = set_properties_for_hidden_field(properties);

        } else if (type_field == "number") {
            properties = set_properties_for_number_field(properties);

        } else if (type_field == "percent") {
            properties = set_properties_for_percent_field(properties);

        } else if (type_field == "dropdown" || type_field == "radio") {
            properties = set_properties_for_select_simple_field(properties);

        } else if (type_field == "multiselect") {
            properties = set_properties_for_select_multiple_field(properties);

        } else if (type_field == "phone") {
            properties = set_properties_for_phone_field(properties);

        } else if (type_field == "textbox") {
            properties = set_properties_for_textbox_field(properties);

        } else if (type_field == "textarea") {
            properties = set_properties_for_textarea_field(properties);

        } else if (type_field == "url") {
            properties = set_properties_for_url_field(properties);

        } else if (type_field == "calculate") {
            properties = set_properties_for_calculate_field(properties);

        } else if (type_field == "description") {
            properties = set_properties_for_description_field(properties);

        } else if (type_field == "section") {
            properties = set_properties_for_section_field(properties);

        } else if (type_field == "paymentcomponent") {
            properties = set_properties_for_paymentcomponent_field(properties);

        } else if (type_field == "addresscomponent") {
            properties = set_properties_for_addresscomponent_field(properties);

        } else if (type_field == "signature") {
            properties = set_properties_for_signature_field(properties);
        } else if (type_field == "formula") {
            properties = set_properties_for_formula_field(properties);
        } else if (type_field == "gpttext") {
            properties = set_properties_for_gpttext_field(properties);
        } else {
           // properties = $('.form_builder_block form').serializeArray();
        }

        return properties;
    }
}

function SaveAndEditFieldType() {
    if (!is_backend_page()) return;
    $(document).on('click', '.form_builder_block form button.save_field', async function () {
        var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
        var jsonData = GetLocalFormBuilderStorage();
        var elementId = $('.form_builder_block input[name="element-id"]').val();
        var type_field = "";
        var order = 1;
        let verifyUseOfMultiLabelExistence = false;

        if (elementId == 0) {
            type_field = 'submit';
            order = ($('.form_builder_block .submit-row').data('order'))?$('.form_builder_block .submit-row').data('order'):1;
        } else {
            var ElementIdSubmit = $('.form_builder_block .submit-row').data('element-id');
            if (ElementIdSubmit == elementId) {
                type_field = 'submit';
            } else {
                type_field = $(".form_builder_block select[name='type_field']").val();
                order = $('.form_builder_block .field-row.active').attr('order');
            }
        }

        if (type_field == 'datetime') {
            
            if ($('.form_builder_block input[name="depends_another_date"]:checked').length === 1 &&
                $('.form_builder_block select[name="validator_date_field"]').val() == '') {

                Swal.fire({
                    title: window.translation.warning,
                    text: window.translation.please_select_a_date_field,
                    icon: 'warning',
                    closeOnConfirm: true
                });
                return false;
            }
        }

        var align_label = $('.form_builder_block select[name="align_label"]').val();

        if (type_field == 'dropdown' || type_field == 'multiselect' || type_field == 'radio') {
            var existsItemInDropdown = 0;
            var equalsNumberInAllLanguages = true;
            var lastLanguageLines = 0;
            var currentLanguageLines = 0;
            var isTheFirst = true;

            // iterate over each textarea
            $('.form_builder_block form .dropdown-options-reloaded textarea').each(function () {
                languageId = $(this).data('language-id');
                currentLanguageLines = 0;

                var currentValue = $.trim($(this).val());

                if (currentValue !== '') {
                    existsItemInDropdown++;
                    var currentLines = currentValue.split(/\r?\n/g);
                    currentLanguageLines = currentLines.length;

                    $(".form_builder_block input[name='options-" + languageId + "']").val(JSON.stringify(currentLines));
                } else {
                    $(".form_builder_block input[name='options-" + languageId + "']").val('');
                }
                if (isTheFirst === false && equalsNumberInAllLanguages === true && currentLanguageLines !== lastLanguageLines) {
                    equalsNumberInAllLanguages = false;
                } else {
                    lastLanguageLines = currentLanguageLines;
                }

                isTheFirst = false;
            });

            let currentValue = $('.form_builder_block form select[name="pull_values_sf_source"]').val();
            if (currentValue == 0) {


                if (existsItemInDropdown === 0) {
                    Swal.fire({
                        title: window.translation.warning,
                        text: window.translation.please_add_option,
                        icon: "warning",
                        closeOnConfirm: true
                    });
                    return false;
                }

                if (equalsNumberInAllLanguages === false) {

                    Swal.fire({
                        title: window.translation.do_you_want_continue,
                        text: window.translation.languages_should_have_equals_options,
                        icon: "warning",
                        closeOnConfirm: true,
                        showCancelButton: true

                    }).then(function (result) {
                        if (result.isConfirmed) {
                            $("#form_changed").val(true);
                            $(".form_builder_block button.save_field").addClass("pending_changes");
                            return false;

                        }
                    });

                }

            }
            else if (currentValue == 1) {
                var valueSFFieldMapping = $(".form_builder_block select[name='salesforce_field']").val();

                if (valueSFFieldMapping === undefined || valueSFFieldMapping === 'none' || valueSFFieldMapping === '') {
                    Swal.fire({
                        title: window.translation.warning,
                        text: window.translation.please_select_field_from_wich_pull_values,
                        icon: 'warning',
                        closeOnConfirm: true
                    });
                    return false;
                }
            } else if (currentValue == 2) {

                var listViewObject = $(".form_builder_block select[name='list_view_salesforce_object']").val();
                var listViewName = $(".form_builder_block select[name='listview']").val();
                if (listViewObject === undefined || listViewObject === '' || listViewObject === null || listViewName === undefined || listViewName === '' || listViewName === null) {
                    Swal.fire({
                        title: window.translation.warning,
                        text: window.translation.select_sfobject_and_listview,
                        icon: 'warning',
                        closeOnConfirm: true
                    });
                    return false;
                } else
                    verifyUseOfMultiLabelExistence = true;
            } else if (currentValue == 3) {
                let soqlQuery = $('.form_builder_block textarea#soql_query_options').val();
                let fieldId = $('.form_builder_block input[name="soql_query_field_id"]').val();
                let fieldLabel = $('.form_builder_block input[name="soql_query_field_label"]').val();

                if (soqlQuery === undefined || soqlQuery === null || soqlQuery === '') {
                    Swal.fire({
                        title: window.translation.warning,
                        text: window.translation.form_from_soql_warning_soql,
                        icon: 'warning',
                        closeOnConfirm: true
                    });
                    return false;
                }

                if (fieldId === undefined || fieldId === null || fieldId === '') {
                    Swal.fire({
                        title: window.translation.warning,
                        text: window.translation.form_from_soql_warning_id,
                        icon: 'warning',
                        closeOnConfirm: true
                    });
                    return false;
                }

                if (fieldLabel === undefined || fieldLabel === null || fieldLabel === '') {
                    Swal.fire({
                        title: window.translation.warning,
                        text: window.translation.form_from_soql_warning_label,
                        icon: 'warning',
                        closeOnConfirm: true
                    });
                    return false;
                }
            }
             
        }

        if (type_field == "file") {
            if ($(".form_builder_block input[name='extension_allowed']:checked").length > 0) {
                var extensions = [];
                $(".form_builder_block input[name='extension_allowed']:checked").each(function () {
                    extensions.push($(this).val());
                });
                $(".form_builder_block input[name='extensions']").val(JSON.stringify(extensions));
            } else {
                $(".form_builder_block input[name='extensions']").val("");
                Swal.fire({
                    title: window.translation.warning,
                    text: window.translation.please_select_extensions,
                    icon: 'warning',
                    closeOnConfirm: true
                });
                return false;
            }
        }

        if (type_field === 'description') {
             $('.form_builder_block  .label-textarea').each(function () {
                var textArea = $(this).find('textarea').first();
                var languageId = textArea.data('language-id');
                var content = '';

                if(CKEDITOR.instances['label-textarea-' + languageId]) {
                    content = CKEDITOR.instances['label-textarea-' + languageId].getData();
                    textArea.text(content);
                    textArea.val(content);
                }
                else {
                    //Reinstance CKEDITOR
                    initialize_ckeditor_from_id('label-textarea-' + languageId);
                }
            });
        }


        if (type_field == "textbox" || type_field == "textarea" ) {

            try
            {
                var maxLength = $("#form-builder-block input[name='maximum_characters']").val();

                if (maxLength === '' || maxLength === null) {

                    var salesForceField = $('.form_builder_block select[name="salesforce_field"]').val();
                    LoadDefaulSFDCtMaxLength(salesForceField);
                }

            } catch (e) {
                console.log('Error calculating the maxlength');
                window.console && console.error(e);
            }
        }

        if (type_field == 'dropdown' || type_field == 'radio') {
            var formSelector = '.form_builder_block';
            var is_label_diferent = $(formSelector).find('input[name="is_label_diferent"]').is(':checked');
            var is_error = false;
            if (is_label_diferent == true) {
                $(formSelector).find('ul#title_tabs li a').each(function () {
                    var item = $(this);
                    var languageId = item.attr('data-language-id');
                    var optionsSelector = 'options-textarea-' + languageId;
                    var labelSelector = 'options-labels-textarea-' + languageId;

                    var optionsValues = $(formSelector).find('textarea[name="' + optionsSelector + '"]').val();
                    var labelValues = $(formSelector).find('textarea[name="' + labelSelector + '"]').val();
                    if ((optionsValues == null || optionsValues == undefined || optionsValues == '') || (labelValues == null || labelValues == undefined || labelValues == '')) {
                        Swal.fire({
                            title: window.translation.warning,
                            text: window.translation.languages_should_have_equals_options,
                            icon: "error",
                            closeOnConfirm: false
                        });
                        is_error = true;
                    } else {
                        var optVal = optionsValues.split('\n');
                        var optLab = labelValues.split('\n');
                        if (optVal.length != optLab.length) {
                            Swal.fire({
                                title: window.translation.warning,
                                text: window.translation.options_message,
                                icon: "error",
                                closeOnConfirm: false
                            });
                            is_error = true;
                        }
                        
                    }
                });
            }

            if (is_error == true) {
                return false;
            }

        }

        if (type_field == 'gpttext') {
            var formSelector = '.form_builder_block';
            var is_allow_multiple_prompts = $(formSelector).find('input[name="chat_gpt_allow_multiple_pre_define_prompts"]').is(':checked');
            var is_error = false;
            if (is_allow_multiple_prompts == true) {
                $(formSelector).find('ul#title_tabs li a').each(function () {
                    var item = $(this);
                    var languageId = item.attr('data-language-id');
                    var optionsSelector = 'prompt-options-values-textarea-' + languageId;
                    var labelSelector = 'prompt-options-labels-textarea-' + languageId;
                    var optionsValues = $(formSelector).find('textarea[name="' + optionsSelector + '"]').val();
                    var labelValues = $(formSelector).find('textarea[name="' + labelSelector + '"]').val();
                    if (optionsValues && labelValues) {
                        var optVal = optionsValues.split('\n');
                        var optLab = labelValues.split('\n');
                        if (optVal.length != optLab.length) {
                            Swal.fire({
                                title: window.translation.warning,
                                text: window.translation.options_message,
                                icon: "error",
                                closeOnConfirm: false
                            });
                            is_error = true;
                        }
                    }
                });
            }
            if (is_error == true) {
                return false;
            }
        }
        if (type_field == 'paymentcomponent') {
            var formSelector = '.form_builder_block';
            var cp_is_recurring_billing = $(formSelector).find('input[name="cp-is-recurring-billing"]').is(':checked');
            var cp_display_frequencies_in_form = $(formSelector).find('input[name="cp-display-frequencies-in-form"]').is(':checked');
            var pc_payment_recurring_billing_interval = $(formSelector).find('select[name="pc-payment-recurring-billing-interval"]').val();
            if(cp_is_recurring_billing && !cp_display_frequencies_in_form && (pc_payment_recurring_billing_interval == null || pc_payment_recurring_billing_interval == '')){
                Swal.fire({
                    title: window.translation.warning,
                    text: window.translation.please_select_one_option_for_frequency,
                    icon: "warning",
                    closeOnConfirm: true
                });
                return false;
            }
            if (!validate_fields_in_payment_component(formSelector)) {
                return false;
            }
            review_llist_amounts(formSelector);
        }

        if (type_field == 'hidden') {
            let addressComponentType = $('div.row-fields.container-form').find("[data-element-id='" + elementId + "']").data('address-component');
            if (addressComponentType === 'latitude') {
                $('.form_builder_block form  input[name="placeholder_field"]').val('Latitude');
            } else if (addressComponentType === 'longitude') {
                $('.form_builder_block form  input[name="placeholder_field"]').val('Longitude');
            } else
                $('.form_builder_block form  input[name="placeholder_field"]').val('');
        }

        if (type_field=='gpttext') {
            let is_openai_key = $('.form_builder_block form  input[name="is_openai_key"]').val();
            let is_azure_key = $('.form_builder_block form  input[name="is_azure_key"]').val();
            let chat_gpt_by_ia = $('.form_builder_block form  select[name="chat_gpt_by_ia"]').val();
            let error_message = (chat_gpt_by_ia == 0)?'Please add API settings for OpenAI in SITEWIDE SETTINGS':'Please add API settings for Azure OpenAI Service in SITEWIDE SETTINGS';
            if((chat_gpt_by_ia == 0 && is_openai_key === "false") || (chat_gpt_by_ia == 1 && is_azure_key === "false")){
                Swal.fire({
                    title: window.translation.warning,
                    text: error_message,
                    icon: 'warning',
                    closeOnConfirm: true
                });
                return false;
            }
        }

        var syncFormWithSF = $(".form_builder_block input[name='save_data_salesforce']:checked").length > 0;
        var selectedSalesforceField = $(".form_builder_block select[name='salesforce_field']").val();
        var selectedSFRelField = $(".form_builder_block select[name='salesforce_rel_field']").val();
        selectedSFRelField = selectedSFRelField == '' ? undefined : selectedSFRelField;
        var referenceField = $(".form_builder_block select[name='salesforce_field'] option:selected").data('reference-object');
        var selectedSalesforceFieldObject = null;
        if ($(".form_builder_block select[name='salesforce_field'] option:selected").data('object') != undefined) {
            selectedSalesforceFieldObject = $(".form_builder_block select[name='salesforce_field'] option:selected").data('object');
        }
        var isFieldMappingToSalesforce = selectedSalesforceField != 'none' && selectedSalesforceField !== undefined && selectedSalesforceField !== '' && selectedSalesforceField !== null;

        // Creating object to save in localstorage
        JsonObject = new Object();
        JsonObject.elementId = elementId;
        JsonObject.typeField = type_field;
        JsonObject.delete = false;
        JsonObject.weight = order;
        JsonObject.ruleId = 0;
        JsonObject.fieldId = elementId;

        JsonObject.properties = add_properties_by_field_type(type_field);

        var applyChanges = true;

        if (jsonData != "" && jsonData != null) {
            var json = JSON.parse(jsonData);
            var band = false;
            json.forEach(function (item) {
                var orderItem = $('.form_builder_block .field-row[data-element-id="' + parseInt(item.elementId) + '"]').attr('data-order');
                
                if (parseInt(item.elementId) === parseInt(JsonObject.elementId)) {
                    item.typeField = JsonObject.typeField;
                    item.delete = JsonObject.delete;
                    if (verifyUseOfMultiLabelExistence == true) {
                        let originalSFViewLabelFieldProperty = item.properties.find(it => it.name === "sf_listview_label_field");
                        let newSFViewLabelFieldProperty = JsonObject.properties.find(it => it.name === "sf_listview_label_field");
                        if (originalSFViewLabelFieldProperty && newSFViewLabelFieldProperty) {
                            if (originalSFViewLabelFieldProperty.value && originalSFViewLabelFieldProperty.value !== '' && originalSFViewLabelFieldProperty.value.indexOf(',') > -1) {
                                let oldValues = originalSFViewLabelFieldProperty.value.split(',');
                                oldValues[0] = newSFViewLabelFieldProperty.value;

                                newSFViewLabelFieldProperty.value = oldValues.join(",");
                            }
                        }
                    }

                    item.properties = JsonObject.properties;
                    item.weight = (orderItem) ? parseInt(orderItem) : 1;
                    band = true;
                } else if (syncFormWithSF && isFieldMappingToSalesforce) {
                    var selectedSalesforceFieldIsRelation = referenceField != '' && referenceField != undefined && referenceField != 'undefined';
                    //validate if any other form field is mapping to the same salesforce field
                    var existeElement = item.properties.find(function (obj) { return obj.name === 'salesforce_field' && obj.value === selectedSalesforceField });
                    var existeElementObject = item.properties.find(function (obj) { return obj.name === 'related_field_object' && obj.value === selectedSalesforceFieldObject });
                    var valueObjectText = $("#form-builder-block select[name='salesforce_object']").val() == undefined ? '' : $("#form-builder-block select[name='salesforce_object']").val();
                    var existsReference = item.properties.find(function (obj) { return obj.name === 'salesforce_rel_field' && obj.value === selectedSFRelField });

                    var isBothObject = valueObjectText.indexOf('Both') == 0;
                    
                    if ((existeElement != undefined && existeElement !== null && !selectedSalesforceFieldIsRelation
                        || existeElement != undefined && existeElement !== null && existsReference != undefined && existsReference !== null && selectedSalesforceFieldIsRelation
                    )
                        &&                        
                        (isBothObject && existeElementObject != undefined && existeElementObject !== null || !isBothObject)) {

                        var currentLangId = $('body').data('lang-index');
                        //to show the label using the currentlanguage

                        let existElementName = '';

                        if (item.typeField == "hidden") {
                            let hiddenElement = $('div[data-element-id="' + item.elementId + '"]');
                            if (hiddenElement != undefined && hiddenElement.length > 0) {
                                existElementName = hiddenElement.data("hidden-name");
                            }
                        }
                        else {
                            let labelName = item.properties.find(function (obj) { return obj.name === 'label-' + currentLangId });
                            if (labelName !== undefined && labelName !== null)
                                existElementName = labelName.value;
                        }

                        var jsonSalesforceFieldsValue = localStorage.getItem("salesforce-fields");
                        var jsonSalesforceFields = null;
                        var salesforceFieldInfo = null;

                        if (jsonSalesforceFieldsValue !== undefined && jsonSalesforceFieldsValue !== '' && jsonSalesforceFieldsValue !== null) {
                            jsonSalesforceFields = JSON.parse(jsonSalesforceFieldsValue);
                            salesforceFieldInfo = jsonSalesforceFields.fields.find(function (obj) { return obj.apiName === selectedSalesforceField });
                        }

                        if (salesforceFieldInfo !== undefined && salesforceFieldInfo !== null)
                            selectedSalesforceField = salesforceFieldInfo.label;
                        if (selectedSalesforceFieldIsRelation) {
                            selectedSalesforceField = $('.form_builder_block  select[name="salesforce_rel_field"] option:selected').text() + " [" + selectedSalesforceField+"]";
                        }

                        var errorMessageDuplicatefield = window.translation.duplicate_salesforce_mapping.replace("#formField#", existElementName).replace("#salesforceField#",selectedSalesforceField);

                        Swal.fire({
                            title: window.translation.warning,
                            text: errorMessageDuplicatefield,
                            icon: 'warning',
                            closeOnConfirm: true
                        });
                        applyChanges = false;
                        return false;
                    }

                }

                item.weight = (orderItem) ? parseInt(orderItem) : 1;

                if(item.typeField != 'submit' && item.typeField != 'paymentcomponent'){
                    let SalesforceObject = "";
                    let SalesforceObjectField = "";
                    let get_save_data_salesforce = "";
                     for (var i = 0; i < item.properties.length; i++) {
                        if (item.properties[i].name === 'salesforce_object_field') {
                            SalesforceObject = item.properties[i].value;
                        }
                        if (item.properties[i].name === 'salesforce_field') {
                            SalesforceObjectField = item.properties[i].value;
                        }
                        if (item.properties[i].name === 'save_data_salesforce') {
                            get_save_data_salesforce = item.properties[i].value;
                        }
                    }
                    if (get_save_data_salesforce === 'on' && SalesforceObject != "" && SalesforceObjectField != "" && SalesforceObject) {
                        $('.form_builder_block .field-row[data-element-id="' + parseInt(item.elementId) + '"] span.salesforce-mapped').remove();

                        if (SalesforceObjectField !== "none" && SalesforceObject !== "none")
                            $('.form_builder_block .field-row[data-element-id="' + parseInt(item.elementId) + '"]').append('<span class="salesforce-mapped">Mapped to:'+SalesforceObject+'.'+SalesforceObjectField+'</span>');
                    }
                }
            });

            if (applyChanges === true) {
                if (band == false) {
                    json.push(JsonObject);
                    setDataToSessionStore(json, formTokenStore);
                    //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(json));
                } else {
                    setDataToSessionStore(json, formTokenStore);
                    //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(json));
                }

            }

        } else {
            jsonData = [];
            jsonData.push(JsonObject);

            setDataToSessionStore(jsonData, formTokenStore);

            //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(jsonData));
        }

        if (applyChanges === true) {
            // Method to update markup after save. Move this after the other validation
            await updateFormBuilderPreview(type_field, align_label, true);

            $("#form_changed").val(false);
            $(".form_builder_block button.save_field").removeClass("pending_changes");
            finishLoading();
        }

        EnableorDisableFilterLogicFieldInSalesforceSourceListview();
        showMessageInSoqlSource();
    });
    $(document).on('change', '.form_builder_block form select[name="copy_to_hidden"]', async function () {
        var idfield =  parseInt($(this).val().replace(/[^\d]/g, ''));
        $('.form_builder_block .field-row.active').attr('data-copy-to-hidden', idfield);
        recalculatecopytolabel();
    });
}

function LoadDefaulSFDCtMaxLength(apiFieldName) {

    try
    {
        if (apiFieldName != '' && apiFieldName != null && apiFieldName != 'none') {

            var jsonSalesforceFieldsValue = localStorage.getItem("salesforce-fields");
            var jsonSalesforceFields = JSON.parse(jsonSalesforceFieldsValue);
            var fieldsSFDC = jsonSalesforceFields.fields;

            var counterIteration = 0;
            var maxSFDCFields = fieldsSFDC.length;
            var found = false;
            var specificField;

            do {
                var currentField = fieldsSFDC[counterIteration];
                if (currentField.apiName === apiFieldName) {
                    specificField = currentField;
                    found = true;
                }

                counterIteration++;

            } while (counterIteration < maxSFDCFields && found === false);
            

            if (specificField != undefined) {
                $("#form-builder-block input[name='maximum_characters']").val(specificField.maxLength);
            }
        } else {
            $("#form-builder-block input[name='maximum_characters']").val('');
        }

    }catch (e) {
        console.log('Error calculating the maxlength for the field');
        window.console && console.error(e);
    }

}

async function updateFormBuilderPreview(typeField, align_label, is_save) {
    var default_value = $('.form_builder_block select.default_value_dropdown_simple').val();
    var classAlign = '';
  
    if (align_label === 0 || align_label === '0')
        classAlign = 'label-preview-left';
    if (align_label === 1 || align_label === '1')
        classAlign = 'label-preview-center';
    if (align_label === 2 || align_label === '2')
        classAlign = 'label-preview-right';
    

    $('#form-builder-block').find('input[name="last-type-field-selected"]').val(typeField);
    var blockId = $('#form-builder-block').find('input[name="block_id"]').val();

    var label_preview = $('.form_builder_block .label_field input').first().val();

    if (label_preview === '') {
        label_preview = GetLabelField(typeField);
    }
    if (typeField === 'submit' || typeField === 'hidden' ) {
        var active_field = $('.form_builder_block .submit-row.active');
        var active_field_row = $('.form_builder_block .form-preview .field-row.active');

        if (active_field.length > 0) {
            var content = active_field.find(".content");

            var newfield = '<div class="right-full">'
                         + FieldContentPreview(typeField, "")
                + '</div>';

            content.html(newfield);
        }
        else {
            var content = active_field_row.find(".content");            
            var newfield = '<div class="left">'
                + '<label class="label_preview_hidden">' + active_field_row.data('hidden-name')+'</label>'
                        + '</div>'
                        + '<div class="right">'
                             + FieldContentPreview(typeField, "")
                + '</div>';

            content.html(newfield);
            recalculateHiddenNames();
        }
    } else if (typeField === 'section' || typeField === 'addresscomponent') {
        var active_field_row = $('.form_builder_block .form-preview .field-row.active');
        var columnsNum = $('.form_builder_block select[name="columns_number"]').first().val();

        if(columnsNum !== '' && columnsNum !== '1') {
            active_field_row.find('.section-container').first().addClass('columns' + columnsNum);
        }
        var content = active_field_row.find(".content").first();
        var htmlContent = FieldContentPreview(typeField, "");
        content.html(htmlContent);
    } else {
        var active_field = $('.form_builder_block .form-preview .field-row.active');
        if (active_field.length > 0) {
            var content = active_field.find(".content");

            var newfield = '<div class="left">'
                + '<label class="label_preview ' + classAlign+'">' + label_preview + '</label>'
                    + '</div>'
                    + '<div class="right">'
                         + FieldContentPreview(typeField, "")
                    + '</div>';
            if (typeField == 'description') {
                newfield = '<div class="right-full">'
                         + FieldContentPreview(typeField, "")
                    + '</div>';
            }

            // re-initialize multiselects
            $('.form_builder_block .form-preview select[multiple]').multiselect();
            content.empty().append(newfield);

            if (typeField == 'dropdown' || typeField == 'multiselect' || typeField == 'radio') {
                var currentValue = $('.form_builder_block .dropdown-options-reloaded:first textarea').val();
                var options = '';

                if ($.trim(currentValue) !== '') {
                    var currentLines = currentValue.split(/\r?\n/g);
                    options = GenerateOptionsForPreview(currentLines, typeField,false,default_value);
                }
                AssignOptionToPreviewReloaded(options, typeField,default_value);
                if( options === "" && is_save ){
                    var data_language_id = $('#form-builder').find('.tabs-panel.is-active').attr('data-language-id');
                    var default_value_field_name = $('.form_builder_block select.default_value_dropdown_simple').attr('name');
                    var save_data_salesforce = $('#form-builder input[name="save_data_salesforce"]').val();
                    let currentValueSFSource = $('#form-builder select[name="pull_values_sf_source"]').val();
                        
                    var salesforce_object = $('#form-builder select[name="salesforce_object"]').val();
                    var salesforce_field = $('#form-builder select[name="salesforce_field"]').val();
                    var elementid = $('#form-builder .field-row.active').attr('data-element-id');
                    if (save_data_salesforce == 'on' && currentValueSFSource == 1 && salesforce_object!= "" && salesforce_field != ""){
                        var current_default_val = [{'name':default_value_field_name, 'value':default_value, 'language':1 }];

                        current_default_val = JSON.stringify(current_default_val);
                        await generate_html_options_salesforce(elementid, salesforce_object, salesforce_field, current_default_val, blockId);
                    }
                }
            }
            if (typeField == 'datetime') {
                AddTimeToPreview();
            }
        }
    }

    ValidateRequiredField();
    DetectValidateField();
    ValidateifHideLabel();
    DisplayMultiplePreDefinePromptsOptions();
    recalculatecopytolabel();
    EventDisplayOptionsSaveDataIn();

    EnableorDisableFilterLogicFieldInSalesforceSourceListview();
    showMessageInSoqlSource();
}

function SaveOrEditFormBuilder() {
    if (!is_backend_page()) return;
    $(document).on('click', '.form_builder_block .save_form_builder', function () {
        let newCMSFeature = isNewCMSFeature();
        var isArs = ($('.form_builder_block.ars').length > 0) ? true : false;
        var isSPForm = ($('.form_builder_block input[name="sharing_portal_form"]:checked').length > 0) ? true : false;
        let visibleToSelector = 'input[name="form_builder_visible_to"]';
        let visibleToUrlsSelector = 'textarea[name="form_builder_visibility_urls"]';

        if (isNewCMSFeature()) {
            visibleToSelector = 'input[name="visible_to"]';
            visibleToUrlsSelector = 'textarea[name="visibility_urls"]';
        }

        if (isArs === false && !isSPForm && !validate_url_fields_backend('#form-builder-block', visibleToSelector, visibleToUrlsSelector))
            return false;
        //validate title empty if is check show
        var validateTitle = 1;
        $('#form-builder-block .errorEmptyTitle').hide();
        if ($(".form_builder_block input[name='showTitle']:checked").length > 0 ) {
            $(".form_builder_block .title-tabs-content input[type='text'][name*='title-']").each(function (i, obj) {
                var titleForLangActive = $(this).val();
                if (!titleForLangActive || titleForLangActive == null || titleForLangActive == "" || titleForLangActive.length == 0) {
                    validateTitle = 0;
                    $('#form-builder-block .errorEmptyTitle').css('color', 'red');
                    $('#form-builder-block .errorEmptyTitle').show();
                    $("#form-builder-block").scrollTop(300);
                    return false;
                }
            })
        }
        //validate the options selected
        if (validate_form_builder_options() && validateTitle == 1) {
            if ($('#form-builder').valid()) {
                if ($('.form_builder_block .form-preview .field-row:visible').length > 0) {
                    // validating if there are pending changes
                    if ($("#form_changed").val() === "false") {
                        //verifying if the checkbox is checked
                        if ($('#form-builder .settings-builder-form-clone').length > 0) {
                            if ($('#form-builder .settings-builder-form-clone').is(':visible')) {
                                if ($('#form-builder .settings-builder-form-clone input[name="form-include-gallery"]').is(':checked')) {

                                    var elementReveal = 'gallery-select-configuration';
                                    $('#' + elementReveal).find('input[name="modal-source"]').val('form-builder-block');
                                    $('#' + elementReveal).find('a.select-gallery-button').on('click', function () {
                                        var source = $('#' + elementReveal).find('input[name="modal-source"]').val();
                                        if (source != null && source != undefined && source != '') {
                                            var selectedValue = $('#' + elementReveal).find('select[name="form-select-gallery"]').val();
                                            if (selectedValue == 'Select One') {
                                                Swal.fire({
                                                    title: "Error",
                                                    icon: "error",
                                                    text: "Please select a Gallery",
                                                    confirmButtonText: "Ok"
                                                });

                                            } else {
                                                var helpValue = $('#' + elementReveal).find('textarea[name="form-help-text"]').val();

                                                if (helpValue != null && helpValue != undefined && helpValue.trim() != '') {
                                                    $('#' + source).find('input[name="form-select-gallery"]').val(selectedValue);
                                                    $('#' + source).find('input[name="form-help-text"]').val(helpValue);
                                                    $('#' + elementReveal).foundation('close');
                                                    logic_save_form();
                                                } else {
                                                    Swal.fire({
                                                        title: "Error",
                                                        icon: "error",
                                                        text: "Please fill the reason to store into the gallery",
                                                        confirmButtonText: "Ok"
                                                    });

                                                }
                                            }


                                        }
                                    });
                                    $('#' + elementReveal).foundation('open');
                                    $('#' + elementReveal).foundation();

                                } else {
                                    logic_save_form(newCMSFeature);
                                }
                            } else {
                                logic_save_form(newCMSFeature);
                            }
                        } else {
                            logic_save_form(newCMSFeature);
                        }                   
                    } else {
                        Swal.fire({
                            title: window.translation.pending_changes,
                            icon: "warning",
                            text: window.translation.pending_changes_message,
                            confirmButtonText: "Ok"
                        });

                        finishLoading();
                        return false;
                    }
                } else {
                    Swal.fire({
                        title: window.translation.warning,
                        icon: "warning",
                        text: window.translation.add_least_a_field_type,
                        confirmButtonText: "Ok"
                    });

                    finishLoading();
                    return false;
                }
            } 

        } else {
            
            return false;
        }
    });
}

function EventsResetModal() {
    if (!is_backend_page()) return;
    $(document).on('click', '#form-builder-block .close-button', function(event) {
        event.preventDefault();
        var form_id = $('#form-builder-block').find('input[name="form-id"]').val();
        var fields = $('#form-builder-block').find('#row-fields > .field-row').length;
        if(form_id == 0 && fields > 0){
            event.stopImmediatePropagation();
            Swal.fire({
              title: window.translation.warning,
              icon: "warning",
              text: window.translation.unsaved_form_message,
              showCancelButton: true,
              confirmButtonText: "Accept",
              cancelButtonText: "Cancel"
            }).then((result) => {
                if (result.isConfirmed) {
                    $('#form-builder-block').foundation('close');
                    ResetModalFunction();
                }
            });
        }else{
            ResetModalFunction();
        }
    });
    //$(document).on('click', '#form-builder-block .close-button', ResetModalFunction);
    $(document).on('click', '#form-builder-block .close-modal', ResetModalFunction);
}

function ResetModalFunction() {
    if (!is_backend_page()) return;
    var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();

    if (sessionStorage.getItem("json-form-builder-data-" + formTokenStore)) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var builderData = JSON.parse(sessionStorage.getItem("json-form-builder-data-" + formTokenStore));
        var fields = [];

        //Get all rules of builderData
        if(builderData) {
            builderData.forEach(function(field) {
                if(field.fieldId) {
                    fields.push({fieldId:field.fieldId});
                }
            });
        }

        //Delete all rules orphan if exists
        if(fields) {
            $.ajax({
                method: "POST",
                url: urlSite + "ARS/UpdateRulesWithTemporaryFields",
                data: { fields: JSON.stringify(fields) }
            }).done(function (data) {
                var jsonResultInnerUpdate = JSON.parse(data);

                if(jsonResultInnerUpdate.status == 200){
                    $('#ars-vol-reg-workflow').foundation('close');
                }
            });
        }
    }
    // deleting json data of form builder closed
    sessionStorage.removeItem("json-form-builder-data-" + formTokenStore);
    if ($('button.std-add_rule').length > 0 && $('button.std-add_rule').hasClass('event-applied')) {
        $('button.std-add_rule').removeClass('event-applied');
    }
}

async function setFileInputFromUrl($input, fileUrl) {
    fileUrl = (fileUrl.startsWith('https://localhost/'))?fileUrl.replace('https://localhost/', 'https://localhost:44300/'):fileUrl;
    const response = await fetch(fileUrl);
    const blob = await response.blob();
    const fileName = fileUrl.split('=').pop();
    var nameInput = $input.attr('name');
    const fileExtension = fileUrl.split('.').pop();
    const file = new File([blob], fileName, { type: blob.type });
    const dataTransfer = new DataTransfer();
    dataTransfer.items.add(file);
    $input[0].files = dataTransfer.files;
    var buttonToRemove = '<a class="individual-file-remove" data-input="' + nameInput + '" >' + window.translation.clear + '</a>';
    var CurrentFilename = window.translation.file_selected + ' <i >' + fileName + ' ' + buttonToRemove + '</i>';
    $input.closest('.fields-section').find('input[name*=type]').after('<span class="file-upload-name">' + CurrentFilename + '</span>');
    if(fileExtension === 'jpeg'||fileExtension === 'png'||fileExtension === 'bmp'||fileExtension === 'gif'||fileExtension === 'jpg'){
        let idPreview = $input.attr('data-image-preview-field');
        if(!$input.closest('.fields-section').find('.file-upload-preview').length){
            $input.closest('.fields-section').prepend('<div class="file-upload-preview hidden"><img src="#" id="'+idPreview+'" alt="Uploaded image"></div>');
        }
        displayImagePreviewCustom($input, idPreview);
    }else{
        $input.closest('.fields-section').find('.file-upload-preview').addClass('hidden');
    }
}
function displayImagePreviewCustom(input, idPreview) {
    var file = input[0].files[0];
    if (file) {
        var reader = new FileReader();
        reader.onload = function (e) {
            $('#' + idPreview).attr('src', e.target.result);
            $('#' + idPreview).parent('.file-upload-preview').removeClass('hidden');
        }
        reader.readAsDataURL(file);
    }
}

function ReadUrlForImageFileInput(input, idPreview) {
    var fileName = $(input).val();
    var fileExtension = fileName.split('.').pop();
    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            if(fileExtension!='heic' && fileExtension!='ai' && fileExtension!='eps'){
                $('#' + idPreview).attr('src', e.target.result);
                $('#' + idPreview).parent('.file-upload-preview').removeClass('hidden');
            }else{
                $('#' + idPreview).parent('.file-upload-preview').addClass('hidden');
            }
        }

        reader.readAsDataURL(input.files[0]);
    }
}

function EventDisplayRedirectTo() {
    if (!is_backend_page()) return;
    $(document).on("change","#form-builder-block  input[name='have_redirect_to']", function () {
        if ($('#form-builder-block input[name="have_redirect_to"]:checked').length > 0) {
            $('#form-builder-block .url_redirect_to').removeClass("hidden");
            $('#form-builder-block .disable_modal_confirm').addClass("hidden");
            $('#form-builder-block .not-reload-section').addClass("hidden");
        } else {
            $('#form-builder-block  .url_redirect_to').addClass("hidden");
            $('#form-builder-block .disable_modal_confirm').removeClass("hidden");
            $('#form-builder-block .not-reload-section').removeClass("hidden");
        }
    });

    $(document).on("change", "#form-builder-block  input[name='partial_reload']", function () {
        ShowHideListingToReload($('#form-builder-block input[name="partial_reload"]:checked').length > 0);
    });

    $(document).on("change", "#form-builder-block  input[name='display_as_modal']", function () {
        ShowHideButtonOpenModal($('#form-builder-block input[name="display_as_modal"]:checked').length > 0, false, false);
    });

    $(document).on("change", "#form-builder-block  input[name='autosubmit_and_hidden']", function () {
        ShowHideButtonHiddenAutosubmit($('#form-builder-block input[name="autosubmit_and_hidden"]:checked').length > 0, undefined, false);
    });

    $(document).on("change", "#form-builder-block  input[name='hide_modal_button']", function () {
        if ($('#form-builder-block input[name="hide_modal_button"]:checked').length > 0) {
            $('#form-builder-block .button_for_modal_section').addClass("hidden");
        }
        else {
            $('#form-builder-block .button_for_modal_section').removeClass("hidden");
        }
    });
}

function ShowHideListingToReload(enabled) {
    if (enabled) {
        $('#form-builder-block .listing-cms-reload').removeClass("hidden");
    }
    else {
        $('#form-builder-block .listing-cms-reload').addClass("hidden");
    }
}


function ShowHideButtonOpenModal(enabled, hideButton, hiddenEnabled) {
    if (enabled) {
        $('#form-builder-block .button-open-modal-section').removeClass("hidden");
        $('#form-builder-block .for_modal').removeClass("hidden");
        $('#form-builder-block .for_hidden').addClass("hidden");
        $('#form-builder-block .open-as-hidden').addClass("hidden");
        $('#form-builder-block input[name="hide_modal_button"]').prop("checked", hideButton);

        if (hideButton) {
            $('#form-builder-block .button_for_modal_section').addClass("hidden");
        }
        else {
            $('#form-builder-block .button_for_modal_section').removeClass("hidden");
        }
    }
    else {
        $('#form-builder-block .open-as-hidden').removeClass("hidden");
        if (!hiddenEnabled)
            $('#form-builder-block .button-open-modal-section').addClass("hidden");
    }
}

function ShowHideButtonHiddenAutosubmit(enabled, hideButton, modalEnabled) {
    if (enabled) {
        $('#form-builder-block .button-open-modal-section').removeClass("hidden");
        $('#form-builder-block .for_modal').addClass("hidden");
        $('#form-builder-block .for_hidden').removeClass("hidden");
        $('#form-builder-block .open-as-modal').addClass("hidden");
        $('#form-builder-block input[name="hide_modal_button"]').prop("checked", hideButton || hideButton == undefined);

        if (hideButton || hideButton==undefined) {
            $('#form-builder-block .button_for_modal_section').addClass("hidden");
        }
        else {
            $('#form-builder-block .button_for_modal_section').removeClass("hidden");
        }
    }
    else {
        $('#form-builder-block .open-as-modal').removeClass("hidden");
        if (!modalEnabled)
            $('#form-builder-block .button-open-modal-section').addClass("hidden");
    }
}

function EventAutoSelectRequiredLogin() {
    if (!is_backend_page()) return;
    var isGlobalAdmin = $('.form_builder_block input[name="is-global-user"]').val() == 'true';

    var formSelector = '#form-builder-block';
    $(document).on('change','#form-builder-block  input[name="update_record"]', function () {
        var objectSalesforce = $('#form-builder-block').find('select[name="salesforce_object"]').val();
        var required_login_checked = $(formSelector).find('input[name="required_login"]').is(':checked');
        if ($(formSelector).find('input[name="update_record"]:checked').length > 0) {
           
            var save_data_salesforce_checked = $(formSelector).find('input[name="save_data_salesforce"]').is(':checked');
            var isCompliance = $(formSelector).find('#isCompliance').val();
            if (objectSalesforce == 'Account' || objectSalesforce == 'Contact') {
                $(formSelector).find('input[name="required_login"]').prop('checked', true);
                $(formSelector).find('.save_complete_later').removeClass('hidden');
                $(formSelector).find('.message_sid_querystring').addClass('hidden');
                required_login_checked = true;
            }
            else {
                $(formSelector).find('.message_sid_querystring').removeClass('hidden');
            }

            //Validate if required login and save data are checked and display populate from salesforce field
            if (save_data_salesforce_checked && isCompliance == 'false') {
                $(formSelector).find('.populate_from_salesforce_row').removeClass("hidden");
                $(formSelector).find('.retrieve_info_from_salesforce').removeClass("hidden");
                $(formSelector).find('input[name="populate_from_salesforce"]').prop('checked', true);
                $('#form-builder-block').find('.update_record_row').show();
            }
            else {

                $('#form-builder-block').find('.update_record_row').hide();
                //$(formSelector).find('.populate_from_salesforce_row').addClass("hidden");
                $(formSelector).find('.retrieve_info_from_salesforce').addClass("hidden");
                //$(formSelector).find('input[name="populate_from_salesforce"]').prop('checked', false);
            }

            $(formSelector).find('input[name="save_complete_later"]').prop('checked', false);
            $(formSelector).find('.save_complete_later').addClass('hidden');
            $(formSelector).find('.dependency-from-salesforce').show();
            DisplayDontPopulateAccountSetting();
        } else {
            //$(formSelector).find('input[name="populate_from_salesforce"]').prop('checked', false);
            //$(formSelector).find('.populate_from_salesforce_row').addClass("hidden");
            $(formSelector).find('.retrieve_info_from_salesforce').addClass("hidden");
            if ($(formSelector).find('input[name="populate_from_salesforce"]:checked').length == 0) {
                $(formSelector).find('.message_sid_querystring').addClass('hidden');
            }

            if (required_login_checked) {
                $(formSelector).find('.save_complete_later').removeClass('hidden');
                $(formSelector).find('.allow_submitted_data').removeClass('hidden');
            }
            remove_dependency_salesforce_fields(formSelector);

            if ($(formSelector + ' input[name="update_user_information"]:checked').length > 0) {
                //Disable update user information check
                DisableUserUpdateInformation();
            }
            DisplayDontPopulateAccountSetting();
        }
    });
    $(document).on('change', '#form-builder-block input[name="include_related_objects"]', function () {
        $('.submit-row.field-row').trigger('click');
        if (!$(this).prop('checked')) {
            disableRelatedFieldSection();
            $('.redirect-section-section').find('.related-field-section-help').hide();
        }
        else {
            $('.redirect-section-section').find('.related-field-section-help').show();
        }
    });
    $(document).on('change', '#form-builder-block input[name="required_login"]', function() {
        var objectSalesforce = $(formSelector).find('select[name="salesforce_object"]').val();

        if ($('#form-builder-block input[name="required_login"]:checked').length == 0) {
            if(objectSalesforce == 'Account' || objectSalesforce == 'Contact') {
                //Disable update
                $(formSelector).find('input[name="update_record"]').prop('checked', false);

                //Disable populate fields from Salesforce
                $(formSelector).find('input[name="populate_from_salesforce"]').prop('checked', false);
                $('#form-builder-block').find('.update_record_row').hide();

                if ($('#form-builder-block input[name="update_user_information"]:checked').length > 0) {
                    //Disable update user information check
                    DisableUserUpdateInformation();
                }
                
                remove_dependency_salesforce_fields(formSelector);
            }
            $(formSelector).find('input[name="save_complete_later"]').prop('checked', false);
            $(formSelector).find('input[name="form_builder_allow_submitted_data"]').prop('checked', false);
            $(formSelector).find('input[name="form_builder_enable_print_button_on_form"]').prop('checked', false);
            $(formSelector).find('.save_complete_later').addClass('hidden');
            $(formSelector).find('.allow_submitted_data').addClass('hidden');
        } else {
            
                $(formSelector).find('.save_complete_later').removeClass('hidden');
                $(formSelector).find('.allow_submitted_data').removeClass('hidden');
        }

        displaySignatureConfigFields(formSelector);
    });
    $(document).on('change', '#form-builder-block input[name="populate_from_salesforce"]', function() {
        if ($('#form-builder-block input[name="populate_from_salesforce"]:checked').length == 0) {
            //Disable update
            $('#form-builder-block input[name="update_record"]').prop('checked', false);
            $('#form-builder-block').find('.message_sid_querystring').addClass('hidden');
            $(formSelector).find('.retrieve_info_from_salesforce').addClass("hidden");
            $(formSelector).find('.retrieve_info_from_salesforce input[name="retrieve_data_salesforce"]').prop('checked', false);
            if ($(formSelector).find('input[name="update_record"]:checked').length == 0) {
                $(formSelector).find('.message_sid_querystring').addClass('hidden');
            }

            if ($('#form-builder-block input[name="update_user_information"]:checked').length > 0) {
                //Disable update user information check
                DisableUserUpdateInformation();
            }
            $('#form-builder-block').find('.update_record_row').hide();
            remove_dependency_salesforce_fields(formSelector);
            
        }
        else {
            var objectSalesforce = $(formSelector).find('select[name="salesforce_object"]').val();

            //Enable update
            $('#form-builder-block').find('.update_record_row').show();
            $(formSelector).find('input[name="update_record"]').prop('checked', true);
            $(formSelector).find('.retrieve_info_from_salesforce').removeClass("hidden");
            $(formSelector).find('.retrieve_info_from_salesforce input[name="retrieve_data_salesforce"]').prop('checked', false);
            $(formSelector).find('input[name="save_complete_later"]').prop('checked', false);
            $(formSelector).find('.save_complete_later').addClass('hidden');
            if(objectSalesforce == 'Account' || objectSalesforce == 'Contact') {
                $(formSelector).find('.message_sid_querystring').addClass('hidden');
                $(formSelector).find('.enforce_session_section').removeClass('hidden');
            }
            else {
                $(formSelector).find('.message_sid_querystring').removeClass('hidden');
            }

            $(formSelector).find('.dependency-from-salesforce').show();
        }
        DisplayDontPopulateAccountSetting();
    });
}

function ShowSfListviewObjects() {
    if (!is_backend_page()) return;
    var elementReveal = "form-builder-block";

    $(document).on('change', "#form-builder-block select[name='list_view_salesforce_object']", function () {
        var SfObject = $('#' + elementReveal + ' select[name="list_view_salesforce_object"]').val();
        $('#' + elementReveal).find('.list-view-dropdown-settings').addClass("hidden");
        if (SfObject != null && SfObject != "") {
            loadSfListViews(SfObject, "");
        } else {
            Swal.fire({
                title: window.translation.warning,
                text: window.translation.please_select_one_option,
                icon: "warning",
                closeOnConfirm: true
            });
        }
        finishLoading();
        return false;
    });


    $(document).on('change', "#form-builder-block select[name='objects_mentions']", function () {
        var SfObject = $('#' + elementReveal + ' select[name="objects_mentions"]').val();
        if (SfObject != null && SfObject != "") {
            loadSfListViews(SfObject, "");
        } else {
            Swal.fire({
                title: window.translation.warning,
                text: window.translation.please_select_one_option,
                icon: "warning",
                closeOnConfirm: true
            });
        }
        return false;
    });

    $(document).on('change', "#form-builder-block select[name='listview']", function () {
        activeLoading();
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var SFView = $('#' + elementReveal + ' select[name="listview"]').val();
        var SFViewName = $('#' + elementReveal + ' select[name="listview"] option:selected').attr('data-developer-name');
        var SfObject = $('#' + elementReveal + ' select[name="list_view_salesforce_object"]').val();
        loadSfListViewsFields(SfObject, SFView, '', '', undefined, SFViewName, true);
        finishLoading();
    });


    $(document).on('change', "#form-builder-block select[name='listviews_mentions']", function () {
        var SFView = $('#' + elementReveal + ' select[name="listviews_mentions"]').val();
        var SfObject = $('#' + elementReveal + ' select[name="objects_mentions"]').val();
        loadSfListViewsFields(SfObject, SFView, '', '', '');
        finishLoading();
    });
}


function HideDefaultSources() {
    $('#form-builder-block .dropdown-options-reloaded').addClass('hidden');
    $('#form-builder-block .is_label_diferent_section').addClass('hidden');
    $("#form-builder-block .dropdown_field").addClass("hidden");
    $("#form-builder-block .dropdown-options").addClass("hidden");
    $("#form-builder-block .pull_values_from_sf_help").addClass("hidden");
    $("#form-builder-block .list_view_options").addClass("hidden");
    $('#form-builder-block .list_view_options .list-view-dropdown-settings').addClass('hidden');
    $('#form-builder-block .option-values').addClass('hidden');
    $('#form-builder-block .soql_options_section').addClass('hidden');
    $('#form-builder-block .list_view_options .list-view-dropdown-settings').addClass('hidden');


    var selectField = $('#form-builder').find('select.default_value_dropdown_simple');
    if (selectField != null && selectField != undefined) {
        selectField.empty();
        selectField.append('<option value="">' + window.translation.select_one + '</option>');
    }

}

function ShowSfFieldPullValues() {
    if (!is_backend_page()) return;
    var elementReveal = "form-builder-block";
    var salesforceObj = $('#form-builder select[name="salesforce_object"]').val();
    if ($('#form-builder-block select[name="pull_values_sf_source"]').length > 0) {
        $(document).on('change', '#form-builder-block select[name="pull_values_sf_source"]', async function () {
            let currentValue = $(this).val();
            HideDefaultSources();
            if (currentValue == 0) {
                $('#form-builder-block .dropdown-options-reloaded').removeClass('hidden');
                $('#form-builder-block .is_label_diferent_section').removeClass('hidden');
                $("#form-builder-block .dropdown_field").removeClass("hidden");
                $("#form-builder-block .dropdown-options").removeClass("hidden");
                

            } else if (currentValue == 1) { //pull from field
                $("#form-builder-block .pull_values_from_sf_help").removeClass("hidden");
                if (salesforceObj !== undefined && salesforceObj !== null && salesforceObj !== '') {
                    await add_default_values_for_picklist_from_salesforce(null);
                }
            } else if (currentValue == 2) { // pull from listview
                $("#form-builder-block .listview").removeClass("hidden");
                $("#form-builder-block .list_view_options").removeClass("hidden");

                if ($("#form-builder-block select[name='list_view_salesforce_object'] option").length == 0) {
                    loadSfObjects("");
                }

            } else if (currentValue == 3) { 
                $('#form-builder-block .soql_options_section').removeClass('hidden');
            }

            if (currentValue == 1 || currentValue == 2) {
                activeLoading();
                var elementId = $('.form_builder_block input[name="element-id"]').val();
                var salesforce_field = $('.form_builder_block select[name="salesforce_field"]').val();
                await AjaxLoadSalesForceFields(elementId, false, true);
                $('.form_builder_block select[name="salesforce_field"]').val(salesforce_field);

            }
            finishLoading();
            ShowHideForPaginationFeature();
        });
    }

    
}

function ShowHideForPaginationFeature(valueDisplay, autoSuggest, pullValuesSfSource) {
    if (valueDisplay == undefined)
        valueDisplay = $("#form-builder-block select[name='display_picklist_mode']").val();
    if (autoSuggest == undefined)
        autoSuggest = $('.form_builder_block input[name="auto_suggest"]').prop("checked");
    if (pullValuesSfSource == undefined)
        pullValuesSfSource = $('.form_builder_block form select[name="pull_values_sf_source"]').val();


    if (valueDisplay == '0' && autoSuggest && (pullValuesSfSource == '2' || pullValuesSfSource == '3')) {
        //show
        $('.form_builder_block .paginate_options').removeClass("hidden");
    }
    else {
        //hide
        $('.form_builder_block .paginate_options').addClass("hidden");
    }
}

function ShowDisplayAsCheckBoxesValues() {
    if (!is_backend_page()) return;
    /*var elementReveal = "form-builder-block";
    if ($("#form-builder-block input[name='display_as_checkboxes']").length > 0) {
        $(document).on('change', '#form-builder-block input[name="display_as_checkboxes"]', function () {
            if ($('#form-builder-block input[name="display_as_checkboxes"]:checked').length > 0) {
                $("#form-builder-block .number_of_columns_checkbox").removeClass("hidden");
                $("#form-builder-block input[name='number_of_columns_checkbox']").val('1');
            } else {

                $("#form-builder-block .number_of_columns_checkbox").addClass("hidden");
                $("#form-builder-block input[name='number_of_columns_checkbox']").val('0');
            }
        });
    }*/
}

function ShowDisplayAsRadioButtonsValues() {
    if (!is_backend_page()) return;
    var elementReveal = "form-builder-block";
    if ($("#form-builder-block select[name='display_picklist_mode']").length > 0) {
        var value = $("#form-builder-block select[name='display_picklist_mode']").val();
        if (value == '0') {
            $('#form-builder-block .sf-listview-default-value').removeClass('hidden');
            $('#form-builder-block .number_of_columns_checkbox').removeClass('hidden');
        }
        else if (value == '3') {
            $('#form-builder-block .sf-listview-default-value').removeClass('hidden');
            $('#form-builder-block .number_of_columns_checkbox').removeClass('hidden');

        } else if (value == '4') {
            $(".form_builder_block .show_format").removeClass('hidden');
            $(".form_builder_block .step_value").addClass('hidden');
            $(".form_builder_block .textRatingScale").addClass('hidden');
            $(".form_builder_block .scale_color_section").addClass('hidden');
            $(".form_builder_block .validatior_code_text").removeClass('hidden');
        }
        else {
            $('#form-builder-block .sf-listview-default-value').addClass('hidden');
            $('#form-builder-block .number_of_columns_checkbox').addClass('hidden');
        }
    }
}

function EventCancelButtonOptions() {
    if (!is_backend_page()) return;


    $('#form-builder-block #include_cancel_button').change(function (event) {
        var isArs = $('#form-builder-block').hasClass('ars');
        if (!isArs) {
            
            if ($(this).is(':checked')) {
                $('#form-builder-block .custom_Cancel_url').show();
                $('#form-builder-block .custom_Cancel_url input.cancel-text-button').each(function () {
                    if ($(this).val() == '') {
                        $(this).val($(this).data('cancel-text-def'));
                    }
                });
                if ($('.form-preview .submit-row.field-row button.button').length == 1) {
                    var textButton = ($('input[name="cancel-label-1"]').length > 0 && $('input[name="cancel-label-1"]').val() != '') ? $('input[name="cancel-label-1"]').val() : "Cancel";
                    $('.form-preview .submit-row.field-row button.button').parent().prepend('<button type="button" class="button cancel" style="background-color: transparent;color: #A4B000;">' + textButton + '</button>&nbsp;');
                }
            } else {
                
                $('#form-builder-block .custom_Cancel_url').hide();
                if ($('.form-preview .submit-row.field-row .cancel-div').length > 0) {
                    $('.form-preview .submit-row.field-row .cancel-div').remove();
                }
            }
        }
        
        $('#form-builder-block #include_cancel_button').addClass('event-added');
    });
    
}

function ShowMultipleFilesActions() {

    $(document).on('change', '#form-builder-block input[name="multiple_files"]', function () {

        if ($('#form-builder-block input[name="multiple_files"]:checked').length > 0) {
            $('.form_builder_block .save_in_salesforce').addClass("hidden");
        }
        else {
            $('.form_builder_block .save_in_salesforce').removeClass("hidden");
        }
        AjaxLoadSalesForceFields('0', false);
    });
}
function ShowSalesforceFilesValues() {
    if (!is_backend_page()) return;
    var isGlobalAdmin = $('.form_builder_block input[name="is-global-user"]').val() == 'true';
    if ($("#form-builder-block input[name='save_in_salesforce']").length > 0) {

        $(document).on('change', '#form-builder-block input[name="save_in_salesforce"]', function () {
            $('.form_builder_block .related_field_object').addClass("hidden");
            if ($('#form-builder-block input[name="save_in_salesforce"]:checked').length > 0) {
                $('.form_builder_block .multiple_files').addClass("hidden");
                $("#form-builder-block .salesforce_library").removeClass("hidden");
                if (isGlobalAdmin || IS_LLAMAPI_ENABLED) {
                    $("#form-builder-block .record_to_relate").removeClass("hidden");
                }
                else {
                    $("#form-builder-block .record_to_relate").addClass("hidden");
                }

                $("#form-builder-block input[name='salesforce_library']").val('');

                if (($("#save_data_salesforce").is(':checked') || $("#sharing-portal-form").is(':checked'))) {
                    $("#form-builder-block .related_files").removeClass("hidden");
                    
                }
                else {
                    $("#form-builder-block .related_files").addClass("hidden");
                    $('#form-builder-block .salesforce-mapping-section').addClass("hidden");
                    $('#form-builder-block .field_to_mention_section').removeClass("hidden");
                    $('#form-builder-block .salesforce-mapping-section-notrf').addClass("hidden");
                    
                }

                $("#form-builder-block input[name='related_files']").prop("checked", false);
                loadSfLibraries("");


            } else {
                $('.form_builder_block .multiple_files').removeClass("hidden");
                $("#form-builder-block .salesforce_library").addClass("hidden");
                $("#form-builder-block input[name='salesforce_library']").val('');
                $("#form-builder-block .related_files").addClass("hidden");
                $("#form-builder-block .record_to_relate").addClass("hidden");
                //$("#form-builder-block input[name='sf_record_to_relate']").val("");
                $("#form-builder-block input[name='related_files']").prop("checked", false);


                if (($("#save_data_salesforce").is(':checked') || $("#sharing-portal-form").is(':checked'))) {
                    $('#form-builder-block .salesforce-mapping-section').removeClass("hidden");
                    $('#form-builder-block .field_to_mention_section').removeClass("hidden");
                    $('#form-builder-block .salesforce-mapping-section-notrf').removeClass("hidden");
                }
                else {
                    $('#form-builder-block .salesforce-mapping-section').addClass("hidden");
                    $('#form-builder-block .field_to_mention_section').addClass("hidden");
                    $('#form-builder-block .salesforce-mapping-section-notrf').addClass("hidden");
                }
                
            }
        });
    }

    $(document).on('change', '.form_builder_block input[name="registration_from_salesforce"]', function () {
            if ($("#form-builder-block input[name='registration_from_salesforce']").prop("checked")) {

                $("#form-builder-block").find(".registration_form_profile").removeClass("hidden");
                $("#form-builder-block").find(".update_user_information_row").addClass("hidden");
                $('#form-builder-block a.link-refresh-sobjects-llamapi').addClass('hidden');
                EnableExternalRegistration();

            } else {
                $("#form-builder-block").find(".update_user_information_row").removeClass("hidden");
                $("#form-builder-block").find(".registration_form_profile").addClass("hidden");
                $("#form-builder-block").find('select[name="salesforce_object"]').removeAttr('disabled');
                $('#form-builder-block a.link-refresh-sobjects-llamapi').removeClass('hidden');
                $('#form-builder-block').find('fieldset.form-public-site-users').removeClass('expanded');

            }
    });

    $(document).on('change', '.form_builder_block input[name="update_user_information"]', function () {
        if ($("#form-builder-block input[name='update_user_information']").prop("checked")) {

            $("#form-builder-block").find(".registration_from_salesforce_row").addClass("hidden");
            $("#form-builder-block").find(".update_record_row").removeClass("hidden");
            $("#form-builder-block").find(".populate_from_salesforce_row").removeClass("hidden");
            $('#form-builder-block a.link-refresh-sobjects-llamapi').addClass('hidden');
            EnableUserUpdateInformation();

        } else {

            $("#form-builder-block").find(".registration_from_salesforce_row").removeClass("hidden");
            $("#form-builder-block").find('select[name="salesforce_object"]').removeAttr('disabled');
            $('#form-builder-block a.link-refresh-sobjects-llamapi').removeClass('hidden');
        }
    });

    $(document).on('change', '.form_builder_block select[name="salesforce_object"]', function () {
        if ($("#form-builder-block input[name='related_files']").prop("checked")) {
            $('.form_builder_block .related_field_object').addClass("hidden");
            $("#form-builder-block .record_to_relate").addClass("hidden");

            if (($('.field-row.active').length > 0 && $('.field-row.active').data('type-field') == 'file')
                && ($(this).val() == 'Both_Organization' || $(this).val() == 'Both_User')) {
                $('.form_builder_block .related_field_object').removeClass("hidden");
                $('.form_builder_block input[name="registration_from_salesforce"]').prop("checked", false);
                $("#form-builder-block").find('input[name="registration_profile"]').val("");
            }
            else {
                $('.form_builder_block .related_field_object').addClass("hidden");
                $('.form_builder_block input[name="registration_from_salesforce"]').prop("checked", false);
                $("#form-builder-block").find('input[name="registration_profile"]').val("");
            }
        }
        else {

            $('.form_builder_block .related_field_object').addClass("hidden");
            $('.form_builder_block input[name="registration_from_salesforce"]').prop("checked", false);
            $("#form-builder-block").find('input[name="registration_profile"]').val("");
        }
    });

    $(document).on('change', '#form-builder-block input[name="related_files"]', function () {
        var isGlobalAdmin = $('.form_builder_block input[name="is-global-user"]').val() == 'true';
        if ($(this).prop('checked')) {
            $('#form-builder-block').find('.copy_to_hidden').addClass('hidden');
            if (isGlobalAdmin) {
                $("#form-builder-block .record_to_relate").removeClass("hidden");
            }
            else {
                $("#form-builder-block .record_to_relate").addClass("hidden");
            }

            if ($('.form_builder_block select[name="salesforce_object"]').val() === 'Both_User' ||
                $('.form_builder_block select[name="salesforce_object"]').val() === 'Both_Organization') {
                $('.form_builder_block .related_field_object').removeClass("hidden");
            }
            else {
                $('.form_builder_block .related_field_object').addClass("hidden");

            }
            $('#form-builder-block .salesforce-mapping-section').removeClass("hidden");
            $('#form-builder-block .field_to_mention_section').removeClass("hidden");
            $('#form-builder-block .salesforce-mapping-section-notrf').addClass("hidden");

        }
        else {
            $('#form-builder-block').find('.copy_to_hidden').removeClass('hidden');
            if (isGlobalAdmin) {
                $("#form-builder-block .record_to_relate").removeClass("hidden");
            }
            else {
                $("#form-builder-block .record_to_relate").addClass("hidden");
            }
            if ($("#save_data_salesforce").is(':checked') || $("#sharing-portal-form").is(':checked')) {
                $('#form-builder-block .salesforce-mapping-section').removeClass("hidden");
                $('#form-builder-block .field_to_mention_section').removeClass("hidden");
                $('#form-builder-block .salesforce-mapping-section-notrf').removeClass("hidden");
            }
            $('.form_builder_block .related_field_object').addClass("hidden");

        }
    });

    $(document).on('change', '#form-builder-block input[name="save_data_salesforce"]', function () {


        if ($(this).prop('checked')) {
            if ($('.form_builder_block.ars').length == 0 && !$('#sharing-portal-form').is(':checked')) {
                $('#form-builder-block .enable_debug_mode').removeClass('hidden');
                $('#form-builder-block input[name="enable_debug_mode"]').prop("checked", true);
            }
            else {
                $('#form-builder-block .enable_debug_mode').addClass('hidden');
            }
        }
        else {
            $('#form-builder-block .enable_debug_mode').addClass('hidden');
        }

        if ($('.field-row.active').length > 0 && $('.field-row.active').data('type-field') == 'file') {
            if ($(this).prop('checked')) {
                if (($("#save_data_salesforce").is(':checked') || $("#sharing-portal-form").is(':checked'))) {
                    $('.form_builder_block input[name="related_files"]').prop("checked", false);
                    $('#form-builder-block').find('.copy_to_hidden').removeClass('hidden');
                    $('#form-builder-block .related_files').removeClass("hidden");

                    $('#form-builder-block .salesforce-mapping-section').removeClass("hidden");
                    $('#form-builder-block .field_to_mention_section').removeClass("hidden");
                    $('#form-builder-block .salesforce-mapping-section-notrf').removeClass("hidden");

                }
                else {
                    $('.form_builder_block input[name="related_files"]').prop("checked", false);
                    $('#form-builder-block').find('.copy_to_hidden').removeClass('hidden');
                    $('#form-builder-block .related_files').addClass("hidden");

                    $('#form-builder-block .salesforce-mapping-section').addClass("hidden");
                    $('#form-builder-block .field_to_mention_section').addClass("hidden");
                    $('#form-builder-block .salesforce-mapping-section-notrf').addClass("hidden");
                }
            }
            else {
                $('.form_builder_block input[name="related_files"]').prop("checked", false);
                $('#form-builder-block').find('.copy_to_hidden').removeClass('hidden');
                $('#form-builder-block .related_files').addClass("hidden");
                $('#form-builder-block .salesforce-mapping-section').addClass("hidden");
                $('#form-builder-block .field_to_mention_section').addClass("hidden");
                $('#form-builder-block .salesforce-mapping-section-notrf').addClass("hidden");
            }
        }
    });

    $(document).on('change', '#form-builder-block input[name="sharing_portal_form"]', function () {

        if ($(this).is(':checked')) {
            $('#form-builder-block').find('.subsite-settings').addClass('hidden');
            $('#form-builder-block').find('.kiosk-form-section').addClass('hidden');
        }
        else {
            $('#form-builder-block').find('.subsite-settings').removeClass('hidden');
            $('#form-builder-block').find('.kiosk-form-section').removeClass('hidden');
        }

        if ($('.field-row.active').length > 0 && $('.field-row.active').data('type-field') == 'file') {
            if ($(this).prop('checked')) {
                if (($("#save_data_salesforce").is(':checked') || $("#sharing-portal-form").is(':checked'))) {
                    $('.form_builder_block input[name="related_files"]').prop("checked", false);
                    $('#form-builder-block').find('.copy_to_hidden').removeClass('hidden');
                    $('#form-builder-block .related_files').removeClass("hidden");
                    $('#form-builder-block .salesforce-mapping-section').removeClass("hidden");
                    $('#form-builder-block .field_to_mention_section').removeClass("hidden");
                    $('#form-builder-block .salesforce-mapping-section-notrf').removeClass("hidden");
                    
                }
                else {
                    $('.form_builder_block input[name="related_files"]').prop("checked", false);
                    $('#form-builder-block').find('.copy_to_hidden').removeClass('hidden');
                    $('#form-builder-block .related_files').addClass("hidden");
                    
                }
            }
            else {
                $('.form_builder_block input[name="related_files"]').prop("checked", false);
                $('#form-builder-block').find('.copy_to_hidden').removeClass('hidden');
                $('#form-builder-block .related_files').addClass("hidden");
            }
        }
        var is_sharing_portal = $(this).is(':checked');
        EventDisplayOptionsSaveDataIn(is_sharing_portal);
    });
}

function HandleEventRemoveFiles() {

    $(document).on('click', 'table.file-detail-table a.remove-file-option', function () {
        var self = $(this);
        var fileId = $(this).data('file-id');
        var formId = $(this).data('form-id');
        var fieldId = $(this).closest('table').data('field-id');
        var fileInput = $(this).closest('table').parent().parent().find('input[type="file"].multiple-file');
        var mappeFiledLevel = (fileInput) ? fileInput[0].getAttribute('data-mapped-field') : '';
        var objectSID = "";
        var salesforceObject = "";

        if ($('#form-custom-' + formId).length > 0) {
            objectSID = $('#form-custom-' + formId).find('input[name="salesforce_id_to_update"]').val();
            salesforceObject = $('#form-custom-' + formId).find('input[name="object_sf_to_map"]').val();
        }
        else {            
            objectSID = $('[data-form-id="'+formId+'"].formBlock').find('input[name="salesforce_id_to_update"]').val();
            salesforceObject = $('[data-form-id="' + formId + '"].formBlock').find('input[name="object_sf_to_map"]').val();
        }

        var SfFileObject = (salesforceObject == 'Both_User' || salesforceObject == 'Both_Organization') ? mappeFiledLevel : salesforceObject;
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        Swal.fire({
            title: window.translation.warning,
            text: window.translation.this_file_will_be_permanently,
            icon: "warning",
            showCancelButton: true,
            //confirmButtonColor: '#ff0000',
            closeOnConfirm: true

        }).then(function (result) {
            if (result.isConfirmed) {
                swal.close();
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/RemoveSalesforceFile",
                    data: { fileId: fileId },
                    beforeSend: function () {
                        if ($('#form-custom-' + formId).find('.processing_screen').length > 0) {
                            $('#form-custom-' + formId).find('.processing_screen').show();
                        }
                        else if ($('[data-form-id="' + formId + '"].formBlock').length > 0) {
                            $('[data-form-id="' + formId + '"].formBlock').find('.processing_screen').show();
                        }
                    }
                })
                    .done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.code == "200") {


                            Swal.fire({
                                title: window.translation.success,
                                text: jsonResult.message,
                                icon: "success",
                                showCancelButton: false,
                                confirmButtonText: "Ok",
                                closeOnConfirm: true

                            }).then(function (result) {
                                if (result.isConfirmed) {
                                    swal.close();

                                    var table1 = $('#files-details-' + fieldId).DataTable();
                                    table1.row(self.parents('tr'))
                                        .remove()
                                        .draw();


                                    if (objectSID == '' && $('[data-form-id="' + formId + '"].formBlock').find('input[name="sf_files_rel_added"]').length > 0) {
                                        var listFileId = $('[data-form-id="' + formId + '"].formBlock').find('input[name="sf_files_rel_added"]').val();

                                        listFileId = listFileId.replace(SfFileObject + '-' + fileId + ',', '');
                                        $('[data-form-id="' + formId + '"].formBlock').find('input[name="sf_files_rel_added"]').val(listFileId);
                                    }

                                    if ($('#form-custom-' + formId).find('.processing_screen').length > 0) {
                                        $('#form-custom-' + formId).find('.processing_screen').hide();
                                    }
                                    else if ($('[data-form-id="' + formId + '"].formBlock').length > 0) {
                                        $('[data-form-id="' + formId + '"].formBlock').find('.processing_screen').hide();
                                    }

                                }
                            });

                        } else {


                            Swal.fire({
                                title: window.translation.warning,
                                text: jsonResult.message,
                                icon: "error",
                                showCancelButton: false,
                                //confirmButtonColor: '#ff0000',
                                closeOnConfirm: true

                            }).then(function (result) {
                                if (result.isConfirmed) {
                                    Swal.close();

                                    if ($('#form-custom-' + formId).find('.processing_screen').length > 0) {
                                        $('#form-custom-' + formId).find('.processing_screen').hide();
                                    }
                                    else if ($('[data-form-id="' + formId + '"].formBlock').length > 0) {
                                        $('[data-form-id="' + formId + '"].formBlock').find('.processing_screen').hide();
                                    }

                                }
                            });


                        }
                    });

            }
        });

    });

    $(document).on('click', '.formBlock .related-files-list i.icon-remove', function () {
        var selfUploader = $(this).parent().parent().parent().parent().parent().parent().find('.dm-uploader');
        var fileId = $(this).parent().parent().parent().parent().find('input.salesforce-id').val();
        var liId = $(this).parent().parent().parent().parent().prop('id');
        var fieldId = selfUploader.data('id');
        var formId = selfUploader.find('input[name="form-id-' + fieldId + '"]').val();
        var mappeFiledLevel = selfUploader.find('input[name="mapped-field-' + fieldId + '"]').val();
        var azFile = selfUploader.find('input[name="multiple-azure-files-' + fieldId + '"]').val() == 'true';

        var objectSID = "";
        var salesforceObject = "";

        if ($('#form-custom-' + formId).length > 0) {
            objectSID = $('#form-custom-' + formId).find('input[name="salesforce_id_to_update"]').val();
            salesforceObject = $('#form-custom-' + formId).find('input[name="object_sf_to_map"]').val();
        }
        else {
            objectSID = $('[data-form-id="' + formId + '"].formBlock').find('input[name="salesforce_id_to_update"]').val();
            salesforceObject = $('[data-form-id="' + formId + '"].formBlock').find('input[name="object_sf_to_map"]').val();
        }

        var SfFileObject = (salesforceObject == 'Both_User' || salesforceObject == 'Both_Organization') ? mappeFiledLevel : salesforceObject;
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';


        Swal.fire({
            title: window.translation.warning,
            text: window.translation.this_file_will_be_permanently,
            icon: "warning",
            showCancelButton: true,
            //confirmButtonColor: '#ff0000',
            closeOnConfirm: true

        }).then(function (result) {
            if (result.isConfirmed) {
                Swal.close();
                if (!azFile) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/RemoveSalesforceFile",
                        data: { fileId: fileId },
                        beforeSend: function () {
                            if ($('#form-custom-' + formId).find('.processing_screen').length > 0) {
                                $('#form-custom-' + formId).find('.processing_screen').show();
                            }
                            else if ($('[data-form-id="' + formId + '"].formBlock').length > 0) {
                                $('[data-form-id="' + formId + '"].formBlock').find('.processing_screen').show();
                            }
                        }
                    })
                        .done(function (data) {
                            var jsonResult = JSON.parse(data);

                            if (jsonResult.code == "200") {

                                Swal.fire({
                                    title: window.translation.success,
                                    text: jsonResult.message,
                                    icon: "success",
                                    showCancelButton: false,
                                    confirmButtonText: "Ok",
                                    closeOnConfirm: true

                                }).then(function (result) {
                                    if (result.isConfirmed) {
                                        Swal.close();

                                        //var table1 = $('#files-details-' + fieldId).DataTable();
                                        //table1.row(self.parents('tr'))
                                        //    .remove()
                                        //    .draw();

                                        ui_fail_file(liId, fieldId);
                                        if (objectSID == '' && $('[data-form-id="' + formId + '"].formBlock').find('input[name="sf_files_rel_added"]').length > 0) {
                                            var listFileId = $('[data-form-id="' + formId + '"].formBlock').find('input[name="sf_files_rel_added"]').val();

                                            listFileId = listFileId.replace(SfFileObject + '-' + fileId + ',', '');
                                            $('[data-form-id="' + formId + '"].formBlock').find('input[name="sf_files_rel_added"]').val(listFileId);
                                        }

                                        if ($('#form-custom-' + formId).find('.processing_screen').length > 0) {
                                            $('#form-custom-' + formId).find('.processing_screen').hide();
                                        }
                                        else if ($('[data-form-id="' + formId + '"].formBlock').length > 0) {
                                            $('[data-form-id="' + formId + '"].formBlock').find('.processing_screen').hide();
                                        }

                                    }
                                });


                            } else {

                                Swal.fire({
                                    title: window.translation.warning,
                                    text: jsonResult.message,
                                    icon: "error",
                                    showCancelButton: false,
                                    //confirmButtonColor: '#ff0000',
                                    closeOnConfirm: true

                                }).then(function (result) {
                                    if (result.isConfirmed) {
                                        swal.close();

                                        if ($('#form-custom-' + formId).find('.processing_screen').length > 0) {
                                            $('#form-custom-' + formId).find('.processing_screen').hide();
                                        }
                                        else if ($('[data-form-id="' + formId + '"].formBlock').length > 0) {
                                            $('[data-form-id="' + formId + '"].formBlock').find('.processing_screen').hide();
                                        }

                                    }
                                });

                            }
                        });

                }
                else {

                    var linkInfo = $('li#' + liId).find('a').prop('href');

                    var currentValue = $('input[name="az-' + fieldId + '[value]"]').val();
                    var newValue = "";
                    var fileList = currentValue.split(';');

                    fileList.forEach(function (value, index) {
                        if (value != linkInfo) {
                            newValue += value + ";";
                        }
                    });
                    if (newValue != '') {
                        newValue = newValue.substr(0, newValue.length - 1);
                    }
                    $('input[name="az-' + fieldId + '[value]"]').val(newValue);
                    ui_fail_file(liId, fieldId);

                }

            }
        });



    });
}


function loadSfObjects(defaultOption,skipCache) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var elementReveal = "form-builder-block";
    if (skipCache === undefined)
        skipCache = false;

    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetSalesforceObjects",
        data: { isARS: false, skipCache: skipCache},
        beforeSend: function () {
            activeLoading();
            $('#' + elementReveal + ' select[name="list_view_salesforce_object"]').empty();
            $('#' + elementReveal + ' select[name="objects_mentions"]').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult.status == "ok") {
            var object = jsonResult.salesforceObjects;
            var empty_op = '<option value="">' + window.translation.select_one + '</option>';
            $('#' + elementReveal + ' select[name="list_view_salesforce_object"]').append(empty_op);
            $('#' + elementReveal + ' select[name="objects_mentions"]').append(empty_op);
            $.each(object, function (index, item) {
                var option = '<option value="' + item.api_name + '">' + item.label + '</option>';
                if (defaultOption != null && defaultOption != "") {
                    if (defaultOption == item.api_name) {
                        option = '<option selected value="' + item.api_name + '">' + item.label + '</option>';
                    }
                }

                $('#' + elementReveal + ' select[name="list_view_salesforce_object"]').append(option);
                $('#' + elementReveal + ' select[name="objects_mentions"]').append(option);
            });
            finishLoading();
        } else {

            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }).then(function (result) {
                Swal.close();
                

            });


        }
    });
}

function processListViewFields(jsonResult, defaultOptionLabel, defaultOptionValue, elementReveal, defaultFilterField, addRecordTypeName) {
    var optionsLabel = '';
    var optionsValue = '';
    var optiontFilter = '<option>None</option>';

    //LHH-19297 The label has multiple fields, but for now it is shown only the first, the other are handled as workaround
    if (defaultOptionLabel  && defaultOptionLabel !== '' && defaultOptionLabel.indexOf(',') > 0) {
        defaultOptionLabel = defaultOptionLabel.split(',')[0];
    }

    const addRecordTypeNameResult = jsonResult.data.Fields.some(value =>
        addRecordTypeName && value.toLowerCase() === "recordtypeid"
    );
    addRecordTypeName = addRecordTypeName && addRecordTypeNameResult;

    jsonResult.data.Fields.forEach(function (value, index) {
        var typeField = "other";
        jsonResult.data.Columns.forEach(function (val, ind) {
            if (val.FieldNameOrPath == value) {
                typeField = val.Type;
            }
        });
        if (defaultFilterField != null && defaultFilterField != '' && value == defaultFilterField) {
            optiontFilter += '<option data-type="' + typeField + '" selected value="' + value + '">' + value + '</option>';
            if (typeField === 'string' || typeField === 'email') {
                $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-only-text').removeClass("hidden");
                $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-only-other').addClass("hidden");
            } else {
                $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-only-text').addClass("hidden");
                $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-only-other').removeClass("hidden");
            }
            $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-special').each(function () {
                var optionElement = $(this);
                if (optionElement.attr('data-field-types').indexOf(typeField) != -1) {
                    optionElement.removeClass("hidden");
                }
                else {
                    optionElement.addClass("hidden");
                }

            });
            $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-special-remove').each(function () {
                var optionElement = $(this);
                var valueOfData = optionElement.attr('data-not-field-types');
                var listData = valueOfData.split(',');
                if (listData.indexOf(typeField) != -1) {
                    optionElement.addClass("hidden");
                }

            });
        }
        else {
            optiontFilter += '<option data-type="' + typeField + '" value="' + value + '">' + value + '</option>';
        }


        if (defaultOptionLabel != null && defaultOptionLabel != '' && value == defaultOptionLabel)
            optionsLabel += '<option selected value="' + value + '">' + value + '</option>';
        else {
                optionsLabel += '<option value="' + value + '">' + value + '</option>';
        }

        if (defaultOptionValue != null && defaultOptionValue != '' && value == defaultOptionValue)
            optionsValue += '<option selected value="' + value + '">' + value + '</option>';
        else {
                optionsValue += '<option value="' + value + '">' + value + '</option>';
        }

    });

    $('#' + elementReveal).find('select[name="sf_listview_label_field"]').empty();
    $('#' + elementReveal).find('select[name="field_label_mentions"]').empty();
    $('#' + elementReveal).find('select[name="sf_listview_filter_field"]').empty();
    $('#' + elementReveal).find('select[name="sf_listview_filter_field_rule"]').empty();
    $('#' + elementReveal).find('select[name="filter_field_rule_mentions"]').empty();
    $('#' + elementReveal).find('select[name="sf_listview_label_field"]').html(optionsLabel);
    $('#' + elementReveal).find('select[name="field_label_mentions"]').html(optionsLabel);

    $('#' + elementReveal).find('select[name="sf_listview_value_field"]').html(optionsValue);
    $('#' + elementReveal).find('select[name="field_value_mentions"]').html(optionsValue);

    $('#' + elementReveal).find('select[name="sf_listview_filter_field"]').html(optiontFilter);
    var optionFilterFieldRule = optiontFilter;
    if (addRecordTypeName) {
        optionFilterFieldRule += '<option value="' + 'RecordType.Name' + '">' + 'Record Type Name' + '</option>';
    }
    $('#' + elementReveal).find('select[name="sf_listview_filter_field_rule"]').html(optionFilterFieldRule);
    $('#' + elementReveal).find('select[name="filter_field_rule_mentions"]').html(optiontFilter);

    $('#' + elementReveal).find('select[name="sf_listview_filter_field_rule"]').val('');
    $('#' + elementReveal).find('select[name="filter_field_rule_mentions"]').val('');

    $('#' + elementReveal).find('.list-view-dropdown-settings').removeClass("hidden");
    
    $('#' + elementReveal).find('.sf_listview_without_rules').html('');
    $('#' + elementReveal).find('.without_rules_mentions').html('');
    let filter_rules = $('#' + elementReveal).find('input[name="sf_listview_filter_rules"]').val();
    if(filter_rules!=''){
        let Array_filter_rules = JSON.parse(filter_rules);
        if(Array_filter_rules.length >= 1){
            for (var i = 0; i <     Array_filter_rules.length; i++) {
                let field = Array_filter_rules[i].field;
                let operator = Array_filter_rules[i].operator;
                let value = Array_filter_rules[i].comparisonValue;
                let type = Array_filter_rules[i].typeField;
                var operatorText = $('#' + elementReveal).find('select[name="sf_listview_filter_operator_rule"] option[value="' + operator + '"]').text();
                let html_rule = '<div class="rule" data-field="'+field+'" data-operator="'+operator+'" data-value="'+value+'" data-type="'+type+'">' 
                +'<span class="field">'+field+'</span>'
                +'<span class="operator">'+operatorText+'</span>'
                +'<span class="value">'+value+'</span>'
                +'<span class="condition">AND</span>'
                +'<span class="delete_rule">X</span>'
                +'</div>';
                $('#' + elementReveal).find('.sf_listview_without_rules').append(html_rule);
                $('#' + elementReveal).find('.without_rules_mentions').append(html_rule);
            }
        }
    }else{
        let single_filter_field = $('#' + elementReveal).find('select[name="sf_listview_filter_field"]').val();
        let single_filter_value = $('#' + elementReveal).find('input[name="sf_listview_filter_value"]').val();
        let single_filter_operator = $('#' + elementReveal).find('select[name="sf_listview_filter_operator"]').val();
        if((single_filter_field!='None' || single_filter_field != '' ) && single_filter_value != ''){
            var single_type = $('#' + elementReveal).find('select[name="sf_listview_filter_field"] option:selected').attr('data-type');
            var single_operator_text = $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option[value="' + single_filter_operator + '"]').text();
                let html_rule = '<div class="rule" data-field="'+single_filter_field+'" data-operator="'+single_filter_operator+'" data-value="'+single_filter_value+'" data-type="'+single_type+'">' 
                +'<span class="field">'+single_filter_field+'</span>'
                +'<span class="operator">'+single_operator_text+'</span>'
                +'<span class="value">'+single_filter_value+'</span>'
                +'<span class="condition">AND</span>'
                +'<span class="delete_rule">X</span>'
                +'</div>';
                $('#' + elementReveal).find('.sf_listview_without_rules').append(html_rule);
            $('#' + elementReveal).find('.without_rules_mentions').append(html_rule);
                sf_listview_generate_json_form_rules();
        }
    }

    //update the operator regarding the field selected
    $('#' + elementReveal).find('select[name="sf_listview_filter_field"]').on('change', function () {
        var value = $(this).val();
        if (value !== '') {
            var typeSelected = $('#' + elementReveal).find('select[name="sf_listview_filter_field"] option:selected').attr('data-type');
            if (typeSelected == "string" || typeSelected == "email") {
                
                $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-only-text').removeClass("hidden");
                $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-only-other').addClass("hidden");
            } else {
                $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-only-text').addClass("hidden");
                $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-only-other').removeClass("hidden");

            }

            $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-special').each(function () {
                var optionElement = $(this);
                if (optionElement.attr('data-field-types').indexOf(typeSelected) != -1) {
                    optionElement.removeClass("hidden");
                }
                else {
                    optionElement.addClass("hidden");
                }

            });
            $('#' + elementReveal).find('select[name="sf_listview_filter_operator"] option.validation-special-remove').each(function () {
                var optionElement = $(this);

                var valueOfData = optionElement.attr('data-not-field-types');
                var listData = valueOfData.split(',');
                if (listData.indexOf(typeSelected) != -1) {
                    optionElement.addClass("hidden");
                }

            });
        }
        
    });

    var typeSelected = $('#' + elementReveal).find('select[name="sf_listview_filter_field_rule"] option:selected').attr('data-type');
    if ($('.form_builder_block input[name="rich_text"]:checked').length === 1) {
        typeSelected = $('#' + elementReveal).find('select[name="filter_field_rule_mentions"] option:selected').attr('data-type');
    }
    show_hide_operator_options(elementReveal,typeSelected);

    $('#' + elementReveal).find('select[name="sf_listview_filter_field_rule"]').on('change', function () {
        typeSelected = $('#' + elementReveal).find('select[name="sf_listview_filter_field_rule"] option:selected').attr('data-type');
        var value = $(this).val();
        if (value !== '') {
            show_hide_operator_options(elementReveal,typeSelected);
        }
        //Validate if selected is recordtype.name and update perrefed values 
        if (value.toLowerCase() == 'recordtype.name') {
            var fieldidsAutocomplete = [];
            var ListViewID = $('#' + elementReveal).find('select[name="listview"]').val();
            var nameListViewFields = "SFListView_" + ListViewID + "_Fields";
            var data = sessionStorage.getItem(nameListViewFields);
            if (data) {
                var datafields = JSON.parse(data);
                if (datafields && datafields.data && datafields.data.RecordTypes) {
                    datafields.data.RecordTypes.forEach(function (element) {
                        fieldidsAutocomplete.push(element.Name);
                    });
                }
            }

            updateautocompleteelements(fieldidsAutocomplete, true)
        }

    });

    $('#' + elementReveal).find('select[name="filter_field_rule_mentions"]').on('change', function () {
        typeSelected = $('#' + elementReveal).find('select[name="filter_field_rule_mentions"] option:selected').attr('data-type');
        var value = $(this).val();
        if (value !== '') {
            show_hide_operator_options(elementReveal, typeSelected);
        }
    });
}


function loadSfListViewsFields(SfObject, ListViewID, defaultOptionLabel, defaultOptionValue, defaultFilterField, ListViewName, addRecordTypeName) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var elementReveal = "form-builder-block";

    var nameListViewFields = "SFListView_" + ListViewID + "_Fields";
    $('#' + elementReveal).find('.list-view-dropdown-settings').addClass("hidden");
    if (ListViewName) {
        $('#' + elementReveal).find('input[name="listview_name"]').val(ListViewName);
    }

    var datafields = sessionStorage.getItem(nameListViewFields);
    if (datafields) {
        var jsonResult = JSON.parse(datafields);
        if (jsonResult.code == 200) {
            processListViewFields(jsonResult, defaultOptionLabel, defaultOptionValue, elementReveal, defaultFilterField, addRecordTypeName);
        } else {
            console.log("Error: " + jsonResult.message);
        }
    }
    else {
        if (SfObject !== null && SfObject !== undefined && SfObject !== "" &&
            ListViewID !== null && ListViewID !== undefined && ListViewID !== "") {
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetSalesforceListViewsFields",
                data: {
                    Sfobject: SfObject,
                    SFView: ListViewID,
                },
                beforeSend: function () {
                    activeLoading();
                }

            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.code == 200) {
                    sessionStorage.setItem(nameListViewFields, data);
                    processListViewFields(jsonResult, defaultOptionLabel, defaultOptionValue, elementReveal, defaultFilterField, addRecordTypeName);

                } else if (jsonResult.code == 202) {

                    //START: FAKE_LISTIVEW_LOGIC
                    var fields_to_hide = [
                        'auto_suggest', 'is_label_diferent_section', 'paginate_options'
                    ];
                    HideSpecificFieldsFormBuilder(fields_to_hide);
                    $('#' + elementReveal).find('.list-view-dropdown-settings').addClass("hidden");
                    
                    //END: FAKE_LISTIVEW_LOGIC
                } else { 
                    console.log("Error: " + jsonResult.message);
                }
                finishLoading();

            });
        }

    }

}



function processSFListViewResult(jsonResult, defaultOption, defaultOptionField, defaultOptionValue, elementReveal, SfObject, defaultFilterField, defaultListviewName) {
    var listviews = jsonResult.salesforceListViews;
    var empty_op = '<option value="">' + window.translation.select_one + '</option>';
    $('#' + elementReveal + ' input[name="listview_name"]').val(defaultListviewName);
    $('#' + elementReveal + ' select[name="listview"]').empty();
    $('#' + elementReveal + ' select[name="listviews_mentions"]').empty();
    $('#' + elementReveal + ' select[name="listview"]').append(empty_op);
    $('#' + elementReveal + ' select[name="listviews_mentions"]').append(empty_op);
    var listViewID = 0;

    $.each(listviews, function (index, item) {
        var option = '<option value="' + item.Id + '" data-developer-name="' + item.DeveloperName + '" >' + item.Label + '</option>';
        if (defaultOption != null && defaultOption != "") {
            if (defaultOption == item.Id || defaultListviewName && defaultListviewName!='' && defaultListviewName == item.DeveloperName) {
                listViewID = item.Id;
                option = '<option selected value="' + item.Id + '" data-developer-name="' + item.DeveloperName + '" >' + item.Label + '</option>';
            }
        }
        $('#' + elementReveal + ' select[name="listview"]').append(option);
        $('#' + elementReveal + ' select[name="listviews_mentions"]').append(option);
    });

    if (listViewID !== 0) {
        $('#' + elementReveal + ' select[name="listviews_mentions"]').val(listViewID);
        loadSfListViewsFields(SfObject, listViewID, defaultOptionField, defaultOptionValue, defaultFilterField, undefined, true );

    } else {
        
    }


}

function loadSfListViews(SfObject, defaultOption, defaultOptionField, defaultOptionValue, defaultFilterField, defaultListviewName) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var elementReveal = "form-builder-block";

    var nameSFListViews = "listview_" + SfObject + "_list";

    var dataListViews = sessionStorage.getItem(nameSFListViews);

    if (dataListViews) {
        activeLoading();
        var jsonResult = JSON.parse(dataListViews);
        if (jsonResult.status == "ok") {
            processSFListViewResult(jsonResult, defaultOption, defaultOptionField, defaultOptionValue, elementReveal, SfObject, defaultFilterField, defaultListviewName);
        } else {

            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true

            }).then(function (result) {
                if (result.isConfirmed) {
                    Swal.close();
                    

                }
            });

            finishLoading();
        }
    } else {
        if (SfObject != null && SfObject != "") {
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetSalesforceListViews",
                data: { Sfobject: SfObject, isform: "true" },
                beforeSend: function () {
                    activeLoading();
                    $('#' + elementReveal + ' select[name="listview"]').empty();
                    $('#' + elementReveal + ' select[name="listviews_mentions"]').empty();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                if (jsonResult.status == "ok") {
                    sessionStorage.setItem(nameSFListViews, data);
                    processSFListViewResult(jsonResult, defaultOption, defaultOptionField, defaultOptionValue, elementReveal, SfObject, defaultFilterField, defaultListviewName);
                } else {

                    Swal.fire({
                        title: window.translation.warning,
                        text: jsonResult.message,
                        icon: "error",
                        showCancelButton: false,
                        confirmButtonColor: '#ff0000',
                        closeOnConfirm: true

                    }).then(function (result) {
                        if (result.isConfirmed) {
                            Swal.close();
                            

                        }
                    });


                }
                finishLoading();
            });
        }

    }

}

function loadSfLibraries(defaultOption) {
    
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var elementReveal = "form-builder-block";
    
        $.ajax({
            method: "GET",
            url: urlSite + "admin/GetSalesforceLibraries",
            beforeSend: function () {
                activeLoading();
                $('#' + elementReveal + ' select[name="salesforce_library"]').empty();                
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (jsonResult.status == "ok") {
                $('#' + elementReveal + ' select[name="salesforce_library"]').empty();
                var listviews = jsonResult.salesforceLibraries;                
                var empty_op = '<option data-object="none" value="none"> ' + window.translation.none + '</option>';
                $('#' + elementReveal + ' select[name="salesforce_library"]').append(empty_op);
                $.each(listviews, function (index, item) {
                    var option = '<option value="' + item.Id + '">' + item.Name + '</option>';
                    if (defaultOption != null && defaultOption != "") {
                        if (defaultOption == item.Id) {
                            option = '<option selected value="' + item.Id + '">' + item.Name + '</option>';
                        }
                    }
                    $('#' + elementReveal + ' select[name="salesforce_library"]').append(option);
                });
                
                finishLoading();
            } else {

                Swal.fire({
                    title: window.translation.warning,
                    text: jsonResult.message,
                    icon: "error",
                    showCancelButton: false,
                    confirmButtonColor: '#ff0000',
                    closeOnConfirm: true
                }).then(function (result) {
                    if (result.isConfirmed) {
                        Swal.close();
                        

                    }
                });


            }
        });
    
}


function AllowSFEncryptedFields() {
    if (!is_backend_page()) return;
    $(document).on("change", "#form-builder-block  input[name='encrypted']", function () {
        AjaxLoadSalesForceFields('0', false);
    });
}

function OnlySFRichTextFields() {
    if (!is_backend_page()) return;
    $(document).on("change", "#form-builder-block  input[name='rich_text']", function () {
        AjaxLoadSalesForceFields('0', false);
    });
}


function AddEventToClearSelectedFile() {
    $(document).on("click", 'a.individual-file-remove', function () {
        var inputName = $(this).attr('data-input');
        var fieldSection = $('input[name="' + inputName + '"]').parents('.fields-section').first();
        $('input[name="' + inputName + '"]').val('');
        $('input[name="' + inputName + '"]').attr('data-removed-file', 'true');
        fieldSection.find('input.is-empty-image').val('true');
        fieldSection.find('span.file-upload-name').remove();
        fieldSection.find('.file-upload-name').remove();
        fieldSection.find('label[for="file-upload-input-' + inputName + '"]').text(window.translation.choose_fle);
        fieldSection.find('.file-upload-preview').addClass('hidden');
    });
}

function AddEventToDisplayFilename() {    

    $(document).on('change', '.formBlock input[type=file].simple-file', function (e) {
        var fileName = $(this).val();
        var fileExtension = fileName.split('.').pop();
        var nameInput = $(this).attr('name');
        var buttonToRemove = '<a class="individual-file-remove" data-input="' + nameInput + '" >' + window.translation.clear + '</a>';
        var filename = window.translation.file_selected + ' <i >' + $('input[type=file][name="' + nameInput +'"]').val().split('\\').pop() + ' ' + buttonToRemove + '</i>';
        var sectionFile = $(this).parent();
        sectionFile.find('.file-upload-name').remove();
        sectionFile.find('input[name*=type]').after('<span class="file-upload-name">' + filename + '</span>');
        sectionFile.find('label.file-upload').text(window.translation.upload_a_new_file);
        sectionFile.find('input.is-empty-image').val('false');
        if(fileExtension === 'jpeg'||fileExtension === 'png'||fileExtension === 'bmp'||fileExtension === 'gif'||fileExtension === 'jpg'){
            var idPreview = $(this).attr('data-image-preview-field');
            if(!$(this).closest('.fields-section').find('.file-upload-preview').length){
                $(this).closest('.fields-section').prepend('<div class="file-upload-preview hidden"><img src="#" id="'+idPreview+'" alt="Uploaded image"></div>');
            }
            displayImagePreviewCustom($(this), idPreview);
        }else{
            sectionFile.find('.file-upload-preview').addClass('hidden');
        }
    });

    //This behavior seems to be deprecated. The changes of LHH-20919 were not added here
    $(document).on('click', '.formBlock .confirm-file-section a.load-multi-file-button', function () {

        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);

        var selfItem = $(this);

        var prevImg = undefined;
        if ($(this).parent().parent().find('.file-upload-preview').length > 0) {
            prevImg = $(this).parent().parent().find('.file-upload-preview');
        }

        var self = $(this).parent().parent().find('input[type=file].multiple-file').first();
        var form = self.parents('form').first();

        var fileUploads = form.find('input[type="file"]');
        var files = self[0].files;
        var fieldId = self[0].getAttribute('name').replace('[value]', '');
        var timezone = self[0].getAttribute('data-timezone');
        var private = self.data('private');
        var fileFormId = self.data('form-id');
        var mappedField = self.data('mapped-field');
        var mappedFieldForm = self.data('mapped-field-form');
        var requiresLogin = self.data('requires-login');
        var libraryId = self.data('library-id');
        var saveToSalesforce = self.data('save-to-salesforce');
        var contactIdToUpdate = form.find('input[name="contact_id_to_update"]').val();
        var objectToSaveSF = form.find('input[name="object_sf_to_map"]').val();
        var fileUrl = '';

        var objectFileToSave = (objectToSaveSF == 'Both_User' || objectToSaveSF == 'Both_Organization') ? mappedField : objectToSaveSF;

        if ($('#form-custom-' + fileFormId).find('.processing_screen').length > 0) {
            $('#form-custom-' + fileFormId).find('.processing_screen').show();
        }
        else if ($('[data-form-id="' + fileFormId + '"].formBlock').length > 0) {
            $('[data-form-id="' + fileFormId + '"].formBlock').find('.processing_screen').show();
        }
        var sfRelatedToAssociate = '';
        var salesforceId = form.find('input[name="salesforce_id_to_update"]').val();

        if (files.length > 0) {
            if (window.FormData !== undefined) {
                var data = new FormData();
                data.append("private", private);
                data.append("formId", fileFormId);
                data.append("requiresLogin", requiresLogin);
                data.append("libraryId", libraryId);
                data.append("saveToSalesforce", saveToSalesforce);
                if ((objectToSaveSF == 'Both_User' || objectToSaveSF == 'Both_Organization') && contactIdToUpdate && contactIdToUpdate != '' && mappedField == 'Contact') {
                    data.append("relatedRecordId", contactIdToUpdate);
                    sfRelatedToAssociate = contactIdToUpdate;
                }
                else if (contactIdToUpdate && contactIdToUpdate != '' && objectToSaveSF == 'Contact') {
                    data.append("relatedRecordId", contactIdToUpdate);
                    sfRelatedToAssociate = contactIdToUpdate;
                }
                else if (salesforceId && salesforceId != '') {
                    data.append("relatedRecordId", salesforceId);
                    sfRelatedToAssociate = salesforceId;
                }

                for (var x = 0; x < files.length; x++) {
                    data.append("file" + x, files[x]);
                }
                $.ajax({
                    type: "POST",
                    url: urlSite + "/ARS/UploadFile",
                    contentType: false,
                    processData: false,
                    async: true,
                    data: data
                })
                    .done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status == '200') {
                            if (jsonResult.Urls != "" && jsonResult.Urls != null) {
                                jsonResult.Urls.forEach(function (item) {
                                    if (item.fileUrl != '' && item.fileUrl != null) {
                                        if (fileUrl == '') {
                                            fileUrl = item.fileUrl;
                                        }
                                        else {
                                            fileUrl = fileUrl + ',' + item.fileUrl;
                                        }
                                    }
                                });
                            }


                            Swal.fire({
                                title: window.translation.success,
                                text: (window.translation.file_successfully_uploaded_as + " " + getSFFileNameFromURL(fileUrl)),
                                icon: 'success',
                                showCancelButton: false,
                                closeOnConfirm: true

                            }).then(function (result) {
                                if (result.isConfirmed) {
                                    if (sfRelatedToAssociate == '' && form.find('input[name="sf_files_rel_added"]').length > 0) {
                                        var listFileId = form.find('input[name="sf_files_rel_added"]').val();
                                        form.find('input[name="sf_files_rel_added"]').val(listFileId + (objectFileToSave + '-' + getSFFileIdFromURL(fileUrl)) + ",");
                                    }

                                    if (prevImg != undefined) {
                                        prevImg.addClass('hidden');
                                    }

                                    selfItem.parent().remove();

                                    var table1 = $('#files-details-' + fieldId).DataTable();
                                    table1.row.add([
                                        '<a = href="' + fileUrl + '" target="_blank">' + getSFFileNameFromURL(fileUrl) + '</a>' + " <b>" + window.translation.new_value + "</b>",
                                        getFormattedDate(timezone),
                                        '<a class="remove-file-option new-added" data-file-id="' + getSFFileIdFromURL(fileUrl) + '" data-form-id="' + fileFormId + '">Remove</a>'
                                    ]).draw(false);

                                }
                            });

                            self[0].value = '';
                        }
                        else {
                            Swal.fire({
                                title: window.translation.error,
                                icon: "error",
                                text: window.translation.file_was_not_uploaded,
                                confirmButtonText: "Ok"
                            });
                        }
                        if ($('#form-custom-' + fileFormId).find('.processing_screen').length > 0) {
                            $('#form-custom-' + fileFormId).find('.processing_screen').hide();
                        }
                        else if ($('[data-form-id="' + fileFormId + '"].formBlock').length > 0) {
                            $('[data-form-id="' + fileFormId + '"].formBlock').find('.processing_screen').hide();
                        }
                    });

            } else {
                //var name = f.name.substring(0, f.name.indexOf('['));
                //formForm[name].value = fileUrl;
            }
        }




        return false;
    });


}

function getSFFileNameFromURL(fileUrl) {
    var tokens = fileUrl.split('/');
    var idName = tokens[tokens.length - 1];
    return idName.substring(idName.indexOf('=') + 1, idName.length);
}

function getSFFileIdFromURL(fileUrl) {
    var tokens = fileUrl.split('/');
    var idName = tokens[tokens.length - 1];
    return idName.substring(0, idName.indexOf('?'));
}

function getFormattedDate(timezone) {
    if (timezone) {
        var ampm = moment(new Date()).tz(timezone).format("HH") > 12 ? 'PM' : 'AM';
        return moment(new Date()).tz(timezone).format("MM/DD/YYYY hh:mm") + ' ' + ampm;
    }
    else {
        var ampm = moment(new Date()).format("HH") > 12 ? 'PM' : 'AM';
        return moment(new Date()).format("MM/DD/YYYY hh:mm") + ' ' + ampm;
    }
}


function ExistsParameterInQueryStringCustom(field, queryStringCustom) {
    var query_string = getQueryString(queryStringCustom);
    if (query_string[field]) {
        return true;
    }
    return false;
}

function PopulateCustomRecId(selfForm, queryStringCustom) {
    selfForm.find('.row-fields').removeClass('hidden');
    selfForm.find('.message_missing_parameters').addClass('hidden');

    var forceUpdate = false;
    var isVoloppPage = false;
    var existsRecId = false;
    var parameterRecId = null;
    var existParameterId = false;
    var idsIncluded = 0;

    var parameterName = selfForm.find('input[name="parameter_rec_id"]').val();
    selfForm.find('form').find('input[name="salesforce_id_to_update"]').val('');
    if (parameterName !== null && parameterName !== undefined && parameterName.trim() !== '' && parameterName.trim() !== '-') {
        var existCurrentParameter = ExistsParameterInQueryStringCustom(parameterName, queryStringCustom);
        if (existCurrentParameter === true) {
            existsRecId = true;
            var currentValue = retrieveGetParameterFromCustom(parameterName, queryStringCustom);
            if (currentValue !== null && currentValue !== undefined && currentValue.trim() !== '') {
                idsIncluded = currentValue.split(';').length;
                existParameterId = true;
            }
        }
    }

    if (idsIncluded > 1) {
        selfForm.find('form').find('.message_multiple_id').find('span').text(window.translation.you_are_edition_selected_records.replaceAll('{0}', idsIncluded));
        selfForm.find('form').find('.message_multiple_id').removeClass('hidden');
    }
    else {
        selfForm.find('form').find('.message_multiple_id').addClass('hidden');
    }
    if (existsRecId === true) {
        if (existParameterId === true) {
            if (isVoloppPage === true) {
                //Populate form blocks with parameter of url
                selfForm.find('form').find('input[name="salesforce_id_to_update"]').val(parameterRecId);
                if (forceUpdate) {
                    $('.additional-fields').find('form').find('input[name="populate_from_sf"]').val(true);
                }

            } else {

                var currentParameterName = selfForm.find('input[name="parameter_rec_id"]').val();
                var existParam = ExistsParameterInQueryStringCustom(currentParameterName, queryStringCustom);
                if (existParam === true) {
                    var currentValue = retrieveGetParameterFromCustom(currentParameterName, queryStringCustom);
                    if (currentValue !== null && currentValue !== undefined && currentValue.trim() !== '') {
                        if (selfForm.find('form').find('input[name="salesforce_id_to_update"]').length > 0) {
                            selfForm.find('form').find('input[name="salesforce_id_to_update"]').val(currentValue);
                        }
                        else {
                            selfForm.find('input[name="salesforce_id_to_update"]').val(currentValue);
                        }
                    }
                }
            }
        }
        else {
            var isUpdate = selfForm.find('form').find('input[name="contact_id_to_update"]').length > 0;
            var objectSFToMap = selfForm.find('form').find('input[name="object_sf_to_map"]').val();

            if (isUpdate && objectSFToMap !== 'Contact' && objectSFToMap !== 'Account') {
                selfForm.find('form').find('.message_sid_querystring').removeClass('hidden');
                selfForm.find('form').find('a.submit-button').attr('disabled', 'disabled');
            }
        }
    }

    if (selfForm.find('form').find('input[name="requiredUrlParams"]').val()) {

        var existRequiredtParameters = true;
        var requiredParameters = selfForm.find('form').find('input[name="requiredUrlParams"]').val();
        var valuesToFind = requiredParameters != '' ? requiredParameters.split(',') : [];
        if (valuesToFind) {
            valuesToFind.forEach(function (item) {
                item = item.replaceAll('q:', '');
                item = item.replaceAll('p:', '');
                var existCurrentParameter = ExistsParameterInQueryStringCustom(item, queryStringCustom);
                if (existCurrentParameter === true) {
                    existsRecId = true;
                    var currentValue = retrieveGetParameterFromCustom(parameterName, queryStringCustom);
                    existRequiredtParameters = existRequiredtParameters && (currentValue !== null && currentValue !== undefined && currentValue.trim() !== '');
                }
                else {
                    existRequiredtParameters = false;
                }
            });
        }
        if (!existRequiredtParameters) {
            selfForm.find('.row-fields').addClass('hidden');
            selfForm.find('.message_missing_parameters').removeClass('hidden');
        }

    }

}

function EventsToManageUpdateRecordFeature() {


    //var parameterRecId = retrieveGetParameter('recid');
    //var existsRecId = ExistsParameterInQueryString('recid');
    var forceUpdate = false;
    var isVoloppPage = false;
    var existsRecId = false;
    var parameterRecId = null;
    var existParameterId = false;

    if ($('body.volunteer-opportunity-detail-page').length > 0 && !$('body').hasClass('partner-portal')) {
        if ($('body.volunteer-opportunity-detail-page input#salesforceIDToSearch').length > 0) {
            parameterRecId = $('body.volunteer-opportunity-detail-page input#salesforceIDToSearch').val();
            if (parameterRecId.trim() !== '') {
                existsRecId = true;
                forceUpdate = true;
                isVoloppPage = true;
                existParameterId = true;
            }
        }
    } else {
        $('.formBlock').each(function () {
            var selfForm = $(this);
            var parameterName = selfForm.find('input[name="parameter_rec_id"]').val();
            if (parameterName !== null && parameterName !== undefined && parameterName.trim() !== '' && parameterName.trim() !== '-') {
                var existCurrentParameter = ExistsParameterInQueryString(parameterName);
                if (existCurrentParameter === true) {
                    existsRecId = true;

                    var currentValue = retrieveGetParameter(parameterName);
                    if (currentValue !== null && currentValue !== undefined && currentValue.trim() !== '') {
                        existParameterId = true;
                    }
                }
            }
        });
    }



    if (existsRecId === true) {
        if (existParameterId === true) {

            $('.formBlock').each(function () {
                var selfForm = $(this);
                if (isVoloppPage === true) {
                    //Populate form blocks with parameter of url
                    selfForm.find('form').find('input[name="salesforce_id_to_update"]').val(parameterRecId);
                    if (forceUpdate) {
                        $('.additional-fields').find('form').find('input[name="populate_from_sf"]').val(true);
                    }

                } else {

                    var currentParameterName = selfForm.find('input[name="parameter_rec_id"]').val();
                    var existParam = ExistsParameterInQueryString(currentParameterName);
                    if (existParam === true) {
                        var currentValue = retrieveGetParameter(currentParameterName);
                        if (currentValue !== null && currentValue !== undefined && currentValue.trim() !== '') {
                            selfForm.find('form').find('input[name="salesforce_id_to_update"]').val(currentValue);
                        }

                    }

                }

            });

        }
        else {
            $('.formBlock').each(function() {
                var self = $(this);
                var isUpdate = self.find('form').find('input[name="contact_id_to_update"]').length > 0;
                var objectSFToMap = self.find('form').find('input[name="object_sf_to_map"]').val();

                if (isUpdate && objectSFToMap !== 'Contact' && objectSFToMap !== 'Account') {
                    self.find('form').find('.message_sid_querystring').removeClass('hidden');
                    self.find('form').find('a.submit-button').attr('disabled', 'disabled');
                }
            });
        }
    }
    else {
        var currentUrl = window.location.href;
        if (currentUrl.toLowerCase().indexOf("partner-portal/contact-details")!="-1" ||
            currentUrl.toLowerCase().indexOf("partner-portal/staff-contact-details") != "-1" ||
            currentUrl.toLowerCase().indexOf("partner-portal/volunteer-opportunity-details") != "-1"||
            currentUrl.toLowerCase().indexOf("partner-portal/connection-details") != "-1") {
                var parts = currentUrl.split("/");
                $('.additional-fields-form form').find('input[name="salesforce_id_to_update"]').val(parts[parts.length - 1]);
                $('.additional-fields-form form').find('input[name="populate_from_sf"]').val(true);

        }
    }

    //Events
    $(document).on('click','.formBlock .message_sid_querystring a', function () {
        var self = $(this).parents('.message_sid_querystring').first();
        var form = self.parents('form').first();
        var isUpdate = form.find('input[name="contact_id_to_update"]').length > 0;

        if(isUpdate) { //Remove field to identify is update
            form.find('input[name="contact_id_to_update"]').remove();
            form.find('input[name="object_sf_to_map"]').remove();
            form.find('input[name="salesforce_id_to_update"]').val('');
        }

        self.remove();
        form.find('a.submit-button').removeAttr('disabled');

        return false;
    });
}



function display_processing_screen_ps(showIt) {
    if ($('section#content').find('> .processing_screen').length == 0) {
        $('section#content').append('<div class="processing_screen hide-custom fixed"><div class="content"><span>' + window.translation.please_wait + '</span><img src="/img/default/spinner.svg" alt="loading"></div></div>');
    }
    if (showIt) {
        $('section#content').find('.processing_screen').show();
    }
    else {
        $('section#content').find('.processing_screen').hide();
    }
}


function ConfigureFileRelatedFilesList(relatedFilesId, dataSet, fieldId ) {
    
    if ($(relatedFilesId).length > 0 && dataSet.length>0) {
        dataSet.forEach(function (item) {
            
            var file = new Object();
            file.size = item.Size;
            file.name = item.Name;
            ui_new_file(item.Id, file, fieldId, "", item.Modified, '<a = href="' + item.Url + '" target="_blank">' + item.Name + '</a>', item.Id);
        });
        
    }
}

function LoadDataForRelatedFields(filesDetail) {
    var filesDetailInfo = undefined;
    var fieldListInfo = undefined;

    if (filesDetail) {
        filesDetailInfo = filesDetail['Data'];
        fieldListInfo = filesDetail['Fields'];
    }

    var fieldList = new Array();
    if (fieldListInfo) {
        fieldList = JSON.parse(fieldListInfo);
    }

    var dataSet = new Array();
    if (filesDetailInfo) {
        dataSet = JSON.parse(filesDetailInfo);
    }

    if (fieldList.length > 0) {
        fieldList.forEach(function (value) {
            var tableFileId = '#files-details-' + value;
            ConfigureFileDetailsTable(tableFileId, dataSet);
        });
    }
}

function ConfigureFileDetailsTable(tableFileId, dataSet) {
    
    if ($(tableFileId).length > 0) {

        $(tableFileId).DataTable().destroy();
        $(tableFileId +" tbody").empty();


        $(tableFileId).DataTable(
            {
                'data': dataSet,
                'bFilter': false,
                'bLengthChange': false,
                'pageLength': 10,
                "paging": true,
                "oLanguage": {
                    "oPaginate": {
                        "sPrevious": window.translation.sPrevious,
                        "sNext": window.translation.sNext
                    },
                    "sZeroRecords": window.translation.sZeroRecords,
                    "sInfoFiltered": window.translation.sInfoFiltered,
                    "sInfo": window.translation.sInfo,
                    "sLoadingRecords": window.translation.sLoadingRecords
                },
                "fnDrawCallback": function () {
                    if ($(tableFileId + '_wrapper .dataTables_paginate .paginate_button:not(.next):not(.previous)').size() < 2) {
                        $(tableFileId + '_wrapper div.dataTables_paginate').attr('style', 'display: none !important;');
                        
                    } else {
                        $(tableFileId + '_wrapper div.dataTables_paginate').attr('style', 'display: block;');
                        
                    }
                }
            }
        );
    }
}

function ExistsParameterInQueryString(field) {
    var url = window.location.href;
    var query_string = getQueryString();
    if (query_string[field]) {
        return true;
    }
    return false;
}

function SharingPortalSettings() {
    if (!is_backend_page()) return;
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
    if ($("form#form-builder").length > 0) {
        $(document).on('change', '#sharing-portal-form', async function () {
            if ($(this).prop('checked')) {
                //  Check options
                $('form#form-builder').find('.kiosk-form-section').addClass('hidden');
                $('form#form-builder input[name="save_data_salesforce"]').prop('checked', true);
                $('form#form-builder input[name="required_login"]').prop('checked', true);
                $('form#form-builder input[name="update_record"]').prop('checked', true);
                $('#form-builder-block').find('.update_record_row').show();
                $('form#form-builder input[name="populate_from_salesforce"]').prop('checked', true);
                $('#form-builder-block').find('.dependency-from-salesforce').show();
                $("form#form-builder  select[name='salesforce_field']").addClass('required');

                await LoadSalesForceObjects();

                $('form#form-builder .enable_debug_mode').addClass('hidden');
                $('form#form-builder .sharing-portal-form-object').removeClass('hidden'); //  show objects drowdown
                $('form#form-builder .region').addClass('hidden');  //  hide regions section
                $('form#form-builder .save_data_salesforce').addClass('hidden');   //  hide save_data_salesforce section
                $('form#form-builder .salesforce_object').addClass('hidden');
                $('form#form-builder .url_redirect_to').parent().addClass('hidden');   //  hide url_redirect_to
                $('#form-builder-block').find('.required_login_row').addClass('hidden');
                $('#form-builder-block').find('.update_record_row').addClass('hidden');
                $('form#form-builder .populate_from_salesforce_row').addClass('hidden'); //  hide populate_from_salesforce_row
                $('#form-builder-advanced-settings .general-info .visible-to-label').addClass('hidden');    //  hide order section
                $('#form-builder-advanced-settings .general-info .visible-to-label').next().addClass('hidden');    //  hide order section
                $('#form_builder_exception_url_container').prev().addClass('hidden');   //  hide visible to section
                $('#form_builder_exception_url_container').addClass('hidden');   //  hide visible to section

            } else {
                //  Check options
                $('form#form-builder').find('.kiosk-form-section').removeClass('hidden');
                $('form#form-builder input[name="save_data_salesforce"]').prop('checked', false);
                $('form#form-builder input[name="required_login"]').prop('checked', false);
                $('form#form-builder input[name="update_record"]').prop('checked', false);
                $('form#form-builder input[name="dont_populate_direct_account"]').prop('checked', false);
                $('form#form-builder input[name="populate_from_salesforce"]').prop('checked', false);
                $('#form-builder-block').find('.update_record_row').hide();
                
                $('.sharing-portal-form-object').addClass('hidden'); // hide objects dropdowns
                $('form#form-builder .region').removeClass('hidden');  //  show regions section
                $('form#form-builder .save_data_salesforce').removeClass('hidden');  //  show save_data_salesforce section
                $('form#form-builder .url_redirect_to').parent().removeClass('hidden');   //  show url_redirect_to
                $('#form-builder-block').find('.required_login_row').removeClass('hidden');
                $('#form-builder-block').find('.update_record_row').addClass('hidden');
                //$('form#form-builder .populate_from_salesforce_row').removeClass('hidden'); //  Show populate_from_salesforce_row
                $('#form-builder-advanced-settings .general-info .visible-to-label').removeClass('hidden');    //  show order section
                $('#form-builder-advanced-settings .general-info .visible-to-label').next().removeClass('hidden');    //  show order section
                $('#form_builder_exception_url_container').prev().removeClass('hidden');   //  show visible to section
                $('#form_builder_exception_url_container').removeClass('hidden');   //  show visible to section
                $('form#form-builder select[name="sharing_portal_form_object_select"]').val("0");

                if ($('.form_builder_block.ars').length == 0 && $('#save_data_salesforce').is(':checked')) {
                    $('form#form-builder .enable_debug_mode').removedClass('hidden');
                }

                remove_dependency_salesforce_fields();
            }
        });

        $(document).on('change', 'select[name="sharing_portal_form_object_select"]', function () {

            var optionSelected = $(this).val();

            if (parseInt(optionSelected) === 1) {
                $('form#form-builder select[name="salesforce_object"]').val('Contact');
            } else if (parseInt(optionSelected) === 2) {
                $('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Volunteer_Opportunity__c');
            } else if (parseInt(optionSelected) === 3) {
                $('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Connection__c');
            } else if (parseInt(optionSelected) === 4) {
                $('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Occurrence__c');
            } else if (parseInt(optionSelected) === 5) {
                $('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Recurrence__c');
            } else if (parseInt(optionSelected) === 6) {
                $('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Volunteer_Team__c');
            }
            AjaxLoadSalesForceFields('0', false);
        });
    }
}

function MultipleFilesActions(enabled) {
    var dataType = $('.form_builder_block .field-row.active ').attr('data-type-field');
    $('#form-builder-block [name="multiple_files"]').prop('checked', enabled);
    if (enabled || dataType!='file') {
        $('form#form-builder .save_in_salesforce').addClass("hidden");
    }
    else {
        $('form#form-builder .save_in_salesforce').removeClass("hidden");
    }
}

function validate_form_builder_options() {
    if (!is_backend_page()) return;
    if ($('form#form-builder').length > 0) {
        var storeInSalesforce = $('form#form-builder').find('input[name="save_data_salesforce"]').is(':checked');

        if (storeInSalesforce == true) {
            if ($('form#form-builder').find('.salesforce_object').is(':visible')) {
                var salesforceObject = $('form#form-builder').find('select[name="salesforce_object"]').val();
                if (salesforceObject != null && salesforceObject != undefined && salesforceObject.trim() != 'undefined' && salesforceObject.trim() != '') {
                    return true;
                } else {
                    Swal.fire({
                        title: window.translation.error,
                        icon: "error",
                        text: window.translation.error_form_salesforce_object_mapping,
                        confirmButtonText: "Ok"
                    });

                }
            } else {
                // Verify if is sharing portal form, then one salesforce object for SP form must be selected
                if ($('form#form-builder input[name="sharing_portal_form"]').is(':checked')) {
                    var salesforceObjectToMap = $('form#form-builder select[name="sharing_portal_form_object_select"]').val();
                    
                    if (salesforceObjectToMap === undefined || salesforceObjectToMap == "0") {
                        Swal.fire({
                            title: window.translation.error,
                            icon: "error",
                            text: window.translation.error_form_salesforce_object_mapping,
                            confirmButtonText: "Ok"
                        });

                        return false;
                    }
                } 

               return true;
            }

        } else {
            return true;
        }
    }
    return false;
}

/*
 * this function is to validate some bussines rules of fields, 
 * a salesforce field should be mapped only by one form field
 * If the form field has the option "load options form salesforce field" then it must have a salesforce field selected
 * If the form field has the option "load options form salesforce listview" then it must have a salesforce listview and salesforce list view value selected
 */
function validate_logic_form_fields(jsonObject) {
    var isValid = true;
    if (jsonObject !== undefined) {

        var syncFormWithSF = $(".form_builder_block input[name='save_data_salesforce']:checked").length > 0;
        var currentLangId = $('body').data('lang-index');
 
        var fieldsOptionsIssues = [];
        var salesforceFieldsMapping = {};

        if (syncFormWithSF === true) {

            jsonObject.forEach(function (item) {
                if (item.delete === false) {
                    var isValidField = true;
                    var properties = item.properties;
                    var fieldLabel = '';
                    var itemProperty = properties.find(function (obj) { return obj.name === 'label-' + currentLangId});
                    if (itemProperty !== null && itemProperty !== undefined)
                        fieldLabel = itemProperty.value;
                    var sf_object_value = $('select[name="salesforce_object"]').val();

                    element = properties.find(function (obj) { return obj.name === 'salesforce_field' });
                    var salesForceField = element !== undefined ? element.value : '';

                    element = properties.find(function (obj) { return obj.name === 'salesforce_rel_field' });
                    var salesForceFieldRelated = element !== undefined ? element.value : '';

                    var salesforceRelField = properties.find(function (obj) { return obj.name === 'salesforce_rel_field' });

                    if (item.typeField === 'dropdown' || item.typeField === 'multiselect' || item.typeField === 'radio') {

                        var fromListView = '';
                        var fromSalesforce = '';
                        //var element = properties.find(function (obj) { return obj.name === 'from_sf_list_views'});
                        //var fromListView = element !== undefined ? element.value : false;

                        element = properties.find(function (obj) { return  obj.name === 'sf_listview_label_field' });
                        var listViewLabel = element !== undefined ? element.value : '';

                        element = properties.find(function (obj) { return obj.name === 'sf_listview_value_field' });
                        var listViewValue = element !== undefined ? element.value : '';

                        //element = properties.find(function (obj) { return obj.name === 'pull_values_from_sf' });
                        //var fromSalesforce = element !== undefined ? element.value : false;

                        element = properties.find(function (obj) { return obj.name === 'option_from_source_sf' });
                        var currentValue = element !== undefined ? element.value : 0;
                        if (currentValue == 1) {
                            fromSalesforce = 'on';
                        } else if (currentValue == 2) {
                            fromListView = 'on';
                        } else if (currentValue == 3) {

                        }
                            

                        element = properties.find(function (obj) { return obj.name === 'salesforce_field' });
                        salesForceField = element !== undefined ? element.value : '';

                        if ( (fromListView === true || fromListView == 'on') && (listViewLabel == '' || listViewValue == '') ||  (fromSalesforce === true || fromSalesforce == 'on') && (salesForceField == '' || salesForceField=='none')  ) {
                            fieldsOptionsIssues.push(fieldLabel);
                            isValidField = false;
                        }
                    }
                    
                    if (isValidField === true && salesForceField !== 'none' && salesForceField !== '' && salesForceField !== undefined && salesForceField !== null) {
                        
                        var elementMapping = salesforceFieldsMapping[salesForceField + salesForceFieldRelated];
                        if (elementMapping === undefined) {
                            salesforceFieldsMapping[salesForceField + salesForceFieldRelated] = true;
                        } else {
                            var items_sf_object_value = item.properties.find(function (obj) { return obj.name === 'salesforce_object' });
                            var valueObjectText = $("#form-builder-block select[name='salesforce_object']").val() == undefined ? '' : $("#form-builder-block select[name='salesforce_object']").val();
                            
                            if (sf_object_value.indexOf('Both') != 0 && items_sf_object_value.value.indexOf('Both') != 0 && valueObjectText.indexOf('Both') != 0) {
                                fieldsOptionsIssues.push(fieldLabel);
                            }
                        }
                    }
                }
            });
        }

        if (fieldsOptionsIssues.length > 0) {

            Swal.fire({
                title: window.translation.warning,
                text: window.translation.invalid_fields_general_message + ' ' + fieldsOptionsIssues.join(', '),
                icon: 'warning',
                closeOnConfirm: true
            });
            isValid= false;
        }
    }

    return isValid;
}


function logic_save_form(isNewCMSFeature) {
    if (!is_backend_page()) return;

    if (isNewCMSFeature === undefined)
        isNewCMSFeature = false;

    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var jsonData = GetLocalFormBuilderStorage();
    if (jsonData != "" && jsonData != null) {
        var json = JSON.parse(jsonData);
        var isArs = ($('.form_builder_block.ars').length > 0) ? true : false;
        var formID = $(".form_builder_block input[name='form-id']").val();
        var form_builder_name = $("#form_builder_form_name").val();
        var subsiteId = '0';
        if ($(".form_builder_block").find('select[name="subsite_id"]').length > 0) {
            subsiteId = $(".form_builder_block").find('select[name="subsite_id"]').val();
        } else if ($(".form_builder_block").find('input[name="subsite_id"]').length > 0) {
            subsiteId = $(".form_builder_block").find('input[name="subsite_id"]').val();
        }
        let isNewCMS = $(".form_builder_block input[name='newcmsfeature']").val() == 1;
        var region = $(".form_builder_block select[name='form_build_region']").val();
        var dataSF_active = ($(".form_builder_block input[name='save_data_salesforce']:checked").length > 0) ? true : false;
        var sfObject = (dataSF_active === true) ? $(".form_builder_block select[name='salesforce_object']").val() : '';

        var visible_to = $(".form_builder_block input[name='form_builder_visible_to']:checked").val();
        var url_exceptions = $(".form_builder_block textarea[name='form_builder_visibility_urls']").val();

        if (isNewCMS) {
            visible_to = $(".form_builder_block input[name='visible_to']:checked").val();
            url_exceptions = $(".form_builder_block textarea[name='visibility_urls']").val();
        }


        var sort_weight = ($(".form_builder_block input[name='sort_weight']").val() == "") ? 1 : $(".form_builder_block input[name='sort_weight']").val();
        var url_required_params = $(".form_builder_block input[name='url_required_params']").val();
        var custom_messages = [];
        var confirm_messages = [];
        $(".custom-message-tabs-content textarea").each(function () {
            var langId = $(this).data('language-id');
            var currentValue = $(this).val();
            var selector = "custom-messsage-textarea-" + langId;
            if (typeof CKEDITOR.instances[selector] == "object") {
                if (CKEDITOR.instances[selector] !== null && CKEDITOR.instances[selector] !== undefined)
                    currentValue = CKEDITOR.instances[selector].getData();
            }
            custom_messages.push({
                name: 'custom-messsage-textarea-' + langId,
                value: currentValue,
                language: langId
            });
        });

        $(".confirmation-message-textarea textarea").each(function () {
            var langId = $(this).data('language-id');
            var currentValue = $(this).val();
            var selector = "confirm-messsage-textarea-" + langId;
            if (typeof CKEDITOR.instances[selector] == "object") {
                if (CKEDITOR.instances[selector] !== null && CKEDITOR.instances[selector] !== undefined)
                    currentValue = CKEDITOR.instances[selector].getData();
            }

            confirm_messages.push({
                name: 'confirm-messsage-textarea-' + langId,
                value: currentValue,
                language: langId
            });
        });

        var hide_modal_button = ($('#form-builder input[name="hide_modal_button"]:checked').length > 0) ? true : false;
        var modal_button_text = [];
        if (!hide_modal_button) {
            $('.text-for-modal input[type="text"]').each(function () {
                var langId = $(this).data('language-id');
                var currentValue = $(this).val();
                var selector = "modal-text-" + langId;

                modal_button_text.push({
                    name: selector,
                    value: currentValue,
                    language: langId
                });
            });
        }

        var confirmation_type = $('.form_builder_block select[name="type-form-success"]').val();
        var show_title = ($(".form_builder_block input[name='showTitle']:checked").length > 0) ? true : false;
        var enabled = ($(".form_builder_block input[name='enabled']:checked").length > 0) ? true : false;
        var weight = parseInt($('#form-builder-block input[name="bw-weight"]').val());
        var kiosk_form = ($(".form_builder_block input[name='kiosk_form']:checked").length > 0) ? true : false;
        var isdeleted = false;
        var iscompliance = ($(".form_builder_block input[name='isCompliance']").val() == "true") ? true : false;
        var have_redirection = ($('.form_builder_block input[name="have_redirect_to"]:checked').length > 0) ? true : false;
        var allow_submitted_data = ($(".form_builder_block input[name='form_builder_allow_submitted_data']:checked").length > 0) ? true : false;
        var enable_print_button_on_form = ($(".form_builder_block input[name='form_builder_enable_print_button_on_form']:checked").length > 0) ? true : false;
        var disable_confirm = ($('.form_builder_block input[name="disable_confirm_modal_after_submit"]:checked').length > 0) ? true : false;
        var enable_debug_mode_displayed = ($('.form_builder_block input[name="enable_debug_mode"]').length > 0) ? true : false;
        var enable_debug_mode = ($('.form_builder_block input[name="enable_debug_mode"]:checked').length > 0) ? true : false;
        var include_related_objects = ($('.form_builder_block input[name="include_related_objects"]:checked').length > 0) ? true : false;
        var redirect_to_previous_page = $('.form_builder_block input[name="redirect_to_previous_page"]:checked').length > 0;
        var url_redirection = $('.form_builder_block input[name="url_redirect_to"]').val();
        var required_login = ($('.form_builder_block input[name="required_login"]:checked').length > 0) ? true : false;
        var update_record = ($('.form_builder_block input[name="update_record"]:checked').length > 0) ? true : false;
        var dont_populate_account = ($('.form_builder_block input[name="dont_populate_direct_account"]:checked').length > 0) ? true : false;
        var populate_from_salesforce = ($('.form_builder_block input[name="populate_from_salesforce"]:checked').length > 0) ? true : false;
        var regionsMultiple = $(".form_builder_block select[name='form_build_region_multiple']").val();
        var titlesInput = $(".form_builder_block input[type='text'][name*='title-']");
        var isSPForm = ($('.form_builder_block input[name="sharing_portal_form"]:checked').length > 0) ? true : false;
        var spFormMapTo = (isSPForm) ? $(".form_builder_block select[name='sharing_portal_form_object_select']").val() : 0;
        var recid_parameter_name = $('.form_builder_block input[name="custom_parameter_name"]').val();
        var requestVerificationToken = $('.form_builder_block input[name="__RequestVerificationToken"]').val();
        var css_class = $('.form_builder_block input[name="css_class"]').val();
        var isForUpdateUserInformation = ($('#form-builder input[name="update_user_information"]:checked').length > 0) ? true : false;
        var partial_reload = ($('#form-builder input[name="partial_reload"]:checked').length > 0) ? true : false;
        var display_as_modal = ($('#form-builder input[name="display_as_modal"]:checked').length > 0) ? true : false;
        var autosubmit_and_hidden = ($('#form-builder input[name="autosubmit_and_hidden"]:checked').length > 0) ? true : false; 
        var do_not_save_data_in_db = ($('#form-builder input[name="do_not_save_data_in_db"]:checked').length > 0) ? true : false;
        if($('#form-builder input[type="hidden"][name="do_not_save_data_in_db"]').length > 0){
            do_not_save_data_in_db = ($('#form-builder input[name="do_not_save_data_in_db"]').val() == 'true')?true:false;
        }
        var listing_cms_related = $(".form_builder_block select[name='listing-cms-related']").val();
        var dataworkflow = undefined;
        var datamodalfrom = '';
        var btn_submit_order = $('#form-builder .field-row.submit-row').attr('data-order');
        var enable_multilanguage_frontend = $(".form_builder_block input[name='form_builder_enable_multilanguage']").is(':checked');

        var save_data_on = $(".form_builder_block select[name='save_data_on']").val();
        if($('#form-builder input[type="hidden"][name="save_data_on"]').length > 0){
            save_data_on = ($('#form-builder input[type="hidden"][name="save_data_on"]').val() == '')?0:parseInt($('#form-builder input[type="hidden"][name="save_data_on"]').val());
        }
        var width_modal = parseInt($('.form_builder_block input[name="width_modal"]').val());
        width_modal = (width_modal>0)?width_modal:0;
        if ($('.form_builder_block.ars').length > 0) {
            dataworkflow = $('div#form-builder-block.form_builder_block').data("workflow");

            if (dataworkflow !== undefined && dataworkflow !== '') {
                datamodalfrom = ' data-modal-from="' + dataworkflow + '"';
            }
        }

        var isExternalRegistration = ($('#form-builder input[name="registration_from_salesforce"]:checked').length > 0) ? true : false;

        var profileSelected = "";
        if (isExternalRegistration == true) {
            profileSelected = $('#form-builder select[name="registration_profile"]').val();
        }
        var saveCompleteLater = ($('.form_builder_block input[name="save_complete_later"]:checked').length > 0) ? true : false;
        //add data

        var includeInGallery = false;
        var gallerySelected = "";
        var helpText = "";
        if ($("form#form-builder .settings-builder-form-clone").length > 0) {
            var selector = "form#form-builder .settings-builder-form-clone input[name='form-include-gallery']";
            if ($(selector).length > 0 && $(selector).is(':checked')) {
                includeInGallery = true;
                selector = "form#form-builder input[name='form-select-gallery']";
                gallerySelected = $(selector).val();
                selector = "form#form-builder input[name='form-help-text']";
                helpText = $(selector).val();
            }

        }

        var data = new Object();
        data.confirmation_type = confirmation_type;
        data.confirm_messages = (confirm_messages.length > 0) ? JSON.stringify(confirm_messages) : null;
        data.isExternalRegistration = isExternalRegistration;
        data.subsiteID = subsiteId;
        data.profileSelected = profileSelected;
        data.includeInGallery = includeInGallery;
        data.gallerySelected = gallerySelected;
        data.helpText = helpText;
        data.formID = formID;
        data.btn_submit_order = btn_submit_order;
        data.isArs = isArs;
        data.formName = form_builder_name;
        data.have_redirection = have_redirection;
        data.allow_submitted_data = allow_submitted_data;
        data.enable_print_button_on_form = enable_print_button_on_form;
        data.disable_confirm = disable_confirm;
        data.enable_multilanguage_frontend = enable_multilanguage_frontend;
        if (enable_debug_mode_displayed) {
            data.enable_debug_mode = enable_debug_mode;
        }
        data.include_related_objects = include_related_objects;
        data.redirect_to_previous_page = redirect_to_previous_page;
        data.url_redirection = url_redirection;
        data.region = region;
        data.regionsMultiple = regionsMultiple;
        data.sfActive = dataSF_active;
        data.sfObject = sfObject;
        data.visible_to = visible_to;
        data.url_exceptions = url_exceptions;
        data.required_login = required_login;
        data.update_record = update_record;
        data.dont_populate_direct_account = dont_populate_account;
        data.populate_from_salesforce = populate_from_salesforce;
        data.spFormMapTo = spFormMapTo;
        data.saveCompleteLater = saveCompleteLater;
        data.urlRequiredParams = url_required_params;
        data.customMessage = (custom_messages.length > 0) ? JSON.stringify(custom_messages) : null;
        data.custom_parameter_name = recid_parameter_name;
        data.css_class = css_class;
        data.isForUpdateUserInformation = isForUpdateUserInformation;
        data.partial_reload = partial_reload;
        data.listing_cms_related = listing_cms_related;
        data.display_as_modal = display_as_modal;
        data.autosubmit_and_hidden = autosubmit_and_hidden;
        data.do_not_save_data_in_db = do_not_save_data_in_db;
        data.modal_button_text = (modal_button_text.length > 0) ? JSON.stringify(modal_button_text) : null;
        data.hide_modal_button = hide_modal_button;
        data.width_modal = width_modal;
        data.save_data_on = save_data_on;

        if (!dataSF_active) {
            //Update all fields to change properties and delete sync with SF
            json.forEach(function (field) {
                if (field) {
                    field.properties.forEach(function (property) {
                        var name = property.name;

                        if (name === 'save_data_salesforce' || name === 'salesforce_object' || name === 'salesforce_object_field' || name === 'salesforce_field') {
                            property.value = '';
                        }
                    });
                }
            });
        }

        if (isArs) {
            data.weight = weight;
        }
        else {
            data.weight = sort_weight;
        }

        data.showTitle = show_title;
        data.enabled = enabled;
        data.fields = JSON.stringify(json);
        //data.display_rules = localStorage.getItem("display-logic-rules");
        data.display_rules = sessionStorage.getItem("display-logic-rules");
        data.iscompliance = iscompliance;
        data.iskioskform = kiosk_form;

        //Titles input
        titlesInput.each(function () {
            data[$(this).attr('name')] = $(this).val();
        });
        if (validate_logic_form_fields(json) === false) {
            return;
        }


        if ($('#form-builder-block .enforce_session_section .rule').length > 0) {
            var ruleList = [];
            var filterRules = {
                criteria: '',
                filters: []
            }
            $('#form-builder-block .enforce_session_section .rule').each(function (index) {
                var rule = $(this);
                var field = rule.data('field');
                var operator = rule.data('operator');
                var ruleValue = rule.data('value');
                var typeField = '';
                var friendlyField = rule.find('.field_rule').first().text();
                ruleList.push({
                    fieldId: index + 1,
                    field: field,
                    typeField: typeField,
                    operator: operator,
                    comparisonValue: ruleValue,
                    friendlyFieldName: friendlyField,
                });
            });
            filterRules.filters = ruleList;
            data['enforce_session_settings'] = JSON.stringify(filterRules);
        } else {
            data['enforce_session_settings'] = null;
        }
        data['authorization_settings'] = JSON.stringify(getAuthorizedForBlock('#form-builder-block'));
        data['__RequestVerificationToken'] = requestVerificationToken;
        $.ajax({
            method: "POST",
            url: urlSite + "admin/SaveOrEditFormBuilder",
            data: data,
            beforeSend: function () {
                activeLoading();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (jsonResult.status == "ok") {
                if (isArs && jsonResult.formId != null && jsonResult.formId > 0) {
                    var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
                    sessionStorage.removeItem("json-form-builder-data-" + formTokenStore);

                    //Delete current block form if exists
                    if ($('#form-builder-block').attr('data-elementid')) {
                        currentElementId = $('#form-builder-block').attr('data-elementid');
                        $('#ars-page-conf-form div[data-element-id][data-element-id=' + currentElementId + ']').remove()
                    }

                    var addedToLocalStorage = false;
                    var _elemetId = $('#ars-page-conf-form div[data-element-id]').last().data('element-id');
                    var elementId = 0;
                    if (_elemetId != null) {
                        elementId = parseInt(_elemetId);
                    }
                    $('#form-builder-block input[name="element-id"]').val(elementId + 1);

                    //var valjson = localStorage.getItem("json-ars-data");
                    var valjson = sessionStorage.getItem("json-ars-data");

                    var jsonBlock = new Object();
                    jsonBlock.idElement = elementId + 1;
                    jsonBlock.blockId = jsonResult.blockId;
                    jsonBlock.formId = jsonResult.formId;
                    jsonBlock.type = "form";
                    jsonBlock.weight = weight;
                    if (jsonBlock.weight == 0 && isArs) {
                        jsonBlock.weight = $("#ars-page-conf-form .ars_block").length;
                    }
                    jsonBlock.isdeleted = isdeleted;

                    if (!valjson) {
                        var DataJson = [];
                        jsonBlock.idElement = 1;
                        DataJson.push(jsonBlock);

                        var hiddenInfo = JSON.stringify(DataJson);
                        //localStorage.setItem("json-ars-data", hiddenInfo);
                        sessionStorage.setItem("json-ars-data", hiddenInfo);
                        valjson = hiddenInfo;
                        addedToLocalStorage = true;
                    }

                    var DataJson = JSON.parse(valjson);
                    // Existing values in local storage
                    if (elementId == 0) {
                        DataJson.forEach(function (item) {
                            if (item.idElement > jsonBlock.idElement) {
                                jsonBlock.idElement = item.idElement;
                            }
                        });
                        jsonBlock.idElement = jsonBlock.idElement;
                        jsonBlock.weight = jsonBlock.idElement;
                        if (!addedToLocalStorage) DataJson.push(jsonBlock);

                        var hiddenInfo = JSON.stringify(DataJson);
                        //localStorage.setItem("json-ars-data", hiddenInfo);
                        sessionStorage.setItem("json-ars-data", hiddenInfo);

                        var formBlock = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.form_block + '">' +
                            '<div class="content">' + jsonResult.form_html + '</div>' +
                            '<div class="options">' +
                            '<a ' + datamodalfrom+ ' data-element-reveal="form-builder-block" title="Form" class="edit-ars-component" data-block-id="' + jsonResult.blockId + '" data-form-id="' + jsonResult.formId + '" data-element-id="' + jsonBlock.idElement + '" ></a>' +
                            '<a  title="Delete Content" class="delete-ars-component" data-block-id="' + jsonResult.blockId + '"  data-element-id="' + jsonBlock.idElement +  '"></a>' +
                            '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                            '</div>' +
                            '</div>';

                        $('#ars-page-conf .content_page').append(formBlock);

                        $('#ars-page-conf .content_page select[multiple="multiple"]').multiselect();

                        date_picker_widget();
                       
                        if ($('body').hasClass('backend-page') && $('body').hasClass('new-cms-admin-page')) {
                            initiate_jquery_validate_for_new_cms(window.translation);
                        } else {
                            initiate_jquery_validate(window.translation);
                        }
                        

                    } else {
                        var exists = false;
                        DataJson.forEach(function (item) {
                            if (item.idElement == jsonBlock.idElement) {
                                item.blockId = jsonBlock.blockId;
                                item.formId = jsonBlock.formId;
                                item.isdeleted = jsonBlock.isdeleted;
                                item.weight = jsonBlock.weight;

                                exists = true;
                                return false;
                            }
                        });

                        if (!exists) {
                            DataJson.push(jsonBlock);
                        }

                        var hiddenInfo = JSON.stringify(DataJson);
                        //localStorage.setItem("json-ars-data", hiddenInfo);
                        sessionStorage.setItem("json-ars-data", hiddenInfo);


                        var formBlock = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.form_block + '">' +
                            '<div class="content">' + jsonResult.form_html + '</div>' +
                            '<div class="options">' +
                            '<a data-element-reveal="form-builder-block" title="Form" class="edit-ars-component" data-block-id="' + jsonResult.blockId + '" data-form-id="' + jsonResult.formId + '" data-element-id="' + jsonBlock.idElement + '" ' + datamodalfrom + '></a>' +
                            '<a  title="Delete Content" class="delete-ars-component" data-block-id="' + jsonResult.blockId + '"  data-element-id="' + jsonBlock.idElement + '"></a>' +
                            '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                            '</div>' +
                            '</div>';

                        if ($('#ars-page-conf .content_page .ars_block[data-element-id=' + jsonBlock.idElement + '] .content').length > 0) {
                            $('#ars-page-conf .content_page .ars_block[data-element-id=' + jsonBlock.idElement + ']').remove();
                            $('#ars-page-conf .content_page').append(formBlock);
                        }
                        else {
                            var formBlock = '<div data-element-id="' + jsonBlock.idElement + '" class="small-12 columns ars_block blockContainer" data-block-name="' + window.translation.form_block + '">' +
                                '<div class="content">' + jsonResult.form_html + '</div>' +
                                '<div class="options">' +
                                '<a data-element-reveal="form-builder-block" title="Form" class="edit-ars-component" data-block-id="' + jsonResult.blockId + '" data-form-id="' + jsonResult.formId + '" data-element-id="' + jsonBlock.idElement + '" ' + datamodalfrom + '></a>' +
                                '<a  title="Delete Content" class="delete-ars-component" data-block-id="' + jsonResult.blockId + '"  data-element-id="' + jsonBlock.idElement + '"></a>' +
                                '<span class="move"  data-element-id="' + jsonBlock.idElement + '"></span>' +
                                '</div>' +
                                '</div>';

                            $('#ars-page-conf .content_page').append(formBlock);
                        }

                        $('#ars-page-conf .content_page select[multiple="multiple"]').multiselect();

                        date_picker_widget();

                        if ($('body').hasClass('backend-page') && $('body').hasClass('new-cms-admin-page')) {
                            initiate_jquery_validate_for_new_cms(window.translation);
                        } else {
                            initiate_jquery_validate(window.translation);
                        }

                    }

                    // Hide or show Form option available to block type dropdown
                    ars_hide_show_form_option();

                    if ($("#ars-page-conf .formBlock .processing_screen").length > 0) {
                        $("#ars-page-conf .formBlock .processing_screen").remove();
                    }
                    $("#ars-page-conf .formBlock form :input").prop("disabled", true);

                    if (!$("#ars-page-conf .formBlock form a.submit-button").hasClass('disabled')) {
                        $("#ars-page-conf .formBlock form a.submit-button").addClass("disabled");
                    }
                    if (!$("#ars-page-conf .formBlock form a.submit-button").hasClass('disabled')) {
                        $("#ars-page-conf .formBlock form a.submit-button").addClass("disabled");
                    }

                    if ($("#ars-page-conf .formBlock span.move").length > 0) {
                        $("#ars-page-conf .formBlock span.move").remove();
                    }

                    $("#form-builder-block").foundation("close");
                    finishLoading();
                } else {
                    Swal.fire({
                        title: window.translation.success,
                        text: window.translation.changes_have_been_saved,
                        icon: "success",
                        showCancelButton: false,
                        confirmButtonText: "Ok",
                        closeOnConfirm: false
                    });
                    var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
                    sessionStorage.removeItem("json-form-builder-data-" + formTokenStore);
                    if (isNewCMSFeature === true) {
                        let redirectURL = urlSite + 'customFormsCMS/Forms';
                        let returnRedirect = $('#form-builder-block').find('input[name="returnRedirect"]').val();
                        if (returnRedirect !== null && returnRedirect !== undefined && returnRedirect !== '')
                            redirectURL = returnRedirect;

                        window.location.href = redirectURL;
                    }
                    else 
                        window.location.reload();
                }
                return false;
            } else {
                Swal.fire({
                    title: window.translation.warning,
                    text: jsonResult.message,
                    icon: "error",
                    closeOnConfirm: true
                });

                finishLoading();
            }
        });
    } else {
        Swal.fire({
            title: window.translation.warning,
            icon: "warning",
            text: window.translation.add_least_a_field_type,
            confirmButtonText: "Ok"
        });

        finishLoading();
    }
    return false;

}


function initialize_form_builder_for_new(formTokenStore, ars, formSelector, modalFrom) {

    $(formSelector).find('span.code-form').text("");
    $(formSelector).find('.retrieve_info_from_salesforce').addClass("hidden");
    $(formSelector).find('.dependency-from-salesforce').hide();
    $(formSelector).find('.message_sid_querystring').addClass('hidden');
    $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
    $(formSelector).find('.save_complete_later').addClass('hidden');
    $(formSelector).find('.kiosk-form-object').addClass('hidden');
    $(formSelector).find('.payment_component_section').addClass('hidden')
    $(formSelector).find('.registration_form_profile').addClass('hidden');
    $(formSelector).find('fieldset.form-public-site-users').addClass('hidden');
    $(formSelector).find('select[name="subsite_id"]').val('0');
    $(formSelector).find('input[name="subsite_id"]').val('');
    $(formSelector).find('.subsite-settings').removeClass('hidden');
    $(formSelector).find('.disable_modal_confirm').addClass('hidden');
    $('#form-builder-block .errorEmptyTitle').hide();
    $(formSelector).find('input[name="css_class"]').val('');
    $(formSelector).find('.form-id-section-code').addClass('hidden');
    if (!ars) {
        $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').removeClass('hidden');    //  hide order section
        $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').next().removeClass('hidden');    //  hide order section
        $(formSelector).find('#form_builder_exception_url_container').prev().removeClass('hidden');
        $(formSelector).find('.delete_block').hide();
        $(formSelector).find('.required_login_row').removeClass('hidden');
        $(formSelector).find('.update_record_row').removeClass('hidden');
        $(formSelector).find('.url_redirect_to').parent().removeClass('hidden');
        $(formSelector).find('.kiosk-form-section').removeClass('hidden');
        $(formSelector).find('.kiosk-form').removeClass('hidden');
        $(formSelector).find('.disable_modal_confirm').removeClass('hidden');
        $(formSelector).find('input[name="disable_confirm_modal_after_submit"]').prop('checked', true);
        $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
        validate_include_gallery("form-builder");
        $(formSelector).find('.settings-builder-form-clone').show();
        $(formSelector).find('.additional-buttons-for-ars').hide();
        $(formSelector).find('.additional-buttons-for-ars').addClass('is-not-ars');
        if (modalFrom === 'cms') {
            $(formSelector).find('label.label_save_data_salesforce').text(window.translation.sync_data_with_salesforce);
        }

        if (IS_LLAMAPI_ENABLED === true) {
            $(formSelector).find('.update_user_information_row').removeClass('hidden');
            $(formSelector).find('.registration_from_salesforce_row').removeClass('hidden');
            $(formSelector).find('fieldset.form-public-site-users').removeClass('hidden');
        }
        
        $(formSelector).find('a.advanced-link').show();

        //$(formSelector).find('.field-list a.paymentcomponent').show();
        $(formSelector).find('#form_builder_exception_url_container').addClass('is-hidden');
    }
    else {
        //Hide fields "required login" and "update record"
        $(formSelector).find('.disable_modal_confirm').addClass('hidden');
        $(formSelector).find('.required_login_row').addClass('hidden');
        $(formSelector).find('.update_record_row').addClass('hidden');
        $(formSelector).find('.update_record_row_acc').addClass('hidden');
        $(formSelector).find('.kiosk-form-section').addClass('hidden');
        $(formSelector).find('.url_redirect_to').parent().addClass('hidden');
        $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
        $(formSelector).find('.sharing-portal-form').parent().addClass('hidden');
        $(formSelector).find('.registration_from_salesforce_row').addClass('hidden');
        $(formSelector).find('.update_user_information_row').addClass('hidden');
        validate_include_gallery("form-builder");
        $(formSelector).find('.settings-builder-form-clone').hide();
        $(formSelector).find('.additional-buttons-for-ars').hide();
        $(formSelector).find('.additional-buttons-for-ars').removeClass('is-not-ars');

        if (IS_LLAMAPI_ENABLED === true) {
            $(formSelector).find('.update_user_information_row').addClass('hidden');
            $(formSelector).find('.registration_from_salesforce_row').addClass('hidden');
        }

        //Partner Registration
        if (modalFrom === 'create-page-partner') {
            $(formSelector).find('label.label_save_data_salesforce').text(window.translation.save_data_in_salesforce);
        } else if (modalFrom === 'create-page-log-in') {
            //Login Ars
            $(formSelector).find('label.label_save_data_salesforce').text(window.translation.sync_data_with_salesforce);
        } else if (modalFrom === 'create-page-vol') {
            //Volunteer registration
            $(formSelector).find('label.label_save_data_salesforce').text(window.translation.save_data_in_salesforce);
        } else if (modalFrom === 'create-page-signup') {
            $(formSelector).find('label.label_save_data_salesforce').text(window.translation.sync_data_with_salesforce);            

        }

        //$(formSelector).find('.field-list a.paymentcomponent').hide();
        $(formSelector).find('a.advanced-link').hide();
        
    }

    $('#form-builder-block').find('.submit-row .options.quick a.logic').attr('data-field-id', '0');
    $('#form-builder-block').find('.submit-row .options.quick a.logic').attr('data-rule-id', '0');
    $('#form-builder-block').find('.submit-row .options.quick a.logic').removeClass('active');

    //Manage multiregions field
    apply_backend_multiselect_group(formSelector + ' select[name="form_build_region_multiple"]', false, '');

    if (formTokenStore != null && formTokenStore != undefined && formTokenStore.trim() != '') {
        setDataToSessionStore("", formTokenStore);
        //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, "");
    }
    cleanFormBuilderFields();
    $('#form-builder-block .form_redirection').removeClass("hidden");
    $('#form-builder-block .save_data_salesforce').removeClass("hidden");
    $('.form_builder_block > h3.title').text(window.translation.create + " " + window.translation.form);
    $('.form_builder_block input[name="form-id"]').val(0);
    $('.form_builder_block .submit-row').data('element-id', 0);
    $('.form_builder_block .submit-row button').text(window.translation.submit);
    $('.form_builder_block input[name="include_cancel_button"]').prop('checked', false);
    $('.form_builder_block .row-fields .field-row').remove();
    $('.form_builder_block .salesforce_object').addClass('hidden');
    $('.form_builder_block .salesforce_object select[name="salesforce_object"]').val('');
    $('.form_builder_block .salesforce_object_msg').addClass('hidden');
    $('.form_builder_block select[name="salesforce_object"]').empty();
    $('.form_builder_block input[name="salesforce_object_field"]').val('');
    $('.form_builder_block [name="form_builder_visibility_urls"]').val('');
    $('.form_builder_block .tabs-content input[type="text"]').val('');
    $('.form_builder_block .submit-row').addClass("hidden");
    $('.form_builder_block .submit-row').removeClass("active");
    $('.form_builder_block .blank-text').removeClass("hidden");
    $('.form_builder_block .form-preview').addClass('full-width');
    $('.form_builder_block .build-field-settings').addClass('is-hidden');
    $('.form_builder_block .field-list').removeClass('hidden');
    $(".form_builder_block  #default_datetime").prop("checked", false);
    $(".form_builder_block  #hide_placeholder").prop("checked", false);
    $(".form_builder_block .url_redirect_to").addClass("hidden");
    $('.form_builder_block input[name="isCompliance"]').val(false);
    $('.form_builder_block .update_record_row').addClass('hidden');
    $('.form_builder_block input[name="required_login"]').prop('checked', false);
    $('.form_builder_block input[name="update_record"]').prop('checked', false);
    $('.form_builder_block input[name="dont_populate_direct_account"]').prop('checked', false);
    $('.form_builder_block input[name="showTitle"]').prop("checked", true);
    $('.form_builder_block input[name="save_complete_later"]').prop("checked", false);
    $('.form_builder_block input[name="sharing_portal_form"]').prop("checked", false);
    $('.form_builder_block .sharing-portal-form-object').addClass('hidden');
    $('.form_builder_block').find('input[name="enabled"]').prop('checked', true);
    $('.form_builder_block .allow_submitted_data').addClass('hidden');
    $('.form_builder_block input[name="form_builder_allow_submitted_data"]').prop("checked", false);
    $('.form_builder_block input[name="form_builder_enable_print_button_on_form"]').prop("checked", false);

    
    remove_dependency_salesforce_fields();
    initializeDescriptionField();
    initializeCustomMessageField();
    getCustomSessionVar(formSelector);
    EventDisplayOptionsSaveDataIn();
    
}

function getCustomSessionVar(formSelector) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        url: urlSite + "admin/GetCustomSessionVariables",
        beforeSend: function () {
            activeLoading();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.code === 200) {
            var customSessionVar = JSON.parse(jsonResult.customSessionVar);
            validate_default_value_text(formSelector, customSessionVar);
        } else {
            Swal.fire({
                title: "",
                icon: "error",
                text: jsonResult.message,
                confirmButtonText: "Ok"
            });
        }
        finishLoading();
    });
}

function validate_default_value_text(formSelector, customSessionVar) {
    var data = get_data_for_autocomplete_filter_field(customSessionVar);
    $(formSelector).find('input[name="default_value_field"]').autocomplete({
        source: data,
        minLength: 2
    });
}

function remove_dependency_salesforce_fields(formSelector) {
    if ($(formSelector).find('input#populate_from_salesforce:checked').length == 0)
        $(formSelector).find('.dependency-from-salesforce').hide();
}

function displaySignatureConfigFields(formSelector){
    let required_login = ($('.form_builder_block input[name="required_login"]:checked').length > 0) ? true : false;
    if(required_login){
        $(".form_builder_block  .include-signature-transaction-info").removeClass('hidden');
    }else{
        $(".form_builder_block  .include-signature-transaction-info").addClass('hidden');
    }
}

function initialize_for_edit_form(ars, formSelector, modalFrom) {
    $('#form-builder-block .errorEmptyTitle').hide();
    $(formSelector).find('.form-id-section-code').removeClass('hidden');
    $(formSelector).find('.message_sid_querystring').addClass('hidden');
    $(formSelector).find('.kiosk-form').addClass('hidden');
    $(formSelector).find('.payment_component_section').addClass('hidden');
    if (modalFrom === 'create-page-partner') {
        $(formSelector).find('label.label_save_data_salesforce').text(window.translation.save_data_in_salesforce);
    } else if (modalFrom === 'create-page-log-in') {
        //Login Ars
        $(formSelector).find('label.label_save_data_salesforce').text(window.translation.sync_data_with_salesforce);
    } else if (modalFrom === 'create-page-vol') {
        //Volunteer registration
        $(formSelector).find('label.label_save_data_salesforce').text(window.translation.save_data_in_salesforce);
    } else if (modalFrom === 'create-page-signup') {
        $(formSelector).find('label.label_save_data_salesforce').text(window.translation.sync_data_with_salesforce);

    } else if (modalFrom === 'cms') {
        $(formSelector).find('label.label_save_data_salesforce').text(window.translation.sync_data_with_salesforce);
        $(formSelector).find('.kiosk-form').removeClass('hidden');
    }
    if (ars === true) {
        $(formSelector).find('.additional-buttons-for-ars').hide();
        $(formSelector).find('.additional-buttons-for-ars').removeClass('is-not-ars');
    } else {
        $(formSelector).find('.additional-buttons-for-ars').hide();
        $(formSelector).find('.additional-buttons-for-ars').addClass('is-not-ars');
    }
    $(formSelector).find('.dependency-from-salesforce').hide();
    $(formSelector).find('input[name="custom_parameter_name"]').val('');
    $(formSelector).find('input[name="css_class"]').val('');
    $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
    $(formSelector).find('select[name="subsite_id"]').val('0');
    $(formSelector).find('input[name="subsite_id"]').val('');
    $(formSelector).find('.subsite-settings').removeClass('hidden');
    initializeCustomMessageField();

}

function validateOnlyImage() {
    $('#file_image').on('change', function () {
        if ($(this).is(':checked')) {
            $('#csv_type').prop('disabled', 'disabled');
            $('#txt_type').prop('disabled', 'disabled');
            $('#wmv_type').prop('disabled', 'disabled');
            $('#rar_type').prop('disabled', 'disabled');
            $('#pdf_type').prop('disabled', 'disabled');
            $('#mp3_type').prop('disabled', 'disabled');
            $('#avi_type').prop('disabled', 'disabled');
            $('#doc_type').prop('disabled', 'disabled');
            $('#mp4_type').prop('disabled', 'disabled');
            $('#docx_type').prop('disabled', 'disabled');
            $('#mpeg_type').prop('disabled', 'disabled');
            $('#wav_type').prop('disabled', 'disabled');
            $('#zip_type').prop('disabled', 'disabled');
            $('#xlsx_type').prop('disabled', 'disabled');
            $('#tar_type').prop('disabled', 'disabled');            
            $('#xls_type').prop('disabled', 'disabled');
            $('.file_image_width').removeClass('hidden');
            $('.file_image_height').removeClass('hidden');
        } else {
            $('#csv_type').removeAttr('disabled');
            $('#txt_type').removeAttr('disabled');
            $('#wmv_type').removeAttr('disabled');
            $('#rar_type').removeAttr('disabled');
            $('#pdf_type').removeAttr('disabled');
            $('#mp3_type').removeAttr('disabled');
            $('#avi_type').removeAttr('disabled');
            $('#doc_type').removeAttr('disabled');
            $('#mp4_type').removeAttr('disabled');
            $('#docx_type').removeAttr('disabled');
            $('#mpeg_type').removeAttr('disabled');
            $('#wav_type').removeAttr('disabled');
            $('#zip_type').removeAttr('disabled');
            $('#xlsx_type').removeAttr('disabled');
            $('#tar_type').removeAttr('disabled');
            $('#xls_type').removeAttr('disabled');
            $('.file_image_width').addClass('hidden');
            $('.file_image_height').addClass('hidden');
        }
    });
}


function validateOnlyImageLoad() {
    if ($('#file_image').is(':checked')) {
            $('#csv_type').prop('disabled', 'disabled');
            $('#txt_type').prop('disabled', 'disabled');
            $('#wmv_type').prop('disabled', 'disabled');
            $('#rar_type').prop('disabled', 'disabled');
            $('#pdf_type').prop('disabled', 'disabled');
            $('#mp3_type').prop('disabled', 'disabled');
            $('#avi_type').prop('disabled', 'disabled');
            $('#doc_type').prop('disabled', 'disabled');
            $('#mp4_type').prop('disabled', 'disabled');
            $('#docx_type').prop('disabled', 'disabled');
            $('#mpeg_type').prop('disabled', 'disabled');
            $('#wav_type').prop('disabled', 'disabled');
            $('#zip_type').prop('disabled', 'disabled');
            $('#xlsx_type').prop('disabled', 'disabled');
            $('#tar_type').prop('disabled', 'disabled');
            $('#xls_type').prop('disabled', 'disabled');
            $('.file_image_width').removeClass('hidden');
            $('.file_image_height').removeClass('hidden');
    } else {
            $('#csv_type').removeAttr('disabled');
            $('#txt_type').removeAttr('disabled');
            $('#wmv_type').removeAttr('disabled');
            $('#rar_type').removeAttr('disabled');
            $('#pdf_type').removeAttr('disabled');
            $('#mp3_type').removeAttr('disabled');
            $('#avi_type').removeAttr('disabled');
            $('#doc_type').removeAttr('disabled');
            $('#mp4_type').removeAttr('disabled');
            $('#docx_type').removeAttr('disabled');
            $('#mpeg_type').removeAttr('disabled');
            $('#wav_type').removeAttr('disabled');
            $('#zip_type').removeAttr('disabled');
            $('#xlsx_type').removeAttr('disabled');
            $('#tar_type').removeAttr('disabled');
            $('#xls_type').removeAttr('disabled');
            $('.file_image_width').addClass('hidden');
            $('.file_image_height').addClass('hidden');
        }
}

function EnableUserUpdateInformation() {
    if (IS_LLAMAPI_ENABLED === false)
        return;
    var formSelector = "#form-builder-block";
    active_from_update_user_information = true;
    $(formSelector).find('input[name="save_data_salesforce"]').prop('checked', true);
    $(formSelector).find('input[name="registration_from_salesforce"]').prop('checked', false);
    $(formSelector).find('input[name="required_login"]').prop('checked', true);
    $(formSelector).find('input[name="update_record"]').prop('checked', true);
    $(formSelector).find('input[name="populate_from_salesforce"]').prop('checked', true);

    $('#form-builder-block').find('.update_record_row').show();
    DisplayDontPopulateAccountSetting();
    $(formSelector).find('input[name="save_data_salesforce"]').trigger('change');
}

function DisableUserUpdateInformation() {
    if (IS_LLAMAPI_ENABLED === false)
        return;
    var formSelector = "#form-builder-block";
    $(formSelector).find('select[name="salesforce_object"]').removeAttr('disabled');
    $(formSelector).find('input[name="update_user_information"]').prop('checked', false);
    $(formSelector).find('input[name="update_user_information"]').trigger('change');

}

function EnableExternalRegistration() {
    if (IS_LLAMAPI_ENABLED === false)
        return;
    var formSelector = "#form-builder-block";
    active_from_registration = true;
    $(formSelector).find('input[name="save_data_salesforce"]').prop('checked', true);
    $(formSelector).find('input[name="update_user_information"]').prop('checked', false);
    $(formSelector).find('input[name="save_data_salesforce"]').trigger('change');
    $(formSelector).find('fieldset.form-public-site-users').addClass('expanded');
}

function DisableExternalRegistration() {
    if (IS_LLAMAPI_ENABLED === false)
        return;
    var formSelector = "#form-builder-block";
    $(formSelector).find('select[name="salesforce_object"]').removeAttr('disabled');
    $(formSelector).find('select[name="salesforce_object"]').val('');
    $(formSelector).find('input[name="registration_from_salesforce"]').prop('checked', false);
    $(formSelector).find('input[name="registration_from_salesforce"]').trigger('change');
    $(formSelector).find('fieldset.form-public-site-users').removeClass('expanded');
}

function DisplayDontPopulateAccountSetting() {
    var formSelector = "#form-builder-block";
    var sfObject = $(formSelector).find('select[name="salesforce_object"]').val();
    var updateRecord = $(formSelector).find('input[name="update_record"]').is(':checked');
    if (sfObject === 'Account' && updateRecord === true) {
        $(formSelector).find('.update_record_row_acc').removeClass('hidden');
    } else {
        $(formSelector).find('.update_record_row_acc').addClass('hidden');
    }
}


function DisplayExternalRegistrationFields() {
    if (IS_LLAMAPI_ENABLED === false)
        return;

    //verify if there is a field for username
    var formSelector = "#form-builder-block";
    if ($(formSelector).find('.row-fields .field-row.external-registration-username').length > 0) {
        active_from_registration = false;
        active_from_update_user_information = false;
    } else {
        $(formSelector).find('.field-list a.move-field.email').trigger('click');
    }

    

}


function PopulateFromBlockWithTemporalData() {
    if ($('.formBlock').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $('.formBlock').each(function() {
            var self = $(this);
            
            var save_complete_later_enable = self.find('input[name="save_complete_later_enable"]').val();
            var formId = self.data('form-id');

            if (save_complete_later_enable === 'true') {
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetFieldsWithTemporaryData",
                    data: { formId: formId },
                    beforeSend: function () {
                        self.find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult && jsonResult['code'] === 200) {
                        if (jsonResult['fields']) {
                            var resultfields = jsonResult['fields'];
                            Object.keys(resultfields).forEach(function (key) {
                                var field = resultfields[key];
                                
                                if (field && field.type !== null) {
                                    if (field.value) {
                                        switch (field.type) {
                                            case 'textbox':
                                            case 'currency':
                                            case 'url':
                                            case 'email':
                                                let fieldSection = self.find('input[name="'+ key +'[value]"]').first().parent();
                                                if (fieldSection.find('input[type="hidden"]').first().attr('data-field-type') == 'signature') {
                                                    let currentValue = field.value;
                                                    currentValue = (currentValue.startsWith('https://localhost/'))?currentValue.replace('https://localhost/', 'https://localhost:44300/'):currentValue;
                                                    fieldSection.find('img.default-signature').remove();
                                                    fieldSection.find('span.signature_pad').hide();
                                                    fieldSection.find('span.signature_pad').after($('<img class="default-signature" src="' + currentValue + '">'));
                                                    fieldSection.find('input[type="hidden"]').first().val(currentValue);
                                                }else{
                                                    self.find('input[name="'+ key +'[value]"]').first().val(field.value);
                                                }
                                                break;
                                            case 'formula':
                                                self.find('div.formula-data-section').first().html('<p>' + value + '</p>');
                                                break;
                                            case 'textarea':
                                                var isRichText = (self.find('textarea[name="'+key+'[value]"].rich_text').length > 0) ? true : false
                                                if(isRichText) {
                                                    var textareaId = key +'[value]';
                                                    setTimeout(function(){ 
                                                        if (CKEDITOR.instances[textareaId]) {
                                                            self.find('textarea[name="'+ key +'[value]"]').first().val(field.value);
                                                            CKEDITOR.instances[textareaId].setData(field.value);
                                                        }
                                                    }, 1000);
                                                } else {
                                                    self.find('textarea[name="'+ key +'[value]"]').first().val(field.value);
                                                    self.find('textarea[name="'+ key +'[value]"]').first().trigger("change");
                                                }
                                                break;
                                            case 'hidden':
                                                self.find('input[name="'+ key +'[value]"]').first().val(field.value);
                                                break;
                                            case 'number':
                                                self.find('input[name="'+ key +'[value]"]').first().val(field.value);
                                                self.find('input[name="'+ key +'[value]"]').first().trigger("change");
                                                break;
                                            case 'select':
                                                self.find('select[name="'+ key +'[value]"]').first().val(field.value);
                                                self.find('select[name="'+ key +'[value]"]').first().trigger("change");
                                                break;
                                            case 'multiple':
                                                if (Array.isArray(field.value) && field.value.length > 0) {
                                                    self.find('select[name="'+ key +'[value][]"]').first().val(field.value);
                                                    self.find('select[name="'+ key +'[value][]"]').first().trigger("change");
                                                    self.find('select[name="'+ key +'[value][]"]').first().multiselect('reload');
                                                }
                                                break;
                                            case 'tel':
                                                var telInput = self.find('input[name="' + key + '[value]"]').get(0);
                                                var iti = window.intlTelInputGlobals.getInstance(telInput);
                                                iti.setNumber(field.value);
                                                //self.find('input[name="'+ key +'[value]"]').first().intlTelInput('setNumber', field.value);
                                                break;
                                            case 'radio':
                                                    self.find('input[type="radio"][value="' + field.value + '"]').prop('checked', true);
                                                    self.find('input[type="radio"][value="' + field.value + '"]').trigger("change");
                                                break;
                                            case 'checkbox':
                                                    var fieldValue = (field.value === 'true') ? true : false;
                                                    self.find('input[name="'+ key +'[value]"]').first().prop('checked', fieldValue);
                                                    self.find('input[name="'+ key +'[value]"]').first().trigger("change");
                                                break;
                                            case 'datetime':
                                                self.find('input[name="'+ key +'[value]"]').first().val(field.value);
                                                self.find('input[name="'+ key +'[value]"]').first().trigger('changeDate');
                                                break;
                                            case 'datetime_time':
                                                self.find('input[name="'+ key +'[value]"]').first().val(field.value);
                                                if(field.hour) {
                                                    self.find('input[name="'+ key +'[hour]"]').first().val(field.hour);
                                                }
                                                if(field.minute) {
                                                    self.find('input[name="'+ key +'[minute]"]').first().val(field.minute);
                                                }
                                                self.find('input[name="'+ key +'[value]"]').first().trigger('changeDate');                                                
                                                break;
                                            case 'file':
                                                let file_field = self.find('input[name="'+ key +'[value]"]').first();
                                                setFileInputFromUrl(file_field, field.value);
                                                break;
                                        }
                                    }
                                }
                            });
                        }
                    }

                    self.find('.processing_screen').hide();
                });
            }
        });
    }
}

function initializeConfirmationMessageField() {
    if (!is_backend_page()) return;
    $('.form_builder_block  .confirmation-message-textarea').each(function () {
        var textArea = $(this).find('textarea').first();
        var languageId = textArea.data('language-id');
        initialize_ckeditor_formbuilder('confirm-messsage-textarea-', languageId);
        if (CKEDITOR.instances['confirm-messsage-textarea-' + languageId]) {
            CKEDITOR.instances['confirm-messsage-textarea-' + languageId].on('change', function () {
                CKEDITOR.instances['confirm-messsage-textarea-' + languageId].updateElement();
            });
        }
    });


}


function initializeCustomMessageField() {
    if (!is_backend_page()) return;
    $('.form_builder_block  .custom-message-textarea').each(function () {
        var textArea = $(this).find('textarea').first();
        var languageId = textArea.data('language-id');
        initialize_ckeditor_formbuilder('custom-messsage-textarea-', languageId);
        if (CKEDITOR.instances['custom-messsage-textarea-' + languageId]) {
            CKEDITOR.instances['custom-messsage-textarea-' + languageId].on('change', function () {
                CKEDITOR.instances['custom-messsage-textarea-' + languageId].updateElement();
            });
        }
    });


}

function EventsValidateColumnsNumber() {
    if (!is_backend_page()) return;
    $(document).on('change', '.form_builder_block select[name="columns_number"]', function () {
        var columnsVal = $(this).val();
        if(columnsVal !== '1') {
            $(".form_builder_block .field-row.active .section-container").attr('class', 'section-container columns'+columnsVal);
        } else {
            $(".form_builder_block .field-row.active .section-container").attr('class', 'section-container');
        }
    });
}

function EventActiveBorder(section_border_sttus) {

    if (!is_backend_page()) return;
    if(section_border_sttus=='active') {
        $('#form-builder-block .columns.section_border_for').removeClass('hidden');
    }else{
        $('#form-builder-block .columns.section_border_for').addClass('hidden');
    }

    $('#form-builder-block #section_border_option').change(function(event) {
        if($(this).is(':checked')) {
            $('#form-builder-block .columns.section_border_for').removeClass('hidden');
        }else{
            $('#form-builder-block .columns.section_border_for').addClass('hidden');
        }
    });

}

function  isEncriptedFieldFromElement(element) {
    let isEncrypted = false;

    if (element !== null && element !== undefined) {
        let richTextProperty = element.properties.find(x => x.name == "encrypted");
        if (richTextProperty !== null && richTextProperty !== undefined) {

            if (richTextProperty.value != "" && (richTextProperty.value == true || richTextProperty.value == "on")) {
                isEncrypted = true;
            }
        }
    }

    return isEncrypted;
}

function isMultipleFileFromElement(element) {
    let isMultipleFile = false;

    if (element !== null && element !== undefined) {
        let myProperty = element.properties.find(x => x.name == "multiple_files");
        if (myProperty !== null && myProperty !== undefined) {
            if (myProperty.value != "" && (myProperty.value == true || myProperty.value == "on")) {
                isMultipleFile = true;
            }
        }
    }
    return isMultipleFile;

}


function isFieldRichTextFromElement(element) {
    let isRichText = false;

    if (element !== null && element !== undefined) {
        let richTextProperty = element.properties.find(x => x.name == "rich_text");
        if (richTextProperty !== null && richTextProperty !== undefined) {

            if (richTextProperty.value != "" && (richTextProperty.value == true || richTextProperty.value == "on")) {
                isRichText = true;
            }
        }
    }

    return isRichText;

}

function setDataToSessionStore(json, formTokenStore) {
    if (json === "")
        sessionStorage.setItem("json-form-builder-data-" + formTokenStore, "");
    else
        sessionStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(json));
}

async function generate_html_options_salesforce(elementId, salesforceObj, salesforcefield, defaultValue, blockId){
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var selectField = $('#form-builder div[data-element-id="'+elementId+'"] select.select-preview');
    var languageId = $('#form-builder .title_row .tabs-title.is-active a').attr('data-language-id');
    var defaultValue = (defaultValue) ? JSON.parse(defaultValue) : '';

    let responseForFields = await GetPickListValuesForField(salesforceObj, blockId, salesforcefield);
    
    if (responseForFields !== null && responseForFields !== undefined &&
        responseForFields.values !== null && responseForFields.values !== undefined &&
        responseForFields.values.length > 0) {
        selectField.html("");
        $.each(responseForFields.values, function (i, option) {
            selectField.append('<option value="' + option['value'] + '">' + option['label'] + '</option>');
        });

        if (defaultValue) {
            for (var item = defaultValue.length - 1; item >= 0; item--) {
                if (languageId == defaultValue[item].language) {
                    selectField.val(defaultValue[item].value);
                }
            }
        }
    }
    /*$.ajax({
        method: "POST",
        url: urlSite + "Admin/GetValuesFromSFField",
        data: { sfObject: salesforceObj, sfField: salesforcefield },
        beforeSend: function () {
            $('#form-builder').find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonData = (data) ? JSON.parse(data) : '';
        if (jsonData && jsonData['status'] == "ok") {
            selectField.html("");
            $.each(jsonData['values'], function (i, option) {
                selectField.append('<option value="' + option['value'] + '">' + option['label'] + '</option>');
            });
                if (defaultValue) {
                    for (var item = defaultValue.length - 1; item >= 0; item--) {                    
                        if(languageId == defaultValue[item].language){
                            selectField.val(defaultValue[item].value);
                        }
                    }
                }
        } else {
            console.error('Error trying to get values from SF.');
        }
        $('#form-builder').find('.processing_screen').hide();
    });*/
}

async function add_default_values_for_picklist_from_salesforce(defaultValue) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var salesforcefield = $('#form-builder select[name="salesforce_field"]').val();
    var salesforceObj = $('#form-builder select[name="salesforce_object"]').val();
    var blockId = $('#form-builder-block').find('input[name="block_id"]').val();
    if (salesforceObj === 'Both_User') {
        salesforceObj = $('#form-builder select[name="salesforce_field"]').find('option[value="' + salesforcefield + '"]').attr('data-object');
    }
    else if (salesforceObj === 'Both_Organization') {
        salesforceObj = $('#form-builder select[name="salesforce_field"]').find('option[value="' + salesforcefield + '"]').attr('data-object');
    }
    else if (salesforceObj === '') {
        finishLoading();
    }

    if ($('#form-builder select[name="pull_values_sf_source"]').length > 0 && 
        $('#form-builder select[name="pull_values_sf_source"]').val() == 1 &&
        (salesforcefield != undefined && salesforcefield != null && salesforcefield != 'none') &&
        (salesforceObj != undefined && salesforceObj != null && salesforceObj != '')) {

        $('#form-builder').find('ul.tabs li a').each(function () {
            var languageId = $(this).attr('data-language-id');
            $('#form-builder').find('textarea#options-textarea-' + languageId).val('');
        });

        var selectField = $('#form-builder').find('select.default_value_dropdown_simple');
        if (selectField != null && selectField != undefined) {
            selectField.empty();
            selectField.append('<option value="">' + window.translation.select_one + '</option>');
            let responseForFields = await GetPickListValuesForField(salesforceObj, blockId, salesforcefield);
            if (responseForFields !== null && responseForFields !== undefined &&
                responseForFields.values !== null && responseForFields.values !== undefined &&
                responseForFields.values.length > 0) {
                //var preview_select = $('#form-builder').find('.field-row.active select[name="select-preview"]');
                var get_default_value = $('#form-builder .default_value_dropdown_simple').val();
                $.each(responseForFields.values, function (i, option) {
                    selectField.append('<option value="' + option['value'] + '">' + option['label'] + '</option>');
                    //preview_select.append('<option value="' + option['value'] + '">' + option['label'] + '</option>');
                });
                if (defaultValue) {
                    defaultValue = JSON.parse(defaultValue);
                    for (var i = defaultValue.length - 1; i >= 0; i--) {
                        $('#form-builder select[name="' + defaultValue[i].name + '"]').val(defaultValue[i].value);
                    }
                    //var get_default_value = $('#form-builder .default_value_dropdown_simple').val();
                    //preview_select.val(get_default_value);
                }

            }
            finishLoading();

        }


    } else {
        var selectField = $('#form-builder').find('select.default_value_dropdown_simple');
        if (selectField != null && selectField != undefined) {
            selectField.empty();
            selectField.append('<option value="">' + window.translation.select_one + '</option>');
        }
        finishLoading();

    }

    $('#form-builder').find('.dropdown_field').removeClass('hidden');
    
}


function ratingScaleValidation(displayAs) {
    if (!is_backend_page()) return;

    if (displayAs == '0') {
        $(".form_builder_block .show_format").removeClass('hidden');
        $(".form_builder_block .step_value").addClass('hidden');
        $(".form_builder_block .textRatingScale").addClass('hidden');
        $(".form_builder_block .scale_color_section").addClass('hidden');
        $(".form_builder_block .validatior_code_text").addClass('hidden');
    }else if (displayAs == '2' || displayAs == '3' || displayAs == '4') {
        $(".form_builder_block .textRatingScale").removeClass('hidden');
        $(".form_builder_block .scale_color_section").removeClass('hidden');
        $(".form_builder_block .step_value").removeClass('hidden');
        $(".form_builder_block .show_format").addClass('hidden');
        $(".form_builder_block .validatior_code_text").addClass('hidden');
    } else if (displayAs == '4') {
        $(".form_builder_block .show_format").removeClass('hidden');
        $(".form_builder_block .step_value").addClass('hidden');
        $(".form_builder_block .textRatingScale").addClass('hidden');
        $(".form_builder_block .scale_color_section").addClass('hidden');
        $(".form_builder_block .validatior_code_text").removeClass('hidden');
    }
    else {
        $(".form_builder_block .textRatingScale").addClass('hidden');
        $(".form_builder_block .scale_color_section").addClass('hidden');
        $(".form_builder_block .show_format").addClass('hidden');
        $(".form_builder_block .validatior_code_text").addClass('hidden');
        $(".form_builder_block .step_value").removeClass('hidden');

    }

    /*
    $(document).on('change', '.form_builder_block input[name="show_format"]', function () {
        if ($(this).is(':checked')) {
            $(".form_builder_block .build-field-settings .step_value").addClass('hidden');
        } else {
            $(".form_builder_block .build-field-settings .step_value").removegClass('hidden');
        }
    });*/

   
}


function ratingScaleValidationPicklist(displayPicklistMode) {
    if (!is_backend_page()) return;
    if (displayPicklistMode == '1' || displayPicklistMode == '2' || displayPicklistMode == '6') {
        $(".form_builder_block .textRatingScale").removeClass('hidden');
        $(".form_builder_block .scale_color_section").removeClass('hidden');
    } else {
        $(".form_builder_block .textRatingScale").addClass('hidden');
        $(".form_builder_block .scale_color_section").addClass('hidden');

    }

    if (displayPicklistMode == '3') {
        $(".form_builder_block .display_inline_inputs").removeClass('hidden');

    } else {
        $(".form_builder_block .display_inline_inputs").addClass("hidden");
    }
}

function isLabelDiferent() {
    var input = $('.form_builder_block input[name="is_label_diferent"]');
    if (input.is(':checked')) {
        $(".form_builder_block .dropdown-options-labels").removeClass('hidden');
        $(".form_builder_block .option-values").removeClass('hidden');
        $(".form_builder_block .label-options-reloaded").addClass('hidden');
    } else {
        $(".form_builder_block .dropdown-options-labels").addClass('hidden');
        $(".form_builder_block .option-values").addClass('hidden');
        $(".form_builder_block .label-options-reloaded").removeClass('hidden');
    }

    $(document).on('change', '.form_builder_block input[name="is_label_diferent"]', function () {

        if ($(this).is(':checked')) {
            $(".form_builder_block .dropdown-options-labels").removeClass('hidden') 
            $(".form_builder_block .option-values").removeClass('hidden');
            $(".form_builder_block .label-options-reloaded").addClass('hidden');
        } else {
            $(".form_builder_block .dropdown-options-labels").addClass('hidden');
            $(".form_builder_block .option-values").addClass('hidden');
            $(".form_builder_block .label-options-reloaded").removeClass('hidden');
        }
    });
}

function alignLabelBehavior() {
    var input = $('.form_builder_block input[name="hide_label"]');
    if (input.is(':checked')) {
        $(".form_builder_block .align_label_section").addClass('hidden');
    } else {
        $(".form_builder_block .align_label_section").removeClass('hidden');
    }

    $(document).on('change', '.form_builder_block input[name="hide_label"]', function () {

        if ($(this).is(':checked')) {
            $(".form_builder_block .align_label_section").addClass('hidden');
        } else {
            $(".form_builder_block .align_label_section").removeClass('hidden');
        }
    });
}
function populate_calculate_fields(valueSelected) {
    var options = CalculateItemsOptions();
    
    $("#form-builder-block select.select_calculate_items").multiselect('unload');
    $("#form-builder-block select.select_calculate_items").html('');
    $("#form-builder-block select.select_calculate_items").append(options);

    if ($('#form-builder-block .calculate_items .ms-options-wrap.ms-has-selections').length > 0) {
        $('#form-builder-block .calculate_items .ms-options-wrap.ms-has-selections').remove();
    }

    if (valueSelected != null) {
        var values = valueSelected.toString().split(',');
        $("#form-builder-block select.select_calculate_items").val(values);
    }
    //$("#form-builder-block select.select_calculate_items").multiselect('reload');
    setTimeout(function () {
        $("#form-builder-block select.select_calculate_items").multiselect({
            'selectAll': true,
            'columns': 1,
            'showCheckbox': true,
            'texts': {
                placeholder: window.translation.select_options,
                search: window.translation.search,
                selectedOptions: ' ' + window.translation.selected,
                selectAll: window.translation.select_all,
                unselectAll: window.translation.unselect_all
            }
        });
        AsignValueCalculateItems();

        $("#form-builder-block select.select_calculate_items").multiselect('reload');
    }, 500);
}

function populate_select_field_maximum_value(valueSelected) {
    var options = CalculateItemsOptions();
    $("#form-builder-block select.select_field_maximum_value").html('');
    $("#form-builder-block select.select_field_maximum_value").append(options);
    if (valueSelected != null) {
        $("#form-builder-block select.select_field_maximum_value").val(valueSelected);
    }
}
function populate_select_field_minimum_value(valueSelected) {
    var options = CalculateItemsOptions();
    $("#form-builder-block select.select_field_minimum_value").html('');
    $("#form-builder-block select.select_field_minimum_value").append(options);
    if (valueSelected != null) {
        $("#form-builder-block select.select_field_minimum_value").val(valueSelected);
    }
}
function AsignValueCalculateItems() {
    $(document).on('change', '.form_builder_block .select_calculate_items', function () {
        var values = $(this).val();
        $(this).siblings('input[name="calculate_items"]').val(values);
    });
}

function borderOptionBehavior() {
    var input = $('.form_builder_block input[name="section_border_option"]');
    if (input.is(':checked')) {
        $(".form_builder_block .section_border_for").removeClass('hidden');
    } else {
        $(".form_builder_block .section_border_for").addClass('hidden');
    }

    $(document).on('change', '.form_builder_block input[name="section_border_option"]', function () {

        if ($(this).is(':checked')) {
            $(".form_builder_block .section_border_for").removeClass('hidden')
        } else {
            $(".form_builder_block .section_border_for").addClass('hidden');
        }
    });
}


function ValidateAccessToAdvancedSettings() {
    if (!is_backend_page()) return;
    var selector = "#form-builder-block";
    $(selector).find('a.link-to-advanced-settings').on('click', function () {
        if ($(selector).find('#form-builder-advanced-settings').hasClass('is-hidden')) {
            $(selector).find('a.advanced-link').trigger('click');
        }
        $('#form-builder-block').animate({
            scrollTop: $('#form-builder-block a[name="form-builder-advanced-settings-section"]').offset().top - 60
        }, 'slow', function () {
            
            
        });

        

        return false;
    });
}
function prepare_address_component_field_element_for_json(type_field, elementId, sectionId, order, label, dropdownType, additionalCssClass, placeHolder) {
    //dropdownType =0 states, 1 = country
    JsonObject = new Object();
    JsonObject.elementId = elementId;
    JsonObject.typeField = type_field;
    JsonObject.delete = false;
    JsonObject.weight = order;
    JsonObject.ruleId = 0;
    JsonObject.fieldId = '';
    additionalCssClass += ' address-component';
    let countryOptions = [];
    let isCountryField = false;

    if (placeHolder === undefined)
        placeHolder = '';

    if (type_field == 'addresscomponent') {
        JsonObject.columns_number = 2;
        $('.form_builder_block form select[name="columns_number"]').val("2");
    } else if (type_field == 'dropdown' && dropdownType == 1) {
        countryOptions = get_options_for_country_textarea();
        isCountryField = true;

        $('.form_builder_block form select[name="columns_number"]').val();

    } else if (type_field == 'hidden') {
        $('.form_builder_block form input[name="placeholder_field"]').val(placeHolder);
    } else {

        $('.form_builder_block form select[name="columns_number"]').val();
        $('.form_builder_block form input[name="placeholder_field"]').val('');
    }

    //multilanguage fields
    $('form#form-builder .field-configuration .tabs-content .tabs-panel').each(function () {
        var lanId = $(this).data('language-id');

        $('.form_builder_block form input#label-' + lanId).val(label);

        if (isCountryField == true) {
            $('.form_builder_block form textarea#options-textarea-' + lanId).val(countryOptions);
            $('.form_builder_block form input#options-' + lanId).val(JSON.stringify(countryOptions.split('\n')));
        } else {
            $('.form_builder_block form textarea#options-textarea-' + lanId).val('');
            $('.form_builder_block form input#options-' + lanId).val('');
        }
    });


    $('.form_builder_block select[name="type_field"]').val(type_field);
    $('#form-builder-block').find('input[name="last-type-field-selected"]').val(type_field);

    
    $('.form_builder_block form input[name="custom_cssclass"]').val(additionalCssClass);

    JsonObject.properties = $('.form_builder_block form').serializeArray();

    JsonObject.sectionId = sectionId;

    return JsonObject;
}

function get_options_for_country_textarea() {
    return 'Select\nAfghanistan\nAlbania\nAlgeria\nAndorra\nAnguilla\nAngola\nAntigua and Barbuda\nArgentina\nArmenia\nAruba\nAustralia\nAustria\nAzerbaijan\nBahamas\nBahrain\nBangladesh\nBarbados\nBelarus\nBelgium\nBelize\nBenin\nBermuda\nBhutan\nBolivia\nBosnia and Herzegovina\nBotswana\nBrazil\nBritish Indian Ocean Territory\nBrunei\nBulgaria\nBurkina Faso\nBurundi\nCambodia\nCameroon\nCanada\nCape Verde\nCayman Islands\nCentral African RepublicChad\nChile\nChina\nChristmas IslandCocos Islands\nColombia\nComoros\nCook Islands\nCongo\nCosta Rica\nCôte d\'Ivoire\nCroatia\nCuba\nCyprus\nCzech Republic\nDenmark\nDjibouti\nDRC\nDominica\nDominican Republic\nEcuador\nEgypt\nEl Salvador\nEquatorial Guinea\nEritrea\nEstonia\nEthiopia\nFiji\nFinland\nFrance\nFrench Guiana\nGabon\nGambia\nGermany\nGhana\nGreenland\nGreece\nGrenada\nGuadeloupe\nGuatemala\nGuinea\nGuinea-Bissau\nGuyana\nHaiti\nHonduras\nHong Kong\nHungary\nIceland\nIndia\nIndonesia\nIran\nIraq\nIreland\nIsrael\nItaly\nIvory Coast\nJamaica\nJapan\nJordan\nKazakhstan\nKenya\nKiribati\nKuwait\nKyrgyzstan\nLaos\nLatvia\nLebanon\nLesotho\nLiberia\nLibya\nLiechtenstein\nLithuania\nLuxembourg\nMacau\nMacedonia\nMadagascar\nMalawi\nMalaysia\nMaldives\nMali\nMalta\nMartinique\nMauritania\nMauritius\nMexico\nMicronesia\nMoldova\nMonaco\nMongolia\nMontenegro\nMontserrat\nMorocco\nMozambique\nMyanmar\nNamibia\nNauru\nNepal\nNetherlands\nNetherlands Antilles\nNew Zealand\nNicaragua\nNiger\nNigeria\nNiue\nNorth Korea\nNorway\nOman\nPakistan\nPanama\nPapua New Guinea\nParaguay\nPeru\nPhilippines\nPitcairn Islands\nPoland\nPortugal\nQatar\nReunion\nRomania\nRussia\nRwanda\nSaint Helena\nSaint Kitts and Nevis\nSaint Vincent and the Grenadines\nSaint Lucia\nSamoa\nSan Marino\nSanto Tom&eacute; y Pr&iacute;ncipe\nSaudi Arabia\nSenegal\nSerbia\nSeychelles\nSierra Leone\nSingapore\nSlovakia\nSlovenia\nSolomon Islands\nSomalia\nSouth Africa\nSouth Korea\nSpain\nSri Lanka\nSudan\nSuriname\nSwaziland\nSweden\nSwitzerland\nSyria\nTaiwan\nTajikistan\nTanzania\nThailand\nTimor-Leste\nTokelau\nTogo\nTonga\nTrinidad and Tobago\nTunisia\nTurkey\nTurkmenistan\nTuvalu\nUganda\nUkraine\nUnited Arab Emirates\nUnited Kingdom\nUnited States\nUruguay\nUS Virgin Islands\nUzbekistan\nWallis Futuna\nVanuata\nVenezuela\nVietnam\nYemen\nZambia\nZimbabwe';
}

function get_options_for_country_dropdown() {
    return '<option value="">Select</option><option value="Afghanistan">Afghanistan</option><option value="Albania">Albania</option><option value="Algeria">Algeria</option><option value="Andorra">Andorra</option><option value="Anguilla">Anguilla</option><option value="Angola">Angola</option><option value="Antigua and Barbuda">Antigua and Barbuda</option><option value="Argentina">Argentina</option><option value="Armenia">Armenia</option><option value="Aruba">Aruba</option><option value="Australia">Australia</option><option value="Austria">Austria</option><option value="Azerbaijan">Azerbaijan</option><option value="Bahamas">Bahamas</option><option value="Bahrain">Bahrain</option><option value="Bangladesh">Bangladesh</option><option value="Barbados">Barbados</option><option value="Belarus">Belarus</option><option value="Belgium">Belgium</option><option value="Belize">Belize</option><option value="Benin">Benin</option><option value="Bermuda">Bermuda</option><option value="Bhutan">Bhutan</option><option value="Bolivia">Bolivia</option><option value="Bosnia and Herzegovina">Bosnia and Herzegovina</option><option value="Botswana">Botswana</option><option value="Brazil">Brazil</option><option value="British Indian Ocean Territory">British Indian Ocean Territory</option><option value="Brunei">Brunei</option><option value="Bulgaria">Bulgaria</option><option value="Burkina Faso">Burkina Faso</option><option value="Burundi">Burundi</option><option value="Cambodia">Cambodia</option><option value="Cameroon">Cameroon</option><option value="Canada">Canada</option><option value="Cape Verde">Cape Verde</option><option value="Cayman Islands">Cayman Islands</option><option value="Central African Republic">Central African Republic</option><option value="Chad">Chad</option><option value="Chile">Chile</option><option value="China">China</option><option value="Christmas Island">Christmas Island</option><option value="Cocos Islands">Cocos Islands</option><option value="Colombia">Colombia</option><option value="Comoros">Comoros</option><option value="Cook Islands">Cook Islands</option><option value="Congo">Congo</option><option value="Costa Rica">Costa Rica</option><option value="Côte d\'Ivoire">Côte d\'Ivoire</option><option value="Croatia">Croatia</option><option value="Cuba">Cuba</option><option value="Cyprus">Cyprus</option><option value="Czech Republic">Czech Republic</option><option value="Denmark">Denmark</option><option value="Djibouti">Djibouti</option><option value="DRC">DRC</option><option value="Dominica">Dominica</option><option value="Dominican Republic">Dominican Republic</option><option value="Ecuador">Ecuador</option><option value="Egypt">Egypt</option><option value="El Salvador">El Salvador</option><option value="Equatorial Guinea">Equatorial Guinea</option><option value="Eritrea">Eritrea</option><option value="Estonia">Estonia</option><option value="Ethiopia">Ethiopia</option><option value="Fiji">Fiji</option><option value="Finland">Finland</option><option value="France">France</option><option value="French Guiana">French Guiana</option><option value="Gabon">Gabon</option><option value="Gambia">Gambia</option><option value="Germany">Germany</option><option value="Ghana">Ghana</option><option value="Greenland">Greenland</option><option value="Greece">Greece</option><option value="Grenada">Grenada</option><option value="Guadeloupe">Guadeloupe</option><option value="Guatemala">Guatemala</option><option value="Guinea">Guinea</option><option value="Guinea - Bissau">Guinea-Bissau</option><option value="Guyana">Guyana</option><option value="Haiti">Haiti</option><option value="Honduras">Honduras</option><option value="Hong Kong">Hong Kong</option><option value="Hungary">Hungary</option><option value="Iceland">Iceland</option><option value="India">India</option><option value="Indonesia">Indonesia</option><option value="Iran">Iran</option><option value="Iraq">Iraq</option><option value="Ireland">Ireland</option><option value="Israel">Israel</option><option value="Italy">Italy</option><option value="Ivory Coast">Ivory Coast</option><option value="Jamaica">Jamaica</option><option value="Japan">Japan</option><option value="Jordan">Jordan</option><option value="Kazakhstan">Kazakhstan</option><option value="Kenya">Kenya</option><option value="Kiribati">Kiribati</option><option value="Kuwait">Kuwait</option><option value="Kyrgyzstan">Kyrgyzstan</option><option value="Laos">Laos</option><option value="Latvia">Latvia</option><option value="Lebanon">Lebanon</option><option value="Lesotho">Lesotho</option><option value="Liberia">Liberia</option><option value="Libya">Libya</option><option value="Liechtenstein">Liechtenstein</option><option value="Lithuania">Lithuania</option><option value="Luxembourg">Luxembourg</option><option value="Macau">Macau</option><option value="Macedonia">Macedonia</option><option value="Madagascar">Madagascar</option><option value="Malawi">Malawi</option><option value="Malaysia">Malaysia</option><option value="Maldives">Maldives</option><option value="Mali">Mali</option><option value="Malta">Malta</option><option value="Martinique">Martinique</option><option value="Mauritania">Mauritania</option><option value="Mauritius">Mauritius</option><option value="Mexico">Mexico</option><option value="Micronesia">Micronesia</option><option value="Moldova">Moldova</option><option value="Monaco">Monaco</option><option value="Mongolia">Mongolia</option><option value="Montenegro">Montenegro</option><option value="Montserrat">Montserrat</option><option value="Morocco">Morocco</option><option value="Mozambique">Mozambique</option><option value="Myanmar">Myanmar</option><option value="Namibia">Namibia</option><option value="Nauru">Nauru</option><option value="Nepal">Nepal</option><option value="Netherlands">Netherlands</option><option value="Netherlands Antilles">Netherlands Antilles</option><option value="New Zealand">New Zealand</option><option value="Nicaragua">Nicaragua</option><option value="Niger">Niger</option><option value="Nigeria">Nigeria</option><option value="Niue">Niue</option><option value="North Korea">North Korea</option><option value="Norway">Norway</option><option value="Oman">Oman</option><option value="Pakistan">Pakistan</option><option value="Panama">Panama</option><option value="Papua New Guinea">Papua New Guinea</option><option value="Paraguay">Paraguay</option><option value="Peru">Peru</option><option value="Philippines">Philippines</option><option value="Pitcairn Islands">Pitcairn Islands</option><option value="Poland">Poland</option><option value="Portugal">Portugal</option><option value="Qatar">Qatar</option><option value="Reunion">Reunion</option><option value="Romania">Romania</option><option value="Russia">Russia</option><option value="Rwanda">Rwanda</option><option value="Saint Helena">Saint Helena</option><option value="Saint Kitts and Nevis">Saint Kitts and Nevis</option><option value="Saint Vincent and the Grenadines">Saint Vincent and the Grenadines</option><option value="Saint Lucia">Saint Lucia</option><option value="Samoa">Samoa</option><option value="San Marino">San Marino</option><option value="SÃ£o TomÃ© and PrÃ & shy; ncipe">SÃ£o TomÃ© and PrÃ&shy;ncipe</option><option value="Saudi Arabia">Saudi Arabia</option><option value="Senegal">Senegal</option><option value="Serbia">Serbia</option><option value="Seychelles">Seychelles</option><option value="Sierra Leone">Sierra Leone</option><option value="Singapore">Singapore</option><option value="Slovakia">Slovakia</option><option value="Slovenia">Slovenia</option><option value="Solomon Islands">Solomon Islands</option><option value="Somalia">Somalia</option><option value="South Africa">South Africa</option><option value="South Korea">South Korea</option><option value="Spain">Spain</option><option value="Sri Lanka">Sri Lanka</option><option value="Sudan">Sudan</option><option value="Suriname">Suriname</option><option value="Swaziland">Swaziland</option><option value="Sweden">Sweden</option><option value="Switzerland">Switzerland</option><option value="Syria">Syria</option><option value="Taiwan">Taiwan</option><option value="Tajikistan">Tajikistan</option><option value="Tanzania">Tanzania</option><option value="Thailand">Thailand</option><option value="Timor - Leste">Timor-Leste</option><option value="Tokelau">Tokelau</option><option value="Togo">Togo</option><option value="Tonga">Tonga</option><option value="Trinidad and Tobago">Trinidad and Tobago</option><option value="Tunisia">Tunisia</option><option value="Turkey">Turkey</option><option value="Turkmenistan">Turkmenistan</option><option value="Tuvalu">Tuvalu</option><option value="Uganda">Uganda</option><option value="Ukraine">Ukraine</option><option value="United Arab Emirates">United Arab Emirates</option><option value="United Kingdom">United Kingdom</option><option value="United States">United States</option><option value="Uruguay">Uruguay</option><option value="US Virgin Islands">US Virgin Islands</option><option value="Uzbekistan">Uzbekistan</option><option value="Wallis Futuna">Wallis Futuna</option><option value="Vanuata">Vanuata</option><option value="Venezuela">Venezuela</option><option value="Vietnam">Vietnam</option><option value="Yemen">Yemen</option><option value="Zambia">Zambia</option><option value="Zimbabwe">Zimbabwe</option>'
}

function build_address_component_preview(numElement) {

    let formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();
    let jsonData = GetLocalFormBuilderStorage();
    let json = [];


    if (jsonData != '' && jsonData !== undefined && jsonData !== null)
        json = JSON.parse(jsonData);


    //Adding section
    let previewBody = '<div data-element-id="' + numElement + '" class="field-row" data-type-field="addresscomponent" data-order="' + numElement + '" data-block-name="addresscomponent">'
        + '	<div class="content content-section">'
        + '		<label class="label_preview">Address Section</label>'
        + '	</div>'
        + '	<div class="options">'
        + '		<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="section" title="section" class="logic" data-element-id="' + numElement + '">Logic</a>'
        + '		<a data-type-field="section" title="section" class="edit-field" data-element-id="' + numElement + '"></a>'
        + '		<a title="Delete Field" class="delete-field" data-element-id="' + numElement + '"></a>'
        + '		<span class="move" data-element-id="' + numElement + '"></span>'
        + '	</div>';
    json.push(prepare_address_component_field_element_for_json('addresscomponent', numElement, '', numElement,'Address Section',null,''));

    // Adding street field
   // previewBody += '<div class="section-container columns1">'
    previewBody += '<div class="section-container columns2">'
        + '		<div data-element-id="' + (numElement + 1) + '" class="field-row address-component" data-type-field="textbox" data-order="' + (numElement + 1) + '" data-block-name="textbox">'
        + '			<div class="content">'
        + '				<div class="left">'
        + '					<label class="label_preview label-preview-left">Street</label>'
        + '				</div>'
        + '				<div class="right">'
        + '					<input id="textbox_field_preview" name="textbox_field_preview" readonly="" type="text" placeholder="" value="">'
        + '				</div>'
        + '			</div>'
        + '			<div class="options">'
        + '				<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="textbox" title="textbox" class="logic" data-element-id="' + (numElement + 1) + '">Logic</a>'
        + '				<a data-type-field="textbox" title="textbox" class="edit-field" data-element-id="' + (numElement + 1) + '"></a>'
        + '				<span class="move" data-element-id="' + (numElement + 1) + '"></span>'
        + '			</div>'
        + '		</div>'

        //+ '	</div>';
    json.push(prepare_address_component_field_element_for_json('textbox', (numElement + 1), 'element-' + numElement, (numElement + 1),'Street',null,'address-component-street'));


    // Adding City   
   // previewBody += '<div class="section-container columns2">'
    previewBody += '<div data-element-id="' + (numElement + 2) + '" class="field-row address-component" data-type-field="textbox" data-order="' + (numElement + 2) + '" data-block-name="textbox">'
        + '			<div class="content">'
        + '				<div class="left">'
        + '					<label class="label_preview label-preview-left">City</label>'
        + '				</div>'
        + '				<div class="right">'
        + '					<input id="textbox_field_preview" name="textbox_field_preview" readonly="" type="text" placeholder="" value="">'
        + '				</div>'
        + '			</div>'
        + '			<div class="options">'
        + '				<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="textbox" title="textbox" class="logic" data-element-id="' + (numElement + 2) + '">Logic</a>'
        + '				<a data-type-field="textbox" title="textbox" class="edit-field" data-element-id="' + (numElement + 2) + '"></a>'
        + '				<span class="move" data-element-id="' + (numElement + 2) + '"></span>'
        + '			</div>'
        + '		</div>';
    json.push(prepare_address_component_field_element_for_json('textbox', (numElement + 2), 'element-' + numElement, (numElement + 2), 'City',null,'address-component-city'));

    // Adding state
    previewBody += '<div data-element-id="' + (numElement + 3) + '" class="field-row address-component" data-type-field="textbox" data-order="' + (numElement + 3) + '" data-block-name="textbox">'
        + '			<div class="content">'
        + '				<div class="left">'
        + '					<label class="label_preview label-preview-left">State</label>'
        + '				</div>'
        + '			<div class="right">'
        + '				<input id="textbox_field_preview" name="textbox_field_preview" readonly="" type="text" placeholder="" value="">'
        + '			</div>'
        + '			</div>'
        + '			<div class="options">'
        + '				<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="textbox" title="textbox" class="logic" data-element-id="' + (numElement + 3) + '">Logic</a>'
        + '				<a data-type-field="textbox" title="textbox" class="edit-field" data-element-id="' + (numElement + 3) + '"></a>'
        + '				<span class="move" data-element-id="' + (numElement + 3) + '"></span>'
        + '			</div>'
        + '		</div>';
    json.push(prepare_address_component_field_element_for_json('textbox', (numElement + 3), 'element-' + numElement, (numElement + 3), 'State', null,'address-component-state'));

    // Adding country
    previewBody += '<div data-element-id="' + (numElement + 4) + '" class="field-row address-component" data-type-field="dropdown" data-order="' + (numElement + 4) + '" data-block-name="dropdown">'
        + '			<div class="content">'
        + '				<div class="left">'
        + '					<label class="label_preview label-preview-left">Country</label>'
        + '				</div>'
        + '				<div class="right">'
        + '					<select id="select-preview" name="select-preview" readonly="" class="select-preview"><option value="">Select One country</option>'
        + get_options_for_country_dropdown() 
        + '					</select>'
        + '				</div>'
        + '			</div>'
        + '			<div class="options">'
        + '				<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="dropdown" title="dropdown" class="logic" data-element-id="' + (numElement + 4) + '">Logic</a>'
        + '				<a data-type-field="dropdown" title="dropdown" class="edit-field" data-element-id="' + (numElement + 4) + '"></a>'
        + '				<span class="move" data-element-id="' + (numElement + 4) + '"></span>'
        + '			</div>'
        + '		</div>';
    json.push(prepare_address_component_field_element_for_json('dropdown', (numElement + 4), 'element-' + numElement, (numElement + 4), 'Country', 1, 'address-component-country'));

    // Adding zipcode
    previewBody += '<div data-element-id="' + (numElement + 5) + '" class="field-row address-component" data-type-field="textbox" data-order="' + (numElement + 5) + '" data-block-name="textbox">'
        + '			<div class="content">'
        + '				<div class="left">'
        + '					<label class="label_preview label-preview-left">Zip/Postal Code</label>'
        + '				</div>'
        + '				<div class="right">'
        + '					<input id="textbox_field_preview" name="textbox_field_preview" readonly="" type="text" placeholder="" value="">'
        + '				</div>'
        + '			</div>'
        + '			<div class="options">'
        + '				<a data-element-reveal="ars-display-logic" data-field-id="0" data-rule-id="0" data-type-field="textbox" title="textbox" class="logic" data-element-id="' + (numElement + 5) + '">Logic</a>'
        + '				<a data-type-field="textbox" title="textbox" class="edit-field" data-element-id="' + (numElement + 5) + '"></a>'
        + '				<span class="move" data-element-id="' + (numElement + 5) + '"></span>'
        + '			</div>'
        + '		</div>';
       // + '	</div>';
    json.push(prepare_address_component_field_element_for_json('textbox', (numElement + 5), 'element-' + numElement, (numElement + 5), 'Zip/Postal Code', null, 'address-component-zipcode'));

    // Adding latitude
    previewBody += '<div data-element-id="' + (numElement + 6) + '" class="field-row address-component" data-type-field="hidden" data-order="' + (numElement + 6) + '" data-block-name="hidden" data-address-component="latitude" data-hidden-name="Hidden #">'
        + '<div class="content">'
        + '<div class="left">'
        + '<label class="label_preview">Hidden #</label>'
        + '</div>'
        + '<div class="right">'
        + '<input class="hidden_field" id="hidden_field_preview" name="hidden_field_preview" readonly type="text" placeholder="Latitude" value="">'
        + '</div>'
        + '</div>'
        + '<div class="options">'
        + '<a data-type-field="hidden" title="hidden" class="edit-field"  data-element-id="' + (numElement + 6) + '"></a>'
        + '<span class="move" data-element-id="' + (numElement + 6) + '"></span>'
        + '</div>'
        + '</div>';

    json.push(prepare_address_component_field_element_for_json('hidden', (numElement + 6), 'element-' + numElement, (numElement + 6), 'Hidden Latitude', null, 'address-component-latitude','Latitude'));

    // Adding longitude
    previewBody += '<div data-element-id="' + (numElement + 7) + '" class="field-row address-component active" data-type-field="hidden" data-order="' + (numElement + 7) + '" data-block-name="hidden" data-address-component="longitude" data-hidden-name="Hidden #">'
        + '<div class="content">'
        + '<div class="left">'
        + '<label class="label_preview">Hidden #</label>'
        + '</div>'
        + '<div class="right">'
        + '<input class="hidden_field" id="hidden_field_preview" name="hidden_field_preview" readonly type="text" placeholder="Longitude" value="">'
        + '</div>'
        + '</div>'
        + '<div class="options">'
        + '<a data-type-field="hidden" title="hidden" class="edit-field"  data-element-id="' + (numElement + 7) + '"></a>'
        + '<span class="move" data-element-id="' + (numElement + 7) + '"></span>'
        + '</div>'
        + '</div>';

    //close subsection
    previewBody+= '	</div>';
    // closing section
    previewBody += '</div>';

    json.push(prepare_address_component_field_element_for_json('hidden', (numElement + 7), 'element-' + numElement, (numElement + 7), 'Hidden Longitude', null, 'address-component-longitude','Longitude'));



    setDataToSessionStore(json, formTokenStore);
    return previewBody;
}


function RedirectLogicConfig() {
    if (!is_backend_page()) return;

    $(document).on('click', 'a[data-element-reveal="form-redirect-logic"]', function () {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var formTokenStore = $('#form-builder-block').find('input[name="form-hash-token"]').val();

        var forSubmitButton = $(this).attr('data-for-submit');

        $('.info-for-submit').hide();
        if (forSubmitButton != null && forSubmitButton != undefined && forSubmitButton === 'true') {
            $('.info-for-submit').show();
        }

        if (!$(this).hasClass('disabled')) {
            var elementReveal = $(this).data('element-reveal');
            var typeField = $(this).data('type-field');
            var elementId = $(this).data('element-id');
            var ruleId = $(this).attr('data-rule-id');
            var fieldId = $(this).attr('data-field-id');
            var formId = $('#form-builder input[name=form-id]').val();

            $('#' + elementReveal + ' input[name=element-id]').val(elementId);
            $('#' + elementReveal + ' input[name=field-id]').val(fieldId);
            $('#' + elementReveal + ' input[name=form-id]').val(formId);
            $('#' + elementReveal + ' input[name=rule-id]').val(ruleId);
            $('#' + elementReveal + ' input[name=type]').val(typeField);

            if (parseInt(ruleId) == 0) {
                $('.conditions').empty();

                var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);

                if (varJson != null && varJson != '') {
                    var fields = JSON.parse(varJson);
                    var sufix = 1;

                    DisplayLogicConditions(fields, null, null, null, sufix, elementId, elementReveal);
                    sufix++;
                    $('input[name="cond_sufix"]').val(sufix);
                }
            }
            else if (parseInt(ruleId) != 0) {
                $('.conditions').empty();
                $.ajax({
                    method: "POST",
                    url: urlSite + "ARS/GetDisplayRuleInfo",
                    data: { ruleId: ruleId },
                    beforeSend: function () {
                        $('#' + elementReveal + ' .processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.status == '200') {
                        if (jsonResult.any_all != null) {
                            $('#' + elementReveal + ' select[name="and_or"]').val(jsonResult.any_all);
                        }
                        if (jsonResult.redirectUrl != null) {
                            $('#' + elementReveal + ' input[name="UrlToRedirect"]').val(jsonResult.redirectUrl);
                        }
                        if (jsonResult.show_hide != null) {
                            var current_val_hide = jsonResult.show_hide;
                            $('#' + elementReveal + ' select[name="show_hide"]').val(current_val_hide).change();
                            $(document).ajaxComplete(function (event, xhr, settings) {
                                show_hide_always(current_val_hide);
                            });
                        }
                        if (jsonResult.condition != null) {
                            $.ajax({
                                method: "POST",
                                url: urlSite + "ARS/GetDisplaySelectedFields",
                                data: { conditions: JSON.stringify(jsonResult.condition), fieldName: jsonResult.fieldName },
                            }).done(function (dataInner) {
                                var jsonInnerResult = JSON.parse(dataInner);
                                var sufix = 1
                                var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);

                                if (varJson != null && varJson != '') {
                                    var fields = JSON.parse(varJson);

                                    jsonInnerResult.forEach(function (item) {
                                        DisplayLogicConditions(fields, item.field, item.op, item.data, sufix, null, elementReveal);
                                        sufix++;
                                    });
                                    $('input[name="cond_sufix"]').val(sufix);
                                }
                                $('#' + elementReveal + ' .processing_screen').hide();
                            });
                        }
                        else {
                            $('#' + elementReveal + ' .processing_screen').hide();
                        }
                    }
                    else {
                        $('#' + elementReveal + ' .processing_screen').hide();
                    }
                    $('#' + elementReveal).foundation('open');
                });
            }
            var namefield = $(this).parent().parent().find(".content .label_preview").first().text();
            if (namefield == "") {
                namefield = typeField;
            }
            $('#' + elementReveal + ' .for-title').text(namefield);
            $('#' + elementReveal).foundation('open');
        }
    });


    if ($('#form-redirect-logic').length > 0) {
        $(document).on('click', '#form-redirect-logic .save', function () {
            //Get if site is sharingPortalPlus

            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
            $("#form-redirect-logic").find("label.error").remove();

            if ($('#form_redirect_logic_inner').valid()) {
                var formData = $("#form_redirect_logic_inner").serializeObject();
                var ruleId = $('#form_redirect_logic_inner input[name=rule-id]').val();
                var fieldId = $('#form_redirect_logic_inner input[name=field-id]').val();
                var elementId = $('#form_redirect_logic_inner input[name=element-id]').val();
                var requestVerificationToken = formData['__RequestVerificationToken'];

                $.ajax({
                    method: "POST",
                    url: urlSite + "Admin/AddOrUpdateDisplayLogic",
                    data: {
                        form: formData,
                        elementId: elementId,
                        "__RequestVerificationToken": requestVerificationToken
                    },
                    beforeSend: function () {
                        $('#form-redirect-logic').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    //var displayRules = localStorage.getItem("display-logic-rules");
                    var displayRules = sessionStorage.getItem("display-logic-rules");
                    var DataJson = [];
                    var jsonRules = new Object();

                    if (jsonResult.status === 200) {
                        var _ruleId = jsonResult.ruleId;
                        var elementId = jsonResult.elementId;
                        var condCount = parseInt(jsonResult.condCount);

                        var fieldName = $("#form_redirect_logic_inner").find('[name="display_fields_1"] option:selected').text();
                        var urlRedirectValue = $("#form_redirect_logic_inner").find('[name="UrlToRedirect"]').val();
                        var operationText = $("#form_redirect_logic_inner").find('[name="display_operator_1"] option:selected').text();
                        var value = $("#form_redirect_logic_inner").find('[name="display_data_1"]').val();
                        var andOr = $("#form_redirect_logic_inner").find('[name="and_or"]').val();
                        var iterator = 1;
                        var arrayObject = [];
                        $('#form_redirect_logic_inner .row.condition').each(function () {
                            var itemObject = {};
                            itemObject.field = $(this).find('[name="display_fields_' + iterator + '"]').val();
                            itemObject.op = $(this).find('[name="display_operator_' + iterator + '"]').val();
                            itemObject.data = $(this).find('[name="display_data_' + iterator + '"]').val();
                            arrayObject.push(itemObject);
                            iterator++;
                        });
                        var jsonInfo = JSON.stringify(arrayObject).replaceAll('"', '~');
                        if (ruleId == '0') {
                            $("#form-builder-block").find('.custom-redirection-rules-actions').append(load_redirection_rule(_ruleId, fieldName, urlRedirectValue, value, operationText, jsonInfo, andOr, arrayObject && arrayObject.length>1, false));
                        }
                        else {
                            $("#form-builder-block").find('.redirect-rule-' + _ruleId).html(load_redirection_rule(_ruleId, fieldName, urlRedirectValue, value, operationText, jsonInfo, andOr, arrayObject && arrayObject.length > 1, true));
                        }

                    }

                    $('#form-redirect-logic').find('.processing_screen').hide();
                    //Close modal
                    $('#form-redirect-logic').foundation('close');
                    $('#form-redirect-logic .conditions').empty();

                    if (!isNewCMSFeature())
                        $('#form-builder-block .advanced-link').trigger('click');
                });
            } else {
                Swal.fire({
                    title: "",
                    icon: "warning",
                    text: window.translation.enter_all_required,
                    confirmButtonText: "Ok"
                });

                if (!isNewCMSFeature())
                    $('#form-builder-block .advanced-link').trigger('click');

                return false;
            }

        });

        $('.backend-page').on('click', 'a.remove-redirect-rule', function () {
            var ruleId = $(this).parents('.row.redirect-rule').data('rule-id');
            
            var rule = $(this).parents('.row.redirect-rule');
            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_rule,
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: false

            }).then(function (result) {
                
                if (result.isConfirmed) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "Admin/RemoveRedirectRule",
                        data: { ruleId: ruleId },
                        beforeSend: function () {
                            $('#ars-vol-reg-workflow').find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);
                        if (jsonResult.status == '200') {
                            var pageId = rule.data('page-id');
                            var isDefault = rule.data('is-default');
                            var stepRule = rule.closest('.step-rules');
                            var stepPage = rule.closest('.step-page');
                            var type = stepPage.data('type');

                            rule.remove();


                            
                            Swal.fire({
                                title: window.translation.success,
                                text: window.translation.rule_removed_successfully,
                                icon: "success",
                                closeOnConfirm: false
                            }).then(function (result) {

                                if (!isNewCMSFeature())
                                    $('#form-builder-block .advanced-link').trigger('click');
                            });
                        }
                        else if (jsonResult.status == '500') {
                            Swal.fire({
                                title: window.translation.error,
                                text: jsonResult.message,
                                icon: "error",
                                closeOnConfirm: false
                            }).then(function (result) {
                                if (!isNewCMSFeature())
                                    $('#form-builder-block .advanced-link').trigger('click');
                            });
                        }

                        //Hide processing screen
                        $('#form_redirect_logic_inner').find('.processing_screen').hide();
                    });

                }
                
            });
            
        });
    }

}

function load_redirection_rule(_ruleId, fieldName, urlRedirectValue, value, operationText, jsonInfo, andOr, isMultiple, isEdit) {
    var redirectRuleDetail = '';
    if (isEdit) {
        redirectRuleDetail += '<div class="redirect-rule-{ruleId}">';
    }
    redirectRuleDetail += '<div class="row rule has-special-rule redirect-rule" data-page-id="{pageId}" data-rule-id="{ruleId}" data-is-default="false" data-jsonInfo="{jsonInfo}" data-show-hide="1" data-and-or="{andOr}" >';
    redirectRuleDetail += '    <div class="large-5 medium-5 small-12 columns">';
    redirectRuleDetail += '        <div class="row {isMultiple}"><strong>' + window.translation.any_all_prefix+'</strong> {fieldName} <strong>{operation}</strong> {value}</div>';
    redirectRuleDetail += '    </div>';
    redirectRuleDetail += '    <div class="large-5 medium-5 small-12 columns">';
    redirectRuleDetail += '        <div class="row redirect-to -------"><strong>' + window.translation.go_to + ':</strong> {redirectUrl}</div>';
    redirectRuleDetail += '    </div>';
    redirectRuleDetail += '    <div class="large-2 medium-2 small-12 columns">';
    redirectRuleDetail += '        <a data-element-reveal="form-redirect-logic" title="' + window.translation.edit_rule + '" class="edit-rule" data-from="edit" data-page-id="0" data-rule-id="{ruleId}"></a>';
    redirectRuleDetail += '        <a data-element-reveal="" title="' + window.translation.remove_rule + '" class="remove-redirect-rule" data-page-id="0" data-rule-id="{ruleId}"></a>';
    redirectRuleDetail += '    </div>';
    redirectRuleDetail += '</div>';
    if (isEdit) {
        redirectRuleDetail += '</div>';
    }
    redirectRuleDetail = redirectRuleDetail.replaceAll('{pageId}', '0');
    redirectRuleDetail = redirectRuleDetail.replaceAll('{ruleId}', _ruleId);
    redirectRuleDetail = redirectRuleDetail.replaceAll('{fieldName}', fieldName);
    redirectRuleDetail = redirectRuleDetail.replaceAll('{redirectUrl}', urlRedirectValue);
    redirectRuleDetail = redirectRuleDetail.replaceAll('{value}', value != 'nullorempty' ? value : '');
    redirectRuleDetail = redirectRuleDetail.replaceAll('{operation}', operationText);
    redirectRuleDetail = redirectRuleDetail.replaceAll('{jsonInfo}', jsonInfo);
    redirectRuleDetail = redirectRuleDetail.replaceAll('{andOr}', andOr);
    var mulipleClass = "multiple-rules";
    if (!isMultiple)
        mulipleClass = "";
    redirectRuleDetail = redirectRuleDetail.replaceAll('{isMultiple}', mulipleClass);
    return redirectRuleDetail;
}


function validateAdditionalLabelValueSetting(value, currentInstance, formSelector) {
    if (value === currentInstance + "Volunteer_Opportunity__c" || value === currentInstance + "Skill__c" || value === "Account") {
        $(formSelector).find('.additional-labels-section').removeClass('is-hidden');
        var fields = '';
        if (value === currentInstance + "Volunteer_Opportunity__c") {
            fields = 'Description and Volunteer Opportunity Name';
        } else if (value === "Account") {
            fields = 'Organization Name and Mission Statement';
        }

        if (fields !== '') {
            var info = 'The following settings only apply for the fields: <b>' + fields + '</b>';
            $(formSelector).find('.info-text-additional-label').html(info);
        } else {
            $(formSelector).find('.info-text-additional-label').html('');
        }
    } else {
        $(formSelector).find('.additional-labels-section').addClass('is-hidden');
    }

}

function VerifyAdditionalLabelSettingAfterLoad(salesforceObject) {
    if (!is_backend_page()) return;
    var formSelector = '.form_builder_block';
    var currentInstance = window.instance_prefix;
    if ($('body').hasClass('hoc-volunteer-system-hybrid'))
        currentInstance = window.instance_prefix_hybrid;
    if ($(formSelector).hasClass('ars')) {
        salesforceObject = '';
    }
    validateAdditionalLabelValueSetting(salesforceObject, currentInstance, formSelector);
}

function ValidateAdditionalLabelSettings() {
    if (!is_backend_page()) return;
    var formSelector = '.form_builder_block';
    var currentInstance = window.instance_prefix;
    if ($('body').hasClass('hoc-volunteer-system-hybrid'))
        currentInstance = window.instance_prefix_hybrid;

    if ($(formSelector).hasClass('ars')) {
        VerifyAdditionalLabelSettingAfterLoad('');
    }

    $(formSelector).find('select[name="salesforce_object"]').on('change', function () {

        var value = $(this).val();
        validateAdditionalLabelValueSetting(value, currentInstance, formSelector);
    });
}


async function LoadFormDataUsingOldLogic(formSelector, jsonResult, isNewCMSApproach, sourceInvoked, formTokenStore) {
    let instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
    if (isNewCMSApproach === true) {
        sessionStorage.removeItem("display-logic-rules");
        sessionStorage.setItem("display-logic-rules", "");
        initializeDescriptionField();
        var currentdate = new Date();
        formTokenStore = currentdate.getDate() + "_" + (currentdate.getMonth() + 1) + "_" + currentdate.getFullYear() + "_" + currentdate.getHours() + "_" + currentdate.getMinutes() + "_" + currentdate.getSeconds();
        var siteInfo = $(formSelector).find('input[name="site-hocid"]').val();
        formTokenStore += siteInfo;
        formTokenStore = formTokenStore.replaceAll('_', '');
        $(formSelector).find('input[name="form-hash-token"]').val(formTokenStore);
    }

    let blockId = jsonResult['blockId'];
    var isArs = (jsonResult['is_ars'] === 'YES') ? true : false;
    var modalFrom = $(formSelector).attr('data-workflow');
    var workflowName = '';
    var hideProcessingScreen = true;

    setDataToSessionStore("", formTokenStore);
    //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, "");
    $('.form_builder_block > h3.title').text(window.translation.edit + " " + window.translation.form);

    // Loading data of form
    if ($(formSelector).find('span.code-form').length > 0)
        $(formSelector).find('span.code-form').text("form-custom-" + jsonResult.form_id);
    else 
        $('.content-page-update-form-block').find('span.code-form').text("form-custom-" + jsonResult.form_id);
    $(formSelector).find('input[name="form-id"]').val(jsonResult.form_id);
    $(formSelector).find('select[name="form_build_region"]').val(jsonResult.region);
    $(formSelector).find('input[name="form_builder_blocsortk_id"]').val(jsonResult.blockId);
    $(formSelector).find('input[name="form_builder_form_name"]').val(jsonResult.formName);
    $(formSelector).find('input[name="showTitle"]').prop("checked", jsonResult.show_title);
    $(formSelector).find('input[name="enabled"]').prop("checked", jsonResult.enable);
    $(formSelector).find('input[name="have_redirect_to"]').prop("checked", jsonResult.have_redirect_to);

    $(formSelector).find('select[name="save_data_on"]').val(jsonResult.save_data_on);
    if ($(formSelector).find('input[type="hidden"][name="save_data_on"]').length > 0) {
        $(formSelector).find('input[type="hidden"][name="save_data_on"]').val(jsonResult.save_data_on);
    }
    if (jsonResult.add_more_records === true) {
        $(formSelector).find('input[name="enable_add_records_button"]').prop("value", jsonResult.add_more_records);
    }

    $(formSelector).find('input[name="partial_reload"]').prop("checked", jsonResult.partial_reload);
    ShowHideListingToReload(jsonResult.partial_reload);

    $(formSelector).find('input[name="display_as_modal"]').prop("checked", jsonResult.open_in_modal);
    $(formSelector).find('input[name="autosubmit_and_hidden"]').prop("checked", jsonResult.autosubmit_and_hidden); 
    $(formSelector).find('input[name="do_not_save_data_in_db"]').prop("checked", jsonResult.do_not_save_data_in_db);
    if ($(formSelector).find('input[type="hidden"][name="do_not_save_data_in_db"]').length > 0) {
        $(formSelector).find('input[name="do_not_save_data_in_db"]').val(jsonResult.do_not_save_data_in_db);
    }
    ShowHideButtonOpenModal(jsonResult.open_in_modal, jsonResult.hide_modal_button, jsonResult.autosubmit_and_hidden);
    ShowHideButtonHiddenAutosubmit(jsonResult.autosubmit_and_hidden, jsonResult.hide_modal_button, jsonResult.open_in_modal);
    var width_modal = (jsonResult.width_modal > 0) ? jsonResult.width_modal : '';
    $(formSelector).find('input[name="width_modal"]').val(width_modal);
    var listing_to_reload = jsonResult.listing_to_reload ? jsonResult.listing_to_reload.split(',') : [];
    apply_backend_multiselect_group(formSelector + ' select[name="listing-cms-related"]', false, listing_to_reload);

    $(formSelector).find('input[name="form_builder_allow_submitted_data"]').prop("checked", jsonResult.allow_submitted_data);
    $(formSelector).find('input[name="form_builder_enable_print_button_on_form"]').prop("checked", jsonResult.enable_print_button_on_form);
    $(formSelector).find('input[name="disable_confirm_modal_after_submit"]').prop("checked", jsonResult.disable_confirm_modal);
    $(formSelector).find('input[name="enable_debug_mode"]').prop("checked", jsonResult.enable_debug_mode);
    $(formSelector).find('input[name="include_related_objects"]').prop("checked", jsonResult.include_related_objects);
    if (jsonResult.include_related_objects) {
        $('.redirect-section-section').find('.related-field-section-help').show();
    }
    else {
        $('.redirect-section-section').find('.related-field-section-help').hide();
    }

    if (isArs) {
        $(formSelector).find('.enable_debug_mode').addClass('hidden');
    }

    if (jsonResult.have_redirect_to === true) {
        $(formSelector).find('.disable_modal_confirm').addClass('hidden');
    } else if (isArs === false) {
        $(formSelector).find('.disable_modal_confirm').removeClass('hidden');
    } else if (isArs === true) {
        $(formSelector).find('.disable_modal_confirm').addClass('hidden');
    }

    $(formSelector).find('input[name="redirect_to_previous_page"]').prop("checked", jsonResult.redirect_to_previous_page);
    if (jsonResult.redirect_to_previous_page) {
        $(formSelector).find('input[name="url_redirect_to"]').val('');
        $(formSelector).find('input[name="url_redirect_to"]').attr('disabled', 'disabled');
    }
    else {
        $(formSelector).find('input[name="url_redirect_to"]').removeAttr('disabled');
    }
    $(formSelector).find('input[name="url_redirect_to"]').val(jsonResult.url_redirect_to);
    $(formSelector).find('input[name="required_login"]').prop("checked", jsonResult.required_login);
    $(formSelector).find('input[name="populate_from_salesforce"]').prop("checked", jsonResult.populate_from_salesforce);
    if (jsonResult.populate_from_salesforce) {
        $('#form-builder-block').find('.update_record_row').show();
    }
    else {
        $('#form-builder-block').find('.update_record_row').hide();
    }

    $(formSelector).find('input[name="css_class"]').val(jsonResult.css_class);
    if (jsonResult.subsite_id !== '0' && jsonResult.subsite_id !== 0) {
        if ($(formSelector).find('select[name="subsite_id"]').length > 0) {
            $(formSelector).find('select[name="subsite_id"]').val(jsonResult.subsite_id);
        } else {
            $(formSelector).find('input[name="subsite_id"]').val(jsonResult.subsite_id);
        }
    }

    if (jsonResult.populate_from_salesforce === true) {
        $(formSelector).find('.dependency-from-salesforce').show();
    } else {
        $(formSelector).find('.dependency-from-salesforce').hide();
    }
    $(formSelector).find('input[name="registration_from_salesforce"]').prop("checked", jsonResult.is_external_registration);
    $(formSelector).find('input[name="update_user_information"]').prop("checked", jsonResult.is_update_user_information);
    $(formSelector).find('select[name="registration_profile"]').val(jsonResult.profile_selected);
    $(formSelector).find('input[name="url_required_params"]').val(jsonResult.url_required_params);
    if (jsonResult.url_required_params !== null && jsonResult.url_required_params !== undefined && jsonResult.url_required_params.length > 0) {
        $(formSelector).find('.required-url-custom-message-section').removeClass('hidden');
    } else {
        $(formSelector).find('.required-url-custom-message-section').addClass('hidden');
    }
    $(formSelector).find('input[name="custom_parameter_name"]').val(jsonResult.custom_parameter_name);

    if (jsonResult.custom_message !== null && jsonResult.custom_message !== '') {
        var customMessages = JSON.parse(jsonResult.custom_message);
        if (customMessages) {
            customMessages.forEach(function (item) {
                $(formSelector).find('textarea[name="' + item.name + '"]').val(item.value);
                if (CKEDITOR.instances[item.name]) {
                    setTimeout(function () { CKEDITOR.instances[item.name].setData(item.value); }, 1200);

                }
            });
        }
    }

    if (jsonResult.authorization_settings) {
        loadAuthorizedForBlock('#form-builder-block', JSON.parse(jsonResult.authorization_settings));
    }

    if (isArs === false) {
        $(formSelector).find('.form-confirmation-message-section').removeClass('hidden');
        /*if (jsonResult.type_success_confirmation)*/
        $(formSelector).find('select[name="type-form-success"]').val(jsonResult.type_success_confirmation);

        if (jsonResult.type_success_confirmation === '0' || jsonResult.type_success_confirmation === 0) {
            $(formSelector).find('.success-confirmation-text').addClass('hidden');
        } else {
            $(formSelector).find('.success-confirmation-text').removeClass('hidden');
        }

        if (jsonResult.type_success_confirmation === '3' || jsonResult.type_success_confirmation === 3) {
            $(formSelector).find('.redirect-section-section').addClass('hidden');
        } else {
            $(formSelector).find('.redirect-section-section').removeClass('hidden');
        }


        if (jsonResult.type_success_confirmation !== '0' || jsonResult.type_success_confirmation !== 0) {
            if (jsonResult.confirmation_message !== null && jsonResult.confirmation_message !== '') {
                var customMessages = JSON.parse(jsonResult.confirmation_message);
                if (customMessages) {
                    customMessages.forEach(function (item) {
                        $(formSelector).find('textarea[name="' + item.name + '"]').val(item.value);
                        if (CKEDITOR.instances[item.name]) {
                            setTimeout(function () { CKEDITOR.instances[item.name].setData(item.value); }, 1200);

                        }
                    });
                }
            }
        }


    }
    else {
        $(formSelector).find('.form-confirmation-message-section').addClass('hidden');
        $(formSelector).find('.not-reload-section').addClass('hidden');
        $(formSelector).find('.open-in-modal-section').addClass('hidden');
    }

    if (jsonResult.open_in_modal || jsonResult.autosubmit_and_hidden) {
        if (jsonResult.button_text_modal !== null && jsonResult.button_text_modal !== '') {
            var customButtonText = JSON.parse(jsonResult.button_text_modal);
            if (customButtonText) {
                customButtonText.forEach(function (item) {
                    $(formSelector).find('input[name="' + item.name + '"]').val(item.value);
                });
            }
        }
    }


    if (jsonResult.is_external_registration == true) {
        $(formSelector).find('.subsite-settings').addClass('hidden');

        $(formSelector).find('.registration_form_profile').removeClass('hidden');
        $(formSelector).find('select[name="salesforce_object"]').attr('disabled', 'disabled');
        $(formSelector).find('.update_user_information_row').addClass('hidden');
        $(formSelector).find('input[name="update_user_information"]').prop("checked", false);
        $('#form-builder-block fieldset.form-public-site-users').removeClass('hidden');
        $('#form-builder-block a.link-refresh-sobjects-llamapi').addClass('hidden');
        $('#form-builder-block fieldset.form-public-site-users').addClass('expanded');
    } else {
        $(formSelector).find('.registration_form_profile').addClass('hidden');
        $(formSelector).find('select[name="salesforce_object"]').removeAttr('disabled');
        $('#form-builder-block fieldset.form-public-site-users').removeClass('expanded');

        if (jsonResult.is_update_user_information == true) {
            $(formSelector).find('.registration_from_salesforce_row').addClass('hidden');
            $(formSelector).find('select[name="salesforce_object"]').attr('disabled', 'disabled');
            $('#form-builder-block fieldset.form-public-site-users').removeClass('hidden');
            $('#form-builder-block a.link-refresh-sobjects-llamapi').addClass('hidden');
        }

    }
    $(formSelector).find('input[name="save_complete_later"]').prop("checked", jsonResult.save_complete_later);
    $(formSelector).find('input[name="kiosk_form"]').prop("checked", jsonResult.kiosk_form);

    var isKioskForm = jsonResult.kiosk_form;
    //Titles info
    if (jsonResult.titlesInfo) {
        jsonResult.titlesInfo.forEach(function (titleInfo) {
            $(formSelector).find('input[name="title-' + titleInfo.languageID + '"]').val(titleInfo.title);
        });
    }

    //Message in field update record
    if ((jsonResult.salesforce_object === 'Contact' && jsonResult.update_record) || !jsonResult.update_record) {
        $(formSelector).find('.message_sid_querystring').addClass('hidden');
        if (jsonResult.salesforce_object === 'Contact' && jsonResult.populate_from_salesforce) {
            $(formSelector).find('.enforce_session_section').removeClass('hidden');
        }
    }
    else if (jsonResult.salesforce_object && jsonResult.update_record) {
        $(formSelector).find('.message_sid_querystring').removeClass('hidden');
        DisplayDontPopulateAccountSetting();
    }

    $(formSelector).find('input[name="form_builder_enable_multilanguage"]').prop('checked', false);


    if (jsonResult.salesforce_object) {
        //Field update record
        $(formSelector).find('.update_record_row').removeClass('hidden');
        if (!isArs) {
            $(formSelector).find('.populate_from_salesforce_row').removeClass('hidden');
            if (jsonResult.sp_form_type != 0) {
                $(formSelector).find('.enable_debug_mode').addClass('hidden');
            }
            else {
                $(formSelector).find('.enable_debug_mode').removeClass('hidden');
            }

        }
        //Populate update record field
        $(formSelector).find('input[name="update_record"]').prop("checked", jsonResult.update_record);
        DisplayDontPopulateAccountSetting();
        VerifyAdditionalLabelSettingAfterLoad(jsonResult.salesforce_object);
        if (jsonResult.form_builder_enable_multilanguage === true) {
            $(formSelector).find('input[name="form_builder_enable_multilanguage"]').prop('checked', true);
        }

        await LoadPicklistValues(jsonResult.salesforce_object, blockId);

    }
    else {
        //Field update record
        $(formSelector).find('.update_record_row').addClass('hidden');
        $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
    }

    // Show populate from salesforce field 
    if (jsonResult.update_record && jsonResult.is_compliance == 0) {
        $(formSelector).find('.populate_from_salesforce_row').removeClass('hidden');
    }

    //Field redirect to
    if (jsonResult.have_redirect_to) {
        $(formSelector).find('.url_redirect_to').removeClass('hidden');
    }
    // show save and complete later if required_login is true
    if (jsonResult.required_login && jsonResult.update_record == false) {
        $(formSelector).find('.save_complete_later').removeClass('hidden');
        $(formSelector).find('.allow_submitted_data').removeClass('hidden');
    } else {
        $(formSelector).find('.save_complete_later').addClass('hidden');
        $(formSelector).find('.allow_submitted_data').addClass('hidden');
    }

    $(formSelector).find('input[name="dont_populate_direct_account"]').prop('checked', jsonResult.dont_populate_account == true);


    //Compliance
    var isCompliance = (jsonResult.is_compliance == 0) ? false : true;
    $(formSelector).find('input[name="isCompliance"]').val(isCompliance);

    //Visible To
    if (jsonResult.visible_to == 1 || jsonResult.visible_to == 2) {
        $(formSelector).find('#form_builder_exception_url_container').removeClass('is-hidden');
    }


    if (isNewCMSApproach === true) {
        $(formSelector).find('textarea[name="visibility_urls"]').text(jsonResult.visibility_urls);
        $(formSelector).find('#visibility_wysiwyg_' + jsonResult.visible_to).prop("checked", true);
    } else {
        
        $(formSelector).find('textarea[name="form_builder_visibility_urls"]').text(jsonResult.visibility_urls);
        $(formSelector).find('#form_builder_visibility_' + jsonResult.visible_to).prop("checked", true);
    }

    //Fields
    setDataToSessionStore(jsonResult.fields, formTokenStore);
    //sessionStorage.setItem("json-form-builder-data-" + formTokenStore, JSON.stringify(jsonResult.fields));
    if (jsonResult.save_data_salesforce == true) {
        workflowName = $('#vol-workflow-form input[name="workflow-label"]').val();
        var isPartnerRegistration = modalFrom === 'create-page-partner';
        $(formSelector).find('input[name="save_data_salesforce"]').prop("checked", true);
        await LoadSalesForceObjects(jsonResult.salesforce_object, true, isPartnerRegistration, false, isKioskForm);
        await AjaxPreLoadSalesForceFields(jsonResult.salesforce_object);
        await AjaxLoadSalesForceFieldsAll(false, jsonResult.salesforce_object);
        hideProcessingScreen = false;
        $(formSelector).find('.salesforce-mapping-section').removeClass("hidden");
        $('#form-builder-block .field_to_mention_section').removeClass("hidden");
        $(formSelector).find('.salesforce-mapping-section-notrf').removeClass("hidden");
        $(formSelector).find('.pc_sync_with_salesforce').removeClass('hidden');

        if (isArs) {
            workflowName = $('#vol-workflow-form').attr('data-from');
            if (modalFrom === 'create-page-vol' || modalFrom === 'create-page-log-in') {
                $(formSelector).find('.salesforce_object_msg').removeClass('hidden');
                $(formSelector).find('.salesforce_object').addClass('hidden');
            }
            else {
                $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                $(formSelector).find('.salesforce_object').removeClass('hidden');
            }
            if (isCompliance) {
                // Display select if is compliance form
                $(formSelector).find('.salesforce_object_msg').addClass('hidden');
                $(formSelector).find('.salesforce_object').removeClass('hidden');
            }



            var isComplianceFormSettings = $('.form_builder_block input#isCompliance').val();
            if (isComplianceFormSettings === "true") {
                //Display require and update row
                $(formSelector).find('.required_login_row').removeClass('hidden');
                $(formSelector).find('.update_record_row').removeClass('hidden');

            }

            $(formSelector).find("fieldset.form-public-site-users").hide();
        }

        //Block outside of ARS
        if (!isArs) {
            $(formSelector).find('.salesforce_object').removeClass("hidden");
            $(formSelector).find('.salesforce_object_msg').addClass('hidden');
        }

        if (isKioskForm) {
            $(formSelector).find('.subsite-settings').addClass('hidden');
            $(formSelector).find('.sharing-portal-form').addClass('hidden');
            $(formSelector).find('.redirection-section').addClass('hidden');
            $(formSelector).find('.required_login_row').addClass('hidden');
            $(formSelector).find('.update_record_row').addClass('hidden');
            $(formSelector).find('.populate_from_salesforce_row').addClass('hidden');
            $(formSelector).find('.save_complete_later').addClass('hidden');
            $(formSelector).find('.allow_submitted_data').addClass('hidden');

        }
    }
    else {
        $(formSelector).find('.salesforce-mapping-section').addClass("hidden");
        $('#form-builder-block .field_to_mention_section').addClass("hidden");
        $(formSelector).find('.salesforce-mapping-section-notrf').addClass("hidden");
        $(formSelector).find('input[name="save_data_salesforce"]').prop("checked", false);
        $(formSelector).find('.salesforce_object').addClass('hidden');
        $(formSelector).find('.salesforce_object_msg').addClass('hidden');
        $(formSelector).find('.pc_sync_with_salesforce').addClass('hidden');
        if (isKioskForm) {
            $(formSelector).find('.subsite-settings').addClass('hidden');
        }
    }

    //  If is a SP form
    if (jsonResult.sp_form_type !== 0) {
        //  Hide unused fields
        $(formSelector).find('.subsite-settings').addClass('hidden');
        $(formSelector).find('.enable_debug_mode').addClass('hidden');
        $(formSelector).find('form#form-builder .sharing-portal-form-object').removeClass('hidden'); //  show objects drowdown
        $(formSelector).find('form#form-builder .region').addClass('hidden');  //  hide regions section
        $(formSelector).find('.kiosk-form').addClass('hidden');
        $(formSelector).find('form#form-builder .save_data_salesforce').addClass('hidden');   //  hide save_data_salesforce section
        $(formSelector).find('form#form-builder .salesforce_object').addClass('hidden');
        $(formSelector).find('form#form-builder .url_redirect_to').parent().addClass('hidden');   //  hide url_redirect_to
        $(formSelector).find('.required_login_row').addClass('hidden');
        $(formSelector).find('.update_record_row').addClass('hidden');
        $(formSelector).find('form#form-builder .populate_from_salesforce_row').addClass('hidden'); //  hide populate_from_salesforce_row
        $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').addClass('hidden');    //  hide order section
        $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').next().addClass('hidden');    //  hide order section
        $(formSelector).find('#form_builder_exception_url_container').prev().addClass('hidden');   //  hide visible to section
        $(formSelector).find('#form_builder_exception_url_container').addClass('hidden');   //  hide visible to section

        $(formSelector).find('input[name="sharing_portal_form"]').prop("checked", true);
        $(formSelector).find('form#form-builder input[name="save_data_salesforce"]').prop('checked', true);
        $(formSelector).find('form#form-builder input[name="required_login"]').prop('checked', true);
        $(formSelector).find('form#form-builder input[name="update_record"]').prop('checked', true);
        $(formSelector).find('form#form-builder input[name="populate_from_salesforce"]').prop('checked', true);
        $('#form-builder-block').find('.update_record_row').show();
        $(formSelector).find('form#form-builder .retrieve_info_from_salesforce').removeClass("hidden");
        $(formSelector).find('select[name="sharing_portal_form_object_select"]').val(jsonResult.sp_form_type);
        $(formSelector).find('.region').addClass('hidden');
        if (jsonResult.sp_form_type === 1) {
            await LoadSalesForceObjects('Contact', true);
            $(formSelector).find('form#form-builder select[name="salesforce_object"]').val('Contact');
        } else if (jsonResult.sp_form_type === 2) {
            await LoadSalesForceObjects(instancePrefix + 'Volunteer_Opportunity__c', true);
            $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Volunteer_Opportunity__c');
        } else if (jsonResult.sp_form_type === 3) {
            await LoadSalesForceObjects(instancePrefix + 'Connection__c', true);
            $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Connection__c');
        } else if (jsonResult.sp_form_type === 4) {
            await LoadSalesForceObjects(instancePrefix + 'Occurrence__c', true);
            $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Occurrence__c');
        } else if (jsonResult.sp_form_type === 5) {
            await LoadSalesForceObjects(instancePrefix + 'Recurrence__c', true);
            $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Recurrence__c');
        } else if (jsonResult.sp_form_type === 6) {
            await LoadSalesForceObjects(instancePrefix + 'Volunteer_Team__c', true);
            $(formSelector).find('form#form-builder select[name="salesforce_object"]').val(instancePrefix + 'Volunteer_Team__c');
        }
        await AjaxLoadSalesForceFields('0', false);
    } else {
        $(formSelector).find('form#form-builder .sharing-portal-form-object').addClass('hidden');
        $(formSelector).find('form#form-builder .save_data_salesforce').removeClass('hidden');
        $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').removeClass('hidden');    //  hide order section
        $(formSelector).find('#form-builder-advanced-settings .general-info .visible-to-label').next().removeClass('hidden');    //  hide order section
        $(formSelector).find('#form_builder_exception_url_container').prev().removeClass('hidden');

    }

    //ARS Validations
    if (isArs) {
        $(formSelector).find('a.remove-link').hide();
        $(formSelector).find('a.advanced-link').hide();
        $(formSelector).find('.update_record_row').addClass('hidden');
        if (modalFrom === "create-page-log-in") {
            $(formSelector).find('.update_record_row').removeClass('hidden');
            $(formSelector).find('.required_login_row').removeClass('hidden');
        }
    }
    else {
        $(formSelector).find('a.remove-link').show();
        $(formSelector).find('a.advanced-link').css('display', 'inline-block');


        if (jsonResult.populate_from_salesforce === true && jsonResult.enforce_session_settings) {
            var customFilters = JSON.parse(jsonResult.enforce_session_settings);

            $(formSelector).find('.filter_rules .rule').remove();
            if (customFilters.criteria != null) {
                //$(formSelector).find('input[name="advanced-criteria-input"]').val(customFilters.criteria);
            }
            else {
                $(formSelector).find('input[name="advanced-criteria-input"]').val('');
            }
            if (customFilters.filters && customFilters.filters.length > 0) {
                $(formSelector).find('.without_rules').addClass('hide-custom');
                customFilters.filters.forEach(function (item) {
                    addRuleFilterFormBuilder(item.field, item.friendlyFieldName, item.comparisonValue, item.operator);
                });
            }
            $('.form_builder_block select[name="field_to_filter"]').trigger('change');
        } else {
            $(formSelector).find('.filter_rules .rule').remove();
            $(formSelector).find('.without_rules').removeClass('hide-custom');
            $(formSelector).find('input[name="advanced-criteria-input"]').val('');
        }

    }

    $(formSelector).find('.form-preview .row-fields .field-row').remove();
    loadFieldsFromLocalStorage(blockId);
    $(formSelector).find('.field-list').removeClass('hidden');
    $(formSelector).find('.form-preview').removeClass('full-width');
    $(formSelector).find('.build-field-settings').removeClass('is-hidden');
    $(formSelector).find(".submit-row").trigger("click");

    //Manage multiregions
    if (jsonResult.regionsMultiple) {
        //Apply multiselect widget to region select
        apply_backend_multiselect_group(formSelector + ' select[name="form_build_region_multiple"]', false, jsonResult.regionsMultiple);
    }

    if (jsonResult.is_external_registration == true) {
        //add the class for the case of username
    }

    if (jsonResult.redirectRules) {

        $("#form-builder-block").find('.custom-redirection-rules-actions .row').remove();

        var fieldIdFirst = 0;
        var valueFirst = '';
        var conditionFirst = '';

        var splitChar = '';
        jsonResult.redirectRules.forEach(function (item) {
            var flagCondition = false;
            var flagLabel = false;
            var conditions = item.Conditions;
            splitChar = conditions.indexOf("&&") != -1 ? "&&" : "||";
            var cond = conditions.split(splitChar);
            var conditionList = [];
            cond.forEach(function (entry) {
                var conditionDetail = {};
                var split = entry.indexOf("==") != -1 ? "==" :
                    (entry.indexOf("!=") != -1 ? "!=" :
                        (entry.indexOf("like") != -1 ? "like" :
                            (entry.indexOf("_not_contain_") != -1 ? "_not_contain_" :
                                (entry.indexOf("_contain_") != -1 ? "_contain_" :
                                    (entry.indexOf(">=") != -1 ? ">=" :
                                        (entry.indexOf(">") != -1 ? ">" :
                                            (entry.indexOf("<=") != -1 ? "<=" :
                                                (entry.indexOf("_not_equal_empty_") != -1 ? "_not_equal_empty_" :
                                                    (entry.indexOf("_equal_empty_") != -1 ? "_equal_empty_" :
                                                        "<")))))))));


                var condition = entry.replaceAll(split, "*");
                if (!flagCondition) {
                    fieldIdFirst = condition.split('*')[0];
                    valueFirst = condition.split('*')[1];
                    conditionFirst = split;
                    flagCondition = true;
                }
                conditionDetail.field = condition.split('*')[0];
                conditionDetail.data = condition.split('*')[1];
                conditionDetail.op = split;
                conditionList.push(conditionDetail);
            });
            var labelForFirstVal = '';
            var varJson = sessionStorage.getItem("json-form-builder-data-" + formTokenStore);

            if (varJson != null && varJson != '') {
                var fields = JSON.parse(varJson);
                fields.forEach(function (itemField) {
                    if (itemField.fieldId == fieldIdFirst) {

                        var _label = 'label-' + window.translation.language;
                        itemField.properties.forEach(function (property) {

                            if (property.name == _label &&
                                itemField.delete == false &&
                                (itemField.typeField == 'dropdown' ||
                                    itemField.typeField == 'radio' ||
                                    itemField.typeField == 'checkbox' ||
                                    itemField.typeField == 'number' ||
                                    itemField.typeField == 'multiselect')) {
                                if (!flagLabel) {
                                    labelForFirstVal = property.value;
                                    flagLabel = true;
                                }
                            }
                        });
                    }
                });
            }
            var jsonInfo = JSON.stringify(conditionList).replaceAll('"', '~');
            var conditionText = '';
            switch (conditionFirst) {
                case '==':
                    conditionText = window.translation.equals_to;
                    break;
                case '!=':
                    conditionText = window.translation.not_equals_to;
                    break;
                case '>':
                    conditionText = window.translation.more_than;
                    break;
                case '>=':
                    conditionText = window.translation.greater_than_or_equal_to;
                    break;
                case '<':
                    conditionText = window.translation.less_than;
                    break;
                case '<=':
                    conditionText = window.translation.less_than_or_equal_to;
                    break;
                case '_equal_empty_':
                    conditionText = window.translation.is_equal_to_empty;
                    break;
                case '_not_equal_empty_':
                    conditionText = window.translation.is_equal_not_empty;
                    break;
            }
            $("#form-builder-block").find('.custom-redirection-rules-actions').append(load_redirection_rule(item.ID, labelForFirstVal, item.RedirectionURL, valueFirst, conditionText, jsonInfo, splitChar, conditionList && conditionList.length > 1, 1));
        });
    }

    if (jsonResult.required_login == true) {
        $(formSelector).find('.allow_submitted_data').removeClass('hidden');
    }
    //Hide processing screen
    //if (hideProcessingScreen) {
    finishLoading();
    //}

    if (sourceInvoked != null && sourceInvoked != undefined && sourceInvoked == 'gallery') {
        $(formSelector + " .settings-builder-form-clone").hide();
        $(formSelector + " .region").addClass('hidden');
    } else {
        $(formSelector + " .settings-builder-form-clone").show();
        if (!isArs && $('body.new-template-system').length > 0 && !$(formSelector).find('#sharing-portal-form').is(':checked')) {
            $(formSelector + " .region").removeClass('hidden');
        }
    }

    if (jsonResult.customSessionVar !== null && jsonResult.customSessionVar !== undefined) {
        var customSessionVar = JSON.parse(jsonResult.customSessionVar);
        validate_default_value_text(formSelector, customSessionVar);
    }
};
$(document).ready(function () {
    verify_autocomplete_for_address_component();

    verify_use_user_location_address_component();

    verify_resize_action();

    checkForExpiredItemsSessionStorage();

    verify_colors_cancel_button();

    verify_colors_add_record_button();
});

window.expirationTime = 5 * 60 * 1000;
function verify_colors_add_record_button() {

    try {
        const addMoreRecordButtonSelector = '.formBlock form .add-more-button';
        const addMoreRecordButton = $(addMoreRecordButtonSelector).first();
        if (addMoreRecordButton.length > 0) {
            const submitButton = $('.formBlock form .submit-group .button.submit-button').first();

            if (submitButton.length > 0) {
                const color = submitButton.css('background-color');
                $(addMoreRecordButtonSelector).css({
                    'color': color
                });

                $('.formBlock form .add-record-button-container').css({
                    'border-color': color,
                });

                $('.formBlock form .add-record-button-container i.fa').css({
                    'color': color,
                });
            }
        }
    } catch (e) {
        console.error(e);
    }
}
function verify_colors_cancel_button() {
    try {
        const cancelButtonSelector = '.formBlock form .submit-group .button.custom-cancel-button';
        const cancelButton = $(cancelButtonSelector).first();

        if (cancelButton.length > 0) {
            const submitButton = cancelButton.parent().find('.button.submit-button').first();

            if (submitButton.length > 0) {
                const color = submitButton.css('background-color');
                $(cancelButtonSelector).css({
                    'border-color': color,
                    'color': color
                });
            }
        }
    } catch (e) {
        console.error(e);
    }
}
function HandleProcessingScreenFormBlock(action, isPartnerPortalPage, containsForm, self) {


    if (isPartnerPortalPage && !containsForm) {
        if (action == 'show') {
            display_processing_screen_ps(true);
        }
        else {
            display_processing_screen_ps(false);
        }
    }
    else if (action == 'show') {
        self.find('.processing_screen').show();
    }
    else {
        self.find('.processing_screen').hide();
    }
}



function verify_resize_action() {
    try {
        if ($($('body form[id^="form-custom-"].form-component').length > 0)) {
            $('body form[id^="form-custom-"].form-component').each(function () {
                let formId = $(this).prop("id");
                let sessionKey = 'resize-' + formId;

                let isARSPage = $('body').hasClass('ars-page');
                let formData = sessionStorage.getItem(sessionKey);
                if (formData != null && formData !== undefined && formData !== '') {
                    let objectData = JSON.parse(formData);

                    if (objectData !== undefined && objectData !== null && objectData.id == formId && objectData.data !== '') {
                        let individualData = decodeURIComponent(objectData.data).split('&');
                        for (let i = 0; i < individualData.length; i++) {
                            let item = individualData[i];

                            if (item !== '' && item.indexOf('=') > -1) {
                                let parts = item.split('=');
                                let fieldName = parts[0];
                                let tmpField = $('#' + formId + ' [name="' + fieldName + '"]');

                                if (tmpField.length > 0) {
                                    if (tmpField.prop("multiple") === true) {
                                        tmpField.find('option[value="' + parts[1] + '"]').prop("selected", "selected");
                                    } else if (tmpField.prop("type") == "radio" || tmpField.prop("type")== "checkbox") {
                                        $('input[name="' + fieldName + '"][value="' + parts[1] + '"]').prop("checked", true);
                                    } else {
                                        $('#' + formId + ' [name="' + fieldName + '"]').val(parts[1]);
                                    }
                                }
                            }
                        }
                    }

                    if (isARSPage === false)// the user can back multiple pages
                        sessionStorage.removeItem(sessionKey);
                }
            });
        }
    } catch (e) {
        window.console && console.error(e)
    }
}

function verify_use_user_location_address_component() {
    if ($('div.section.address-component-use-user-location').length > 0) {
        address_component_use_user_location_address();

    }
}

function address_component_use_user_location_address() {
    var geolocationActive = window.geolocationActive != null ? window.geolocationActive : true;
    if (geolocationActive) {
        if (navigator.geolocation) {
            var optionsGeo = {
                enableHighAccuracy: false,
                timeout: 10000,
                maximumAge: 120000
            };
            let city = '';
            let state = '';
            let country = '';
            let street = '';
            let latitude = '';
            let longitude = '';
            navigator.geolocation.getCurrentPosition(function (position) {
                var pos = {
                    lat: position.coords.latitude,
                    lng: position.coords.longitude
                };


                //Call the GeoLocation API get the address  s
                $.get(get_geo_url("reversegeo") + "?latitude=" + pos.lat + "&longitude=" + pos.lng, function (data) {

                    if (typeof (data) == "string") {
                        data = JSON.parse(data);
                    }

                    if (data.status == 1 || data.code == 200) {
                        city = data.city;
                        state = data.regioncode1;
                        country = data.country;
                        zipcode = data.postalcode;
                        latitude = data.latitude;
                        longitude = data.longitude;

                        $('div.section.address-component-use-user-location').each(function () {
                            put_value_by_selector_from_parent($(this), 'city', city);
                            put_value_by_selector_from_parent($(this), 'state', state);
                            put_value_by_selector_from_parent($(this), 'country', country);
                            put_value_by_selector_from_parent($(this), 'zipcode', zipcode);
                            put_value_by_selector_from_parent($(this), 'street', '');
                            put_value_by_selector_from_parent($(this), 'latitude', latitude);
                            put_value_by_selector_from_parent($(this), 'longitude', longitude);
                            $(this).removeClass("pending");
                        });
                    }
                    else {
                        window.GeoLocationAPIRetries--;
                        if (window.GeoLocationAPIRetries > 0) {

                            setTimeout(function () {
                                if (window.GeoLocationAPIRetries > 0) {
                                    get_current_user_address();
                                }
                            }, 3000);
                        }
                    }
                });
            }, function () {
                console.log("getCurrentPosition is not supported....");

            }, optionsGeo);
        }
    }
}


function set_default_datetime_form_blocks() {
    if ($(".formBlock .date-picker-input").length > 0) {
        $(".formBlock .date-picker-input").each(function () {
            var picker = $(this);
            var pickerName = $(this).attr("name");
            var default_datetime = $('input[name="' + pickerName + "_default_date_time" + '"]').val();
            var dateFormat = "M/D/YYYY";
            var default_local = "en-US";
            var TimeFormat = "h:mm A";
            var currentLocale = window.translation['locale_iso'];

            if (default_datetime == "true") {
                dateFormat = MomentDateFormat;
                moment.locale(currentLocale);
                picker.val(moment().format(MomentDateFormat));

                // validate if is needed to assign hour and seconds
                if (picker.parent().hasClass("left") == true) {

                    var _parent_picker = picker.parent().parent();
                    var input_hour = _parent_picker.find('input[data-type="hour"]');
                    var input_min = _parent_picker.find('input[data-type="minute"]');
                    var input_format = _parent_picker.find('select[data-type="format"]');
                    if (input_hour.length > 0) {
                        //validating if is 12 or 24 format time
                        if (input_format.length > 0) {
                            input_hour.val(moment().format("h"));
                            input_format.val(moment().format("A"));
                        } else {
                            input_hour.val(moment().format("HH"));
                        }

                    }
                    if (input_min.length > 0) {
                        input_min.val(moment().format("mm"));
                    }
                }
            }

            $(this).on('click', function () {

                try {
                    if ($(this).datepicker("widget").is(":visible") == false) {
                        $(this).focus();
                    }

                } catch (e) {
                    window.console && console.error(e)
                }

            });
        });

    }
}


function verify_autocomplete_for_address_component() {
    if ($('div.address-component input[name="useAutoComplete"][value="true"]').length > 0) {

        var includeApi = false;
        $('div.address-component input[name="useAutoComplete"][value="true"]').each(function () {
            //get parent
            let parent = $(this).parents('.address-component').first();

            // set all the fields of component to readonly //custom-disabled
            parent.find('input.address-component').prop('readonly', true);
            parent.find('input.address-component').addClass('custom-disabled-opacity');
            parent.find('select.address-component').addClass('custom-disabled-opacity');

            includeApi = true;
        });

        if (includeApi) {
            //initialize google maps
            add_autocomplete_feature_to_formbuilder();
        }
    }
}

function add_autocomplete_feature_to_formbuilder() {

    if (is_googlemapapi_loaded()) {
        add_autocomplete_feature_to_formbuilder_inner();
    } else {

        load_google_map_api(true, add_autocomplete_feature_to_formbuilder_inner);
    }

}
function add_autocomplete_feature_to_formbuilder_inner() {

    navigator.permissions.query({
        name: 'geolocation'
    }).then(permission =>
        // is geolocation granted?
        permission.state === "granted"
            ? 'Yes'
            : 'No'
    ).then(allowed => add_autocomplete_feature_to_address_component_field(allowed))

}

function get_street_from_address_component(component) {
    return component.types.find(type => (type == 'route'));
}
function get_streetnumber_from_address_component(component) {
    return component.types.find(type => (type == 'street_number'));
}


function calculate_city_from_address_component(component) {
    var componentElement = undefined;

    componentElement = component.find(it => it.types.find(type => type == 'locality'));

    if (componentElement == undefined) {
        componentElement = component.find(it => it.types.find(type => type == 'sublocality_level_2'));
    }

    if (componentElement === undefined) {
        componentElement = component.find(it => it.types.find(type => type == 'sublocality_level_1'));
    }

    if (componentElement === undefined) {
        componentElement = component.find(it => it.types.find(type => type == 'sublocality'));
    }

    if (componentElement === undefined) {
        componentElement = component.find(it => it.types.find(type => type == 'neighborhood'));
    }

    if (componentElement === undefined) {
        componentElement = component.find(it => it.types.find(type => type == 'administrative_area_level_3'));
    }

    if (componentElement === undefined) {
        componentElement = component.find(it => it.types.find(type => type == 'route'));
    }


    return componentElement;
}

function get_state_from_address_component(component) {
    return component.types.find(type => (type == 'administrative_area_level_1'));
}

function get_country_from_address_component(component) {
    return component.types.find(type => (type == 'country'));
}

function get_postalcode_from_address_component(component) {
    return component.types.find(type => (type == 'postal_code'));
}

function add_autocomplete_feature_to_address_component_field(navigatorAllowed) {
    // if latLongitude are not mapped to salesforce, then will be interesting don't request them
    let options = {
        fields: ["address_components", "geometry"],
    };

    const regionBias = $('input[name="address-suggestion-bias"]:first').val();

    if (regionBias !== null && regionBias !== undefined && regionBias !== '') {
        let multipleCountries = regionBias.split("|");
        if (multipleCountries.length > 1) {
            options["componentRestrictions"] = { country: multipleCountries };
        } else {
            options["componentRestrictions"] = { country: regionBias };
        }
    }

    $('input[type="text"].address-component-autocomplete').each(function () {
        var parentElement = $(this).parents('div.address-component');
        var places = new google.maps.places.Autocomplete($(this)[0], options);

        google.maps.event.addListener(places, 'place_changed', function () {
            const place = places.getPlace();
            if (place !== undefined && place !== null) {
                const streetNumberComponent = place.address_components.find(get_streetnumber_from_address_component);
                const streetComponent = place.address_components.find(get_street_from_address_component);
                const cityComponent = calculate_city_from_address_component(place.address_components);
                const stateComponent = place.address_components.find(get_state_from_address_component);
                const countryComponent = place.address_components.find(get_country_from_address_component);
                const postalCodeComponent = place.address_components.find(get_postalcode_from_address_component);
                const latitude = place.geometry.location.lat();
                const longitude = place.geometry.location.lng();

                put_street_for_address_component_field(parentElement, streetNumberComponent, streetComponent)
                put_value_for_address_component_field(parentElement, 'city', cityComponent)
                put_value_for_address_component_field(parentElement, 'state', stateComponent)
                put_value_for_address_component_field(parentElement, 'country', countryComponent)
                put_value_for_address_component_field(parentElement, 'zipcode', postalCodeComponent)
                put_value_by_selector_from_parent(parentElement, 'latitude', latitude)
                put_value_by_selector_from_parent(parentElement, 'longitude', longitude)
            }

        });

    });

}


function put_street_for_address_component_field(parentElement, streetNumberComponent, streetComponent) {
    let streetAddress = '';
    let streetNumber = '';
    let order = 0; // by default first number and after street name
    let locale = window.translation['locale_iso'];

    if (locale !== undefined && locale.indexOf('es') > -1)
        order = 1;

    if (streetComponent !== undefined)
        streetAddress = streetComponent.long_name;

    if (streetNumberComponent !== undefined)
        streetNumber += streetNumberComponent.long_name + ' ';

    if (order == 0)
        streetAddress = streetNumber + ' ' + streetAddress;
    else
        streetAddress = streetAddress + ' ' + streetNumber;

    parentElement.find('input.address-component.address-component-street').val(streetAddress)
}

function put_value_for_address_component_field(parentElement, type, addresscomponent) {
    if (parentElement !== undefined && parentElement !== null) {

        let valueToSet = '';
        if (addresscomponent !== undefined && addresscomponent !== null)
            if (type == 'state')
                valueToSet = addresscomponent.short_name;
            else
                valueToSet = addresscomponent.long_name;

        put_value_by_selector_from_parent(parentElement, type, valueToSet)
    }
}

function put_value_by_selector_from_parent(parentElement, type, value) {
    let selector = '';
    if (type == 'city') {
        selector = 'input.address-component.address-component-city';
    } else if (type == 'state') {
        selector = 'input.address-component.address-component-state';
    } else if (type == 'zipcode') {
        selector = 'input.address-component.address-component-zipcode';
    } else if (type === 'country') {
        selector = 'select.address-component.address-component-country';
    } else if (type == 'latitude') {
        selector = 'input.address-component.address-component-latitude';
    } else if (type == 'longitude') {
        selector = 'input.address-component.address-component-longitude';
    }

    if (selector !== '') {
        parentElement.find(selector).val(value);
    }
}

function after_translation_resource_load_forms() {
    form_block_events();
    add_verification_code_events();
    if (typeof load_payment_component_frontend != "undefined")
        load_payment_component_frontend();

    //verify_autocomplete_for_address_component();

    //verify_use_user_location_address_component();

    populateSPFormAI();

    add_event_for_add_more_button();
}

function populateSPFormAI() {
    if ($('input[name="special-form-ai-block"]').length > 0) {
        $('input[name="special-form-ai-block"]').each(function () {
            var dataBlockId = $(this).val();
            var dataFormId = $('.formBlock[data-block-id="' + dataBlockId + '"]').attr('data-form-id');
            var dataRecId = $(this).attr('data-vo-id');
            PopulateCustomRecId($('[data-form-id="' + dataFormId + '"]'), '/p/' + dataRecId + '');
            var self = $('.formBlock[data-form-id="' + dataFormId + '"]');
            PopulateFromBlockWithDataFromSF(self, false)
        });
    }
}

function checkBit(bitmap, index) {
    // Given an 8-bit binary string, get the index / 8 character,
    // And convert the index % 8 bit to true or false
    return !!(bitmap.charCodeAt(index >> 3) & (128 >> (index % 8)));
}
function getValidPicklistValues(controlIndex, dependentListValues) {
    // Return a list of matching options given the control value
    return dependentListValues.filter(function (item) {
        // atob is base64-decoding.        
        return checkBit(atob(item.validFor), controlIndex);
    });
}

function dependentPicklistInnerActionRadio(sfFieldName, self, dataType) {
    if ($('input[type="radio"][data-controller-name="' + sfFieldName + '"]').length > 0) {
        var selectedIndex = 0;
        let areOptionsInline = false;
        var controlledField = $('input[type="radio"][data-controller-name="' + sfFieldName + '"]');

        if (dataType == 'dropdown') {
            selectedIndex = self.prop('selectedIndex');
        }
        else if (dataType == 'radio') {
            var nameRadio = self.prop('name');
            var radioButtons = $('input[name="' + nameRadio + '"]');
            selectedIndex = radioButtons.index(radioButtons.filter(':checked')) + 1;
            let inlineFather = controlledField.closest('.inline-items-section');
            if (inlineFather !== null && inlineFather !== undefined && inlineFather.length > 0)
                areOptionsInline = true;
        }
        else {
            var nameRadio = self.prop('name');
            var radioButtons = $('input[name="' + nameRadio + '"]');
            var indxSelected = radioButtons.filter(':checked').length == 0 ? ($('input[name="' + nameRadio + '"]').length - 1) : radioButtons.index(radioButtons.filter(':checked'));
            selectedIndex = $('input[name="' + nameRadio + '"]').length - indxSelected;
        }
        $('input[data-controller-name="HOC__Schedule_Type__c"]').prop('checked', false);
        var dependentListValues = [];

        selectedIndex = selectedIndex - 1;
        if (selectedIndex === -1) {
            controlledField.attr('disabled', true);
        } else {
            controlledField.attr('disabled', false);
        }

        
        var isScale = false;
        controlledField.each(function () {
            var itemOption = $(this);
            var dataTypeInfo = itemOption.attr('data-type');
            if (dataTypeInfo != 'scalerate' && dataTypeInfo != 'intensityrate') {
                if (areOptionsInline === true) {
                    itemOption.closest('.radio-input-inline').hide();
                } else {
                    itemOption.closest('.columns').hide();
                }
            }
            else {
                isScale = true;
                var forItem = itemOption.attr('id');
                $('label[for="' + forItem + '"]').attr('style', 'width: 0%; display:none;');
            }
            itemOption.prop('disabled', true);
            var validFor = itemOption.data('validfor');
            var itemValue = itemOption.prop('value');
            var itemLabel = itemOption.text();
            dependentListValues.push({ validFor: validFor, value: itemValue, label: itemLabel });
        });

        var validOptions = getValidPicklistValues(selectedIndex, dependentListValues);
        if (!isScale) {
            validOptions.forEach(function (item) {
                if (item.value !== '') {
                    if (areOptionsInline === true)
                        $('input[type="radio"][data-controller-name="' + sfFieldName + '"][value="' + item.value + '"]').closest('.radio-input-inline').show();
                     else
                        $('input[type="radio"][data-controller-name="' + sfFieldName + '"][value="' + item.value + '"]').closest('.columns').show();
                    $('input[type="radio"][data-controller-name="' + sfFieldName + '"][value="' + item.value + '"]').prop('disabled', false);
                }
            })
        }
        else {
            var percentStyle = validOptions.length == 0 ? 0 : 100 / validOptions.length;
            validOptions.forEach(function (item) {
                var forItem = $('input[type="radio"][data-controller-name="' + sfFieldName + '"][value="' + item.value + '"]').attr('id');
                $('input[type="radio"][data-controller-name="' + sfFieldName + '"][value="' + item.value + '"]').prop('disabled', false);
                $('label[for="' + forItem + '"]').attr('style', 'width: ' + percentStyle + '%;');
            });
        }
    }
}

function dependentPicklistInnerActionSelect(sfFieldName, self, dataType) {
    if ($('select[data-controller-name="' + sfFieldName + '"]').length > 0) {
        var selectedIndex = self.prop('selectedIndex');
        if (dataType == 'dropdown') {
            selectedIndex = self.prop('selectedIndex');
        }
        else if (dataType == 'radio') {
            var nameRadio = self.prop('name');
            var radioButtons = $('input[name="' + nameRadio + '"]');
            selectedIndex = radioButtons.index(radioButtons.filter(':checked')) + 1;
        }
        else {
            var nameRadio = self.prop('name');
            var radioButtons = $('input[name="' + nameRadio + '"]');
            selectedIndex = $('input[name="' + nameRadio + '"]').length - radioButtons.index(radioButtons.filter(':checked'));
        }
        var controlledField = $('select[data-controller-name="' + sfFieldName + '"]');
        var dependentListValues = [];
        selectedIndex = selectedIndex - 1;

        if (selectedIndex === -1) {
            controlledField.attr('disabled', true);
        } else {
            controlledField.attr('disabled', false);
        }
        controlledField.find('option[value!=""]').each(function () {
            var itemOption = $(this);
            itemOption.hide();
            itemOption.prop('disabled', true);
            var validFor = itemOption.data('validfor');
            var itemValue = itemOption.prop('value');
            var itemLabel = itemOption.text();
            dependentListValues.push({ validFor: validFor, value: itemValue, label: itemLabel });
        });

        var validOptions = getValidPicklistValues(selectedIndex, dependentListValues);

        validOptions.forEach(function (item) {
            if (item.value !== '') {
                controlledField.find('option[value="' + item.value + '"]').show();
                controlledField.find('option[value="' + item.value + '"]').prop('disabled', false);
            }
        });
        if (controlledField.find(':selected').prop('disabled')) {
            controlledField.val('').trigger('change');
        }
    }
}


function verify_address_suggestion_enable(formElement) {
    let isActive = false;

    if (formElement !== null && formElement !== undefined && formElement.find('.section.address-component-use-address-suggestion input[name="useAddressVerification"][value="true"]').length > 0)
        isActive = true;

    return isActive;
}

function find_address_suggestion_for_section(sectionElement, formId) {
    let submitTheForm = true;
    let street = $.trim(sectionElement.find('input.address-component-street').val());
    let city = $.trim(sectionElement.find('input.address-component-city').val());
    let state = $.trim(sectionElement.find('input.address-component-state').val());
    let country = $.trim(sectionElement.find('select.address-component-country').val());
    let zipcode = $.trim(sectionElement.find('input.address-component-zipcode').val());
    let dataMachineName = sectionElement.data('machine-name');


    let theOriginalData = '';

    if (street != '')
        theOriginalData += street.replace(/\s+/g, " ") + ' ';

    if (city != '')
        theOriginalData += $.trim(city) + ' ';

    if (state != '')
        theOriginalData += $.trim(state) + ' ';

    if (zipcode != '')
        theOriginalData += $.trim(zipcode) + ' ';

    if (country != '')
        theOriginalData += $.trim(country);

    if (theOriginalData != '') {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);
        //lest go to invoke the service to identify suggestions

        $.ajax({
            type: "GET",
            url: urlSite + "autocomplete-address?query=" + encodeURIComponent(theOriginalData) + "&sessionToken=" + get_session_token(),
        }).done(function (data) {
            submitTheForm = process_autocomplete_location_data(data, theOriginalData, null, dataMachineName, formId);

        }).fail(function (jqXHR, status, error) {
            console.log("status:", status, "error:", error);

        }).always(function () {
            $(".processing_screen").hide();

            if (submitTheForm === true) {
                sectionElement.addClass('address-suggestion-completed');
                sessionStorage.removeItem("session_token");

                if (sectionElement.parents('.formBlock.blockContainer').hasClass('arsBlock')) {
                    $('.actions_branch_logic .next_option a').trigger('click');
                } else {
                    $('#form-custom-' + formId).find('.submit-group a.submit-button').trigger('click');
                }

            }
        });
        return false;
    } else
        return true;

}

function iterate_over_address_component_address_suggestions(formElement, formId) {
    let canContinue = true;
    try {

        formElement.find('.section.address-component-use-address-suggestion input[name="useAddressVerification"][value="true"]').each(function () {
            let parentSection = $(this).parents('.section.address-component-use-address-suggestion');
            let hasprocessedClass = parentSection.hasClass('address-suggestion-completed');

            if (hasprocessedClass == false) {
                canContinue = find_address_suggestion_for_section(parentSection, formId);

                if (canContinue === false) // to breka iteration
                    return canContinue;
            }
        });

    } catch (e) {
        window.console && console.error(e)
    }
    return canContinue;
}

function updateListRedirections(formId, ruleId, status) {

    var tokenForm = formId;
    var jsonData = sessionStorage.getItem('redirectionList_' + tokenForm);
    if (jsonData) {
        sessionStorage.removeItem('redirectionList_' + tokenForm);
        var tableList = JSON.parse(jsonData);
        var ListItem = [];
        if (tableList && tableList.length > 0) {
            tableList.forEach(function (item) {

                if (item.id == ruleId) {
                    item.status = status;
                }
                ListItem.push(item);
            });
        }
        sessionStorage.setItem('redirectionList_' + tokenForm, JSON.stringify(ListItem));
    }
}

function getRedirectByRules(formId) {
    var tokenForm = formId;
    var urlRedirectInfo = null;
    var jsonData = sessionStorage.getItem('redirectionList_' + tokenForm);
    if (jsonData) {
        var tableList = JSON.parse(jsonData);
        if (tableList && tableList.length > 0) {
            tableList.forEach(function (item) {
                if (item.status && urlRedirectInfo == null) {
                    urlRedirectInfo = item.urlRedirect;
                }
            });
        }
    }
    return urlRedirectInfo;
}

function loadValuesInSessionStorageForRedirect(jsonDataRedirect, formId) {

    var tokenForm = formId;
    if (jsonDataRedirect && jsonDataRedirect.length > 0) {
        var ListItem = [];
        jsonDataRedirect.forEach(function (item) {
            var itemDetail = {};
            itemDetail.id = item.id;
            itemDetail.urlRedirect = item.urlRedirect;
            itemDetail.status = false;
            ListItem.push(itemDetail);
        });
        if (ListItem.length > 0) {
            sessionStorage.setItem('redirectionList_' + tokenForm, JSON.stringify(ListItem));
        }
        else {
            sessionStorage.removeItem('redirectionList_' + tokenForm);
        }
    }
    else {
        sessionStorage.removeItem('redirectionList_' + tokenForm);
    }
}


function form_initialize_date_picker(self) {
    var selectorDate = "input.date-picker-form-builder";
    var currentLocale = window.translation['locale_iso'];

    self.find(selectorDate).each(function () {
        var InputName = $(this).attr("name");

        moment().tz(window.translation['time_zone'])
        moment.locale(currentLocale);
        if (InputName.indexOf('[value]') != -1) {
            var FieldId = InputName.replace('[value]', '');
            if ($("input[name='" + FieldId + "[onlyFuture]']").length > 0 ||
                $("input[name='" + FieldId + "[onlyPast]']").length > 0 ||
                $("input[name='" + FieldId + "[allowCurrentDate]']").length > 0 ||
                $("input[name='" + FieldId + "[maxDaysInFuture]']").length > 0 ||
                $("input[name='" + FieldId + "[maxDaysInPast]']").length > 0 ||
                $("input[name='" + FieldId + "[validatorDateField]']").length > 0 ||
                $("input[name='" + FieldId + "[ruleToValidate]']").length > 0 ||
                $("input.related-" + FieldId).length > 0 ||
                $(this).data('minimum-age') && $(this).data('min-age')) {
                customDateConfiguration(FieldId);
            }
            else {
                var data = $(this).data();
                var DatePickerFormat = data.shortDatePattern;
                var language_ISO = window.translation.language_iso;
                var date_language = language_ISO.split('-')[0];

                var setCurrentDate = $("input[name='" + FieldId + "[value]_default_date_time']").val() === "true";
                var optionsDatePicker = {
                    format: DatePickerFormat,
                    weekStart: get_start_day_of_week_from_locale(),
                    language: date_language,

                };

                if (setCurrentDate === true) {
                    var initialDate = GetCurrentDay();
                    optionsDatePicker.initialDate = initialDate;
                }

                $(this).fdatepicker(optionsDatePicker).on('changeDate', function (ev) {
                    if ($(this).closest('form.validate-pp').length > 0 && $(this).rules() != null) {
                        $(this).valid();
                    }
                });
            }
        }
    });

    self.on('change', selectorDate, function () {
        var name = $(this).attr('name');
        $('input[name="' + name + '"]').trigger('changeDate');
    });
    setTimeout(function () {
        self.find('button.inclusive-dates__calendar-button').each(function () {
            $(this).attr('aria-label', window.translation.btn_open_calendar)
        });
    }, 2000);
    
    self.find('label.inclusive-dates__label').remove();
}


function LoadDataForRelatedFieldsInfo(filesDetail) {
    var filesDetailInfo = undefined;
    var fieldListInfo = undefined;

    if (filesDetail) {
        filesDetailInfo = filesDetail['Data'];
        fieldListInfo = filesDetail['Fields'];
    }

    var fieldList = new Array();
    if (fieldListInfo) {
        fieldList = JSON.parse(fieldListInfo);
    }

    var dataSet = new Array();
    if (filesDetailInfo) {
        dataSet = JSON.parse(filesDetailInfo);
    }

    if (fieldList.length > 0) {
        fieldList.forEach(function (value) {
            var relatedFilesId = '#list-files-details-' + value;
            $(relatedFilesId).html('');
            ConfigureFileRelatedFilesList(relatedFilesId, dataSet, value);
        });
    }
}


function loadDataForm(jsonResult, hasReadOnly, self, fromVOWizard, isMultiLanguage, autoSubmit) {
    
    if (fromVOWizard) {
        //window.sle
    }

    var dontPull = 'False';
    if (jsonResult) {
        self.find('.message_sid_querystring').addClass('hidden');
        self.find('form').find('a.submit-button').removeAttr('disabled');

        if (jsonResult['code'] == '200') {
            if (jsonResult['Record'] || jsonResult['FilesDetails']) {
                var displayLogic = null;
                if (jsonResult['DisplayLogicList']) {
                    displayLogic = jsonResult['DisplayLogicList'];
                }
                if (jsonResult['Record']) {
                    var record = jsonResult['Record'];
                    InnerLogicToLoadData(hasReadOnly, self, record, undefined, autoSubmit,displayLogic);
                }
                if (jsonResult['FilesDetails']) {
                    var filesDetail = jsonResult['FilesDetails']['filesDetails'];
                    LoadDataForRelatedFieldsInfo(filesDetail);
                }

                if (jsonResult['DisplayLogicList']) {
                    process_display_logic(displayLogic, self);
                }
            }
            else {
                self.find('.message_sid_querystring').removeClass('hidden');
                self.find('form').find('a.submit-button').attr('disabled', 'disabled');
            }
            if (isMultiLanguage === "true") {
                if (jsonResult['AdditionalRecords']) {

                    var itemLangs = self.find('form').find('input.language-definition');
                    var currentLanguages = [];
                    if (itemLangs !== null && itemLangs !== undefined && itemLangs.length > 0) {
                        itemLangs.each(function () {
                            var it = $(this);
                            var itemL = {
                                idLang: it.attr('data-language-id'),
                                langName: it.val()
                            };
                            currentLanguages.push(itemL);
                        });
                    } 

                    jsonResult['AdditionalRecords'].forEach(function (item) {
                        var instancePrefix = window.instance_prefix;
                        if (isHybridIntegration())
                            instancePrefix = window.instance_prefix_hybrid;
                        var idLang = 0;
                        currentLanguages.forEach(function (it) {
                            if (it.langName.toLowerCase() == item[instancePrefix + "Language__c"].toLowerCase()) {
                                idLang = it.idLang;
                            }
                        });
                        if (idLang !== 0) {
                            var fieldName = item[instancePrefix + "Field_Name__c"] + "_" + idLang;
                            self.find('form').find('input[name="' + fieldName + '"]').val(item.Id);
                            var fieldHidden = self.find('input.sf_field[value="' + item[instancePrefix + "Field_Name__c"] + '"]')
                            var idField = fieldHidden.attr('name');
                            idField = idField.replace('[sf_field]', '');
                            if (item[instancePrefix + "Long_Value_Required__c"] == true) {
                                var idTexArea = idField + "[value]" + idLang;
                                if (CKEDITOR.instances[idTexArea]) {
                                    CKEDITOR.instances[idTexArea].destroy();
                                }
                                self.find('form').find('textarea[id="' + idTexArea + '"]').val(item[instancePrefix + "Long_Field_Value__c"]);
                                initialize_ckeditor_from_id(idTexArea);
                            } else {
                                self.find('form').find('input[id="' + idField + '[value]' + idLang + '"]').val(item[instancePrefix + "Field_Value__c"]);
                            }
                                

                        }
                    });
                }

            }

        }
    }
}



function InnerLogicToLoadData(hasReadOnly, self, record, relationName, autoSubmit,displayLogic) {
    
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    Object.keys(record).forEach(function (key, value) {
        if (key !== 'attributes' && record[key] && typeof record[key] === 'object') {
            InnerLogicToLoadData(hasReadOnly, self, record[key], key, autoSubmit,displayLogic);
        }
        else if (key !== 'attributes') {
            if (hasReadOnly === false) {
                value = record[key];
                var valueText = relationName != undefined && relationName != '' ? (relationName + "." + key) : key;
                var fieldHidden = self.find('input.sf_field[value="' + valueText + '"]');
                if (fieldHidden && value) {

                    var fieldSection = fieldHidden.parent();
                    if (value && relationName != undefined && relationName != '' && key.toLowerCase() == 'id') {
                        self.find('input.referenceId-' + relationName).val(value);
                    }
                    var fieldType = fieldSection.find('input[name*=type]').first().val();
                    switch (fieldType) {
                        case 'textbox':
                        case 'currency':
                        case 'url':
                        case 'email':
                            dontPull = fieldSection.find('input[type="text"]').first().attr('data-dontretsf');
                            if (fieldSection.find('input[type="hidden"]').first().attr('data-field-type') == 'signature') {
                                //value = value.replace('localhost','localhost:44300');
                                fieldSection.find('img.default-signature').remove();
                                fieldSection.find('span.signature_pad').hide();
                                fieldSection.find('span.signature_pad').after($('<img class="default-signature" src="' + value + '">'));
                                fieldSection.find('input[type="hidden"]').first().val(value);
                            }
                            if (fieldType == 'currency') {
                                try
                                {   //HOC3-18213
                                    let decimalMark = fieldSection.find('input[name*="decimalMark"]').val();
                                    if (value !== null && value !== undefined && decimalMark != ".") {
                                        value = value + '';
                                        value = value.replace('.', decimalMark)
                                    }
                                } catch (e) {
                                    window.console && console.error(e)
                                }
                            }
                            if (dontPull == 'False') {
                                fieldSection.find('input[type="text"]').first().val(value);
                                fieldSection.find('input[type="text"]').first().trigger('change');
                            }
                            break;
                        case 'formula':
                            fieldSection.find('div.formula-data-section').first().html('<p>' + value + '</p>');
                            break;
                        case 'calculate':
                            fieldSection.find('div.formula-data-section').first().html('<p>' + value + '</p>');
                            break;
                        case 'textarea':
                            dontPull = fieldSection.find('textarea').first().attr('data-dontretsf');
                            if (dontPull == 'False') {
                                fieldSection.find('textarea').val(value);
                                if (fieldSection.find('textarea.rich_text').length > 0) {
                                    var textareaId = fieldSection.find('textarea.rich_text').attr('id');
                                    if (CKEDITOR.instances[textareaId]) {
                                        CKEDITOR.instances[textareaId].destroy();
                                    }
                                    fieldSection.find('textarea').val(value);
                                    initialize_ckeditor_from_id(textareaId);
                                }

                            }

                            break;
                        case 'hidden':
                            dontPull = fieldSection.find('input[type="hidden"]').first().attr('data-dontretsf');
                            if (dontPull == 'False')
                                fieldSection.find('input[type="hidden"]').first().val(value);
                            break;
                        case 'number':
                            dontPull = fieldSection.find('input[type="number"]').first().attr('data-dontretsf');
                            if (dontPull == 'False') {
                                fieldSection.find('input[type="number"]').first().val(value);
                                fieldSection.find('input[type="number"]').first().trigger("change");
                            }else if(dontPull == undefined){
                                dontPull = fieldSection.find('input[data-type="number"]').first().attr('data-dontretsf');
                                if(dontPull != undefined && dontPull == 'False'){
                                    fieldSection.find('input[data-type="number"]').first().val(value);
                                    fieldSection.find('input[data-type="number"]').first().trigger("change");
                                    const element = AutoNumeric.getAutoNumericElement(fieldSection.find('input[data-type="number"]').first()[0]);
                                    if (element) {
                                        element.set(value);
                                    }
                                }else{
                                    dontPull = fieldSection.find('div.rating-class-section').first().attr('data-dontretsf');
                                    if(dontPull != undefined && dontPull == 'False'){
                                        fieldSection.find('div.rating-class-section').find('input[value="' + value + '"]').prop('checked', true);
                                    }
                                }
                            }

                            break;
                        case 'select':
                            dontPull = 'False';
                            if (fieldSection.find('.code-validation-input').length > 0) {
                                var selector = fieldSection.find('.code-validation-input').attr('data-selector');
                                var innerToken = $('input[name="options-' + selector + '"]').val();
                                $.ajax({
                                    method: "POST",
                                    url: urlSite + 'check-code',
                                    data: { valueFromSF: value, innerToken: innerToken },
                                    beforeSend: function () {
                                        fieldSection.find('.validated-check').addClass('hide');
                                        fieldSection.find('.not-validated-check').addClass('hide');
                                    }
                                }).done(function (data) {
                                    var jsonResult = JSON.parse(data);
                                    if (jsonResult.code == "200") {
                                        var option = '';
                                        if (jsonResult.found) {
                                            fieldSection.find('.code-validation-input').val(jsonResult.label)
                                            $(fieldSection).find('.validated-check').removeClass('hide');
                                            option = '<option value="' + jsonResult.value + '" selected>' + jsonResult.label + '</option>';
                                            value = jsonResult.value;
                                            fieldSection.find('.code-validation-input').removeAttr('data-not-valid');
                                            fieldSection.find('.code-validation-input').attr('data-checked', 'true');
                                        } else {
                                            option = '<option value="' + value + '" selected>' + value + '</option>';
                                            $(fieldSection).find('.not-validated-check').removeClass('hide');
                                            fieldSection.find('.code-validation-input').removeAttr('data-checked');
                                            fieldSection.find('.code-validation-input').attr('data-not-valid', 'true');
                                        }
                                        fieldSection.find('.code-validation-input').data('missing-validation', false);
                                        fieldSection.find('.code-validation-input').trigger('focusout');
                                        $('select[name="' + selector + '"]').append(option);
                                        $('select[name="' + selector + '"]').trigger('change');


                                    }
                                }).always(function () {
                                });
                            }
                            if (fieldSection.find('select').length > 0) {
                                dontPull = fieldSection.find('select').first().attr('data-dontretsf');
                            }
                            else if (fieldSection.find('input[type="hidden"].innerSettings').length > 0) {
                                dontPull = fieldSection.find('input[type="hidden"].innerSettings').first().attr('data-dontretsf');
                            }
                            if (dontPull == 'False' || fieldSection.find('label.read-only-text').length > 0) {
                                if (fieldSection.find('label.read-only-text').length > 0) {
                                    let values = "";
                                    let valueToDisplay = "";
                                    let labelFromSF = false;
                                    if (fieldSection.find('input.readonly-values-select').length > 0) {
                                        //it means the select is readonly. The following two lines are to fix correctly the bug reported in LHH-19517
                                        let fieldId = fieldSection.find('input.readonly-values-select').attr('id').replaceAll('readonly-values-select-', '');
                                        $('input[name="' + fieldId + '[value]"]').val(value)
                                        values = fieldSection.find('input.readonly-values-select').val();
                                        if (values !== '') {
                                            let jsonValue = JSON.parse(values);
                                            jsonValue.forEach(function (item) {
                                                if (item.value == value) {
                                                    valueToDisplay = item.label;
                                                }
                                            });
                                        }
                                    }
                                    else if (fieldSection.find('input.readonly-value-data').length > 0) {

                                        var fieldId = fieldSection.find('input.readonly-value-data').first().data('field');
                                        labelFromSF = true;
                                        $.ajax({
                                            method: "POST",
                                            url: urlSite + "admin/GetReadOnlyValue",
                                            data: { fieldId: fieldId, value: value},
                                            beforeSend: function () {
                                                
                                            }
                                        }).done(function (data) {
                                            var jsonResult = JSON.parse(data);
                                            $('input[name="' + fieldId + '[value]"]').val(value)
                                            if (jsonResult.code == "200") {
                                                fieldSection.find('label.read-only-text').text(jsonResult.Label);
                                            }
                                            else {
                                                fieldSection.find('label.read-only-text').text(value);
                                            }

                                            process_display_logic(displayLogic, self);
                                        });

                                    }
                                    else {
                                        
                                        let fieldId = fieldHidden.prop("name").replace("[sf_field]", "")
                                        $('input[name="' + fieldId + '[value]"]').val(value)
                                    }
                                    if (!labelFromSF) {
                                        if (values === '' || valueToDisplay === ''){
                                            fieldSection.find('label.read-only-text').text(value);
                                        }else{
                                            fieldSection.find('label.read-only-text').text(valueToDisplay);
                                        }
                                    }
                                }
                                else if (fieldSection.find('select').length > 0) {
                                    if (fieldSection.find('select').hasClass('paginationClass')) {
                                        
                                        var tokenId = fieldSection.find('select').attr('id').replaceAll('[value]', '');
                                        var storedData = sessionStorage.getItem('picklistdata-' + tokenId);
                                        if (storedData) {
                                            var parsedData = JSON.parse(storedData);
                                            let filteredData = parsedData.items.filter(item => item.id == value);
                                            if (filteredData && filteredData.length > 0) {
                                                var selectedOption = '<option value="' + filteredData[0].id + '" selected>' + filteredData[0].text + '</option>';
                                                fieldSection.find('select').append(selectedOption);
                                            }
                                        }
                                    }
                                    fieldSection.find('select').val(value);
                                    fieldSection.find('select').trigger("change");
                                } else if (fieldSection.find('input[type="radio"]').length > 0) {
                                    fieldSection.find('input[type="radio"][value="' + value + '"]').prop('checked', true);
                                }
                            }
                            break;
                        case 'multiple':

                            dontPull = 'False';
                            if (fieldSection.find('select').length > 0) {
                                dontPull = fieldSection.find('select').first().attr('data-dontretsf');
                            }
                            else if (fieldSection.find('input[type="hidden"].innerSettings').length > 0) {
                                dontPull = fieldSection.find('input[type="hidden"].innerSettings').first().attr('data-dontretsf');
                            }

                            if (dontPull == 'False') {
                                if (fieldSection.find('label.read-only-text').length > 0) {

                                    let fieldId = fieldSection.find('label.read-only-text').attr('data-field-id');
                                    $('input[name="' + fieldId + '[value]"]').val(value)

                                    if (fieldSection.find('input.readonly-value-data').length > 0) {

                                        fieldId = fieldSection.find('input.readonly-value-data').first().data('field');
                                        labelFromSF = true;
                                        $.ajax({
                                            method: "POST",
                                            url: urlSite + "admin/GetReadOnlyValue",
                                            data: { fieldId: fieldId, value: value, isMulti: true },
                                            beforeSend: function () {

                                            }
                                        }).done(function (data) {
                                            var jsonResult = JSON.parse(data);
                                            $('input[name="' + fieldId + '[value]"]').val(value)
                                            if (jsonResult.code == "200") {
                                                fieldSection.find('label.read-only-text').text(jsonResult.Label);
                                            }
                                            else {
                                                fieldSection.find('label.read-only-text').text(value);
                                            }

                                        });

                                    }
                                    else {
                                        fieldSection.find('label.read-only-text').text(value);
                                    }

                                } else {
                                    if (fieldSection.find('select').length > 0) {

                                        var fieldPopulate = fieldSection.find('select');
                                        if ($('body.partner-portal').length > 0 && fieldSection.find('select').data('type') == 'multiselect' && self.find('form').length == 0) {
                                            value = value.replaceAll(',', '%comma%');
                                            value = value.replaceAll('&', '%and%');
                                        }
                                        value = value.split(';');

                                        fieldPopulate.val(value);
                                        fieldPopulate.trigger("change");
                                        fieldPopulate.multiselect('reload');
                                    }
                                    else {

                                        var fieldPopulate = fieldSection.find('.input-group-checkboxes');
                                        var machineName = fieldPopulate.data("id-name");
                                        var values = value.split(';');
                                        values.forEach(function (key) {
                                            var nameForSP = key.replaceAll(' ', '~');
                                            nameForSP = nameForSP.replaceAll(',', '%comma%');
                                            nameForSP = nameForSP.replaceAll('&', '%and%');

                                            if (fieldSection.find('input[name="' + machineName + "[value][" + key + ']"]').length > 0) {
                                                fieldSection.find('input[name="' + machineName + "[value][" + key + ']"]').prop('checked', true);
                                                fieldSection.find('input[name="' + machineName + "[value][" + key + ']"]').trigger("change");
                                            }
                                            else if (fieldSection.find('input[name="' + machineName + "[value][" + nameForSP + ']"]').length > 0) {
                                                fieldSection.find('input[name="' + machineName + "[value][" + nameForSP + ']"]').prop('checked', true);
                                                fieldSection.find('input[name="' + machineName + "[value][" + nameForSP + ']"]').trigger("change");
                                            }
                                        });
                                    }
                                }

                            }
                            break;
                        case 'tel':
                            dontPull = fieldSection.find('input[type="tel"]').first().attr('data-dontretsf');
                            if (dontPull == 'False') {
                                var telInput = fieldSection.find('input[type="tel"]').first().get(0);
                                var iti = window.intlTelInputGlobals.getInstance(telInput);
                                iti.setNumber(value);
                                //fieldSection.find('input[type="tel"]').intlTelInput('setNumber', value);
                            }

                            break;
                        case 'radio':
                            dontPull = fieldSection.find('input[type="radio"][value="' + value + '"]').first().attr('data-dontretsf');
                            if (dontPull == 'False') {
                                if (fieldSection.find('label.read-only-text').length > 0) {
                                    fieldSection.find('label.read-only-text').text(value);
                                } else {
                                    fieldSection.find('input[type="radio"][value="' + value + '"]').prop('checked', true);
                                    fieldSection.find('input[type="radio"][value="' + value + '"]').trigger("change");
                                }

                            }
                            break;
                        case 'checkbox':
                            dontPull = fieldSection.find('input[type="checkbox"]').length > 0 ? fieldSection.find('input[type="checkbox"]').first().attr('data-dontretsf')
                                : fieldSection.find('input[type="hidden"].innerSettings').first().attr('data-dontretsf');

                            if (dontPull == 'False') {
                                if (fieldSection.find('label.read-only-text').length > 0) {
                                    fieldSection.find('label.read-only-text').text((!!value) ? window.translation.yes : window.translation.no);
                                } else {
                                    fieldSection.find('input[type="checkbox"]').first().prop('checked', !!value);
                                    fieldSection.find('input[type="checkbox"]').first().trigger("change");
                                }
                            }
                            break;
                        case 'file':
                            var storedAsRelatedFile = fieldSection.find('input[type="file"]').first().attr('data-related-files') == 'true';
                            var azFileMultiples = fieldSection.find('input[type="file"]').first().attr('data-multiple-az-files') == 'true';
                            var idField = fieldSection.find('input[type="file"]').first().attr('name').replace('[value]', '');
                            if (azFileMultiples) {
                                var fileList = value;
                                
                                fieldSection.find('input[name="az-' + idField + '[value]"]').val(fileList);
                            }
                            else if (!storedAsRelatedFile) {
                                var fileNameFromUrl = get_parameter_from_query_string('file', value);
                                var nameInput = fieldSection.find('input[type="file"]').attr('name');
                                var buttonToRemove = '<a class="individual-file-remove" data-input="' + nameInput + '" >' + window.translation.clear + '</a>';

                                var urlFile = '<a href="' + value + '" target="_blank">' + fileNameFromUrl + '</a>';
                                var sectionFileUploaded = '<span class="file-upload-name">' + window.translation.current_file + urlFile + ' ' + buttonToRemove + '</span>';
                                fieldSection.find('span.file-upload-name').remove();
                                fieldSection.find('label.file-upload').text(window.translation.upload_a_new_file);
                                fieldSection.find('input[name*=type]').after(sectionFileUploaded);
                            }
                            break;
                        case 'datetime':

                            if (fieldSection.find('input.inclusive-dates__input').length > 0) {
                                //datepicker custom
                                dontPull = 'False';
                                if (dontPull == 'False') {
                                    var timezone = fieldSection.find('input[name*=timezone]').val();
                                    var dateToPopulate = value;
                                    var dateToPopulateField = (moment(dateToPopulate).format(window.MomentDateFormat));
                                    var valueRaw = moment(dateToPopulate).format('YYYY-MM-DD');
                                    var formatTime = fieldSection.find('input[name*=formatTime]').val();
                                    if (fieldSection.find('label.read-only-text').length > 0) {
                                        if (value.indexOf('T') > -1) {
                                            dateToPopulateField = moment(dateToPopulate).format(window.MomentDateTimeFormat);
                                        }
                                        fieldSection.find('label.read-only-text').text(dateToPopulateField);
                                    }
                                    else {
                                        dateToPopulate = moment(value).format('M/D/YYYY');
                                        //fieldSection.find('input[type="text"]').val(dateToPopulate);
                                        var cad = dateToPopulate.split('/');
                                        var datePopulate = new Date(parseInt(cad[2]), parseInt(cad[0]) - 1, parseInt(cad[1]), 0, 0, 0, 0);

                                        fieldSection.find('input[type="text"].inclusive-dates__input').val(dateToPopulateField);
                                        fieldSection.find('input[type="hidden"].raw-date-inclusive').val(valueRaw);
                                        fieldSection.find('input[type="text"].inclusive-dates__input').trigger('change');
                                    }
                                }

                            } else {
                                dontPull = fieldSection.find('input[type="text"]').length > 0 ? fieldSection.find('input[type="text"]').first().attr('data-dontretsf')
                                    : fieldSection.find('input[type="hidden"].innerSettings').first().attr('data-dontretsf');


                                if (dontPull == 'False') {
                                    //here the date format should be take
                                    //var dateToPopulate = moment(value).format('M/D/YYYY');
                                    var timezone = fieldSection.find('input[name*=timezone]').val();
                                    var dateToPopulate = value;
                                    //var dateToPopulate = moment(value).tz(timezone);
                                    var dateToPopulateField = (moment(dateToPopulate).format(window.MomentDateFormat));
                                    var formatTime = fieldSection.find('input[name*=formatTime]').val();
                                    if (fieldSection.find('label.read-only-text').length > 0) {
                                        //  If valua has a T contains time info
                                        if (value.indexOf('T') > -1) {
                                            dateToPopulateField = moment(dateToPopulate).format(window.MomentDateTimeFormat);
                                        }
                                        fieldSection.find('label.read-only-text').text(dateToPopulateField);
                                    } else {
                                        dateToPopulate = moment(value).format('M/D/YYYY');
                                        //fieldSection.find('input[type="text"]').val(dateToPopulate);
                                        var cad = dateToPopulate.split('/');
                                        var datePopulate = new Date(parseInt(cad[2]), parseInt(cad[0]) - 1, parseInt(cad[1]), 0, 0, 0, 0);

                                        fieldSection.find('input[type="text"]').fdatepicker('update', datePopulate);
                                        fieldSection.find('input[type="text"]').trigger('changeDate');
                                    }

                                }

                            }

                            break;
                        case 'datetime_time':
                            if (fieldSection.find('input.inclusive-dates__input').length > 0) {
                                populateDateTimeFields(fieldSection, value, true);
                            } else {
                                var dontPull = fieldSection.find('input[type="text"]').first().attr('data-dontretsf');
                                if (dontPull === 'False') {
                                    populateDateTimeFields(fieldSection, value, false);
                                }
                            }
                            break;
                    }
                }
            }
            else {
                var valueField = record[key];
                var valueID = self.find('input[name="' + key + '"]').val();
                if (valueField !== null && valueField !== undefined && ((typeof valueField == 'string' && valueField.trim() !== '') || valueField !== '')) {
                    self.find('div#' + valueID + '-value').append(valueField);
                } else {
                    self.find('div#field-section-' + valueID).hide();
                    if ($('body').hasClass('volunteer-opportunity-detail-page')) {
                        //opportunity detail page
                        if ($('body').find('.list-mode-view').length > 0) {
                            //clear the section
                            if (self.find('.field-section-read-only:visible').length === 0) {
                                //nothing to display
                                if ($('.additional-fields').hasClass('medium-6')) {
                                    $('.additional-fields').removeClass('medium-6');
                                    $('.additional-fields').addClass('medium-12');
                                    $('.opportunity-map-section').removeClass('medium-6');
                                    $('.opportunity-map-section').addClass('medium-12');
                                }
                            }
                        } else if ($('body').find('.dropdown-mode-view').length > 0) {
                            //Do nothing
                        }
                    }
                }


            }
        }
    });

    if (autoSubmit) {
        
        if (self.find('a.submit-button').length > 0) {
            self.find('a.submit-button').first().trigger('click');
        }
    }
}


function populateDateTimeFields(fieldSection, value, isInclusiveDateInput) {
    var dontPull = 'False';

    if (dontPull === 'False') {

        var needUseTimeZoneParamter = fieldSection.find('input.populate-from-url-timezone:not(.processed)').length>0;
        if (needUseTimeZoneParamter) {
            populateFromUrlTimezone(fieldSection.find('input.populate-from-url-timezone:not(.processed)'), fieldSection.closest('form').closest('.formwrapper'), value)
            fieldSection.find('input.populate-from-url-timezone').addClass('processed');
        }
        else {            
            var formatTime = fieldSection.find('input[name*=formatTime]').val();
            var timezone = fieldSection.find('input[name*=timezone]').val();
            var dateToPopulate = moment(value).tz(timezone);
            var valueRaw = moment(dateToPopulate).format('YYYY-MM-DD');
            var dateToPopulateField = moment(dateToPopulate).format(window.MomentDateFormat);
            var dateToPopulateDatePicker = dateToPopulate.format('M/D/YYYY');
            var cad = dateToPopulateDatePicker.split('/');
            var datePopulate = new Date(parseInt(cad[2]), parseInt(cad[0]) - 1, parseInt(cad[1]), 0, 0, 0, 0);
            if (isInclusiveDateInput) {
                fieldSection.find('input[type="text"].inclusive-dates__input').val(dateToPopulateField);
                fieldSection.find('input[type="hidden"].raw-date-inclusive').val(valueRaw);
                fieldSection.find('input[type="text"].inclusive-dates__input').trigger('change');
            } else {
                fieldSection.find('input[type="text"].date-picker-form-builder').fdatepicker('update', datePopulate);
                fieldSection.find('input[type="text"].date-picker-form-builder').trigger('changeDate');
            }

            if (formatTime === 'HHMMPM') {
                var time_value = moment(dateToPopulate).format('hh') + ":" + moment(dateToPopulate).format('mm') + " " + moment(dateToPopulate).format('a').toUpperCase();
                fieldSection.find('input[data-type="hour"]').val(time_value);
            } else {
                var time_value = moment(dateToPopulate).format('HH') + ":" + moment(dateToPopulate).format('mm');
                fieldSection.find('input[data-type="hour"]').val(time_value);
            }
        }
    }
}

function PopulateFromBlockWithDataFromSF(self, autoSubmit) {
    //Get if site is sharingPortalPlus
    
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var populateFromSF = self.find('input[name="populate_from_sf"]').val();
    var objectSFToMap = self.find('input[name="object_sf_to_map"]').val();
    var parameterRecId = self.find('input[name="salesforce_id_to_update"]').val();
    var parameterContactId = self.find('input[name="contact_id_to_update"]').val();
    var SFGetAmountFieldName = self.find('input[name="SFGetAmountFieldName"]').val();
    var update_record = self.find('input[name="update_record"]').val();
    var isgetSFAmount = self.find('input[name="isgetSFAmount"]').val();
    var childObjectName = null;
    var childFieldName = null;
    var isPartnerPortalPage = $('body.partner-portal').length > 0;
    var containsForm = self.find('form').length > 0;

    var element = self.find('input[name="child_object_related_file"]');

    if (element !== null && element !== undefined)
        childObjectName = element.val();

    element = self.find('input[name="child_field_related_file"]');

    if (element !== null && element !== undefined)
        childFieldName = element.val();

    var formId = self.data('form-id');
    var dontPull = 'False';
    var isMultiLanguage = self.find('#enable-multi-language').val();
    var hasReadOnly = self.find('form').hasClass('read-only-form');
    if (hasReadOnly === true) {
        self.find('.submit-group').hide();
    }
    if (populateFromSF === 'true' && objectSFToMap) {
        if (parameterRecId && parameterRecId.indexOf(';') == -1) {
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetFieldsToPopulateFormBlock",
                data: { formId: formId, objectSID: parameterRecId, salesforceObject: objectSFToMap, childObjectName: childObjectName, childFieldName: childFieldName },
                beforeSend: function () {
                    //self.find('.processing_screen').show();
                    HandleProcessingScreenFormBlock('show', isPartnerPortalPage, containsForm, self);
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                
                loadDataForm(jsonResult, hasReadOnly, self, false, isMultiLanguage, autoSubmit);
                //self.find('.processing_screen').hide();
                HandleProcessingScreenFormBlock('hide', isPartnerPortalPage, containsForm, self);
            });
            if (update_record == "true" && isgetSFAmount == "true") {
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetAmountFromSalesforceField",
                    data: { formId: formId, objectSID: parameterRecId, salesforceObject: objectSFToMap, SFGetAmountFieldName: SFGetAmountFieldName },
                    beforeSend: function () {
                        HandleProcessingScreenFormBlock('show', isPartnerPortalPage, containsForm, self);
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult['code'] == 200) {
                        let record = jsonResult['Record'];
                        let getAmount = record[SFGetAmountFieldName];
                        self.find('input[name="amountField"]').val(getAmount * 100).change();
                        self.find('span.option-amount-label').text('$' + getAmount);
                        if (typeof load_payment_component_frontend != "undefined")
                            load_payment_component_frontend();
                    }
                    HandleProcessingScreenFormBlock('hide', isPartnerPortalPage, containsForm, self);
                });
            }
        }
        else {
            HandleProcessingScreenFormBlock('hide', isPartnerPortalPage, containsForm, self);
            if ($('.spform').length > 0 && self.find("#dataSPFormPrevious-" + formId).length > 0 && self.find("#dataSPFormPrevious").val() != '') {

                //self.find('.processing_screen').show();
                HandleProcessingScreenFormBlock('show', isPartnerPortalPage, containsForm, self);
                var jsonResult = JSON.parse(self.find("#dataSPFormPrevious-" + formId).val());
                setTimeout(function () {
                    loadDataForm(jsonResult, hasReadOnly, self, true, isMultiLanguage, autoSubmit);
                    //self.find('.processing_screen').hide();
                    HandleProcessingScreenFormBlock('hide', isPartnerPortalPage, containsForm, self);
                }, 1000);

            }
            else if (parameterContactId) {
                self.find('ul.related-files-list').each(function () {
                    var ulId = $(this).attr('id');
                    var fieldId = $(this).attr('data-field-id');
                    var dontretsf = $(this).attr('data-dontretsf');

                    if (!(dontretsf == 'True' || dontretsf == 'true')) {

                        var multiFileSection = $(this).parent();
                        var dataFilesURL = '';
                        var multiAzFiles = false;

                        if (multiFileSection.find('input[name="az-' + fieldId + '[value]"]').length > 0) {
                            multiAzFiles = true;

                            dataFilesURL = multiFileSection.find('input[name="az-' + fieldId + '[value]"]').val();
                        }

                        $.ajax({
                            method: "POST",
                            url: urlSite + "admin/GetRelatedFilesDetailsInfo",
                            data: { formId: formId, objectSID: parameterContactId, salesforceObject: objectSFToMap, fieldId: fieldId, multiAzFiles: multiAzFiles, dataFilesURL: dataFilesURL },
                            beforeSend: function () {
                                //self.find('.processing_screen').show();
                                HandleProcessingScreenFormBlock('show', isPartnerPortalPage, containsForm, self);
                            }
                        }).done(function (data) {
                            var jsonResult = JSON.parse(data);
                            if (jsonResult) {

                                if (jsonResult['code'] == '200') {
                                    var filesDetail = jsonResult['filesDetails'];
                                    LoadDataForRelatedFieldsInfo(filesDetail);
                                }
                            }
                            //self.find('.processing_screen').hide();
                            HandleProcessingScreenFormBlock('hide', isPartnerPortalPage, containsForm, self);
                        });
                    }
                });

            }
            else if (autoSubmit) {
                if (self.find('a.submit-button').length > 0) {
                    self.find('a.submit-button').first().trigger('click');
                }
            }
        }
    }
    else if (autoSubmit) {
        self.find('a.submit-button').first().trigger('click');
    }

    PopulateFieldSelectLisviewSalesforce(self);

}

function populateFromUrlTimezone(elment, self, value, timezoneToPopulate, machineNameInput) {

    var parameterName = (elment) ? elment.val() : undefined;
    var machineName = (elment) ? elment.attr('data-machine-name') : machineNameInput;
    var valueToPopulate = '';
    var customUrlParameters = self.find('input[name="custom-url-received"]').val();

    if (parameterName && machineName || timezoneToPopulate) {
        if (timezoneToPopulate) {
            valueToPopulate = timezoneToPopulate;
            //if (!valueToPopulate) {
            //    getTimezoneFromLocation(valueToPopulate, machineNameInput);
            //}
        }
        else if (customUrlParameters && customUrlParameters != '') {
            valueToPopulate = retrieveGetParameterFromCustom(parameterName, customUrlParameters);
        }
        else {
            valueToPopulate = retrieveGetParameter(parameterName);
        }

        //Populate field
        if (valueToPopulate) {
            valueToPopulate = decodeURIComponent(valueToPopulate);

            if (isValidSalesforceId(valueToPopulate)) {
                getTimezoneFromLocation(valueToPopulate, machineName, value);

            }
            else {
                //Populate input
                let fieldToUpdate = self.find('input[name="' + machineName + '"]');
                fieldToUpdate.val(valueToPopulate);
                let labelToUpdate = self.find('p[name="' + machineName + '"]');
                labelToUpdate.html(valueToPopulate);
            }

        }
    }
}

function EventsPopulateFieldsFormBuilder(self) {
    var currentLanguage = window.translation['language_iso'];
    moment.locale(currentLanguage);

    var currentDatetime = moment().format(window.MomentDateTimeFormat);
    var currentDate = moment().format(window.MomentDateFormat);
    var currentDateRaw = moment().format('YYYY-MM-DD');
    var currentDatetimeAMPM = moment().format('hh:mm A');
    var currentDatetime24 = moment().format('HH:mm');
    var currentDatetimeForHidden = moment().format('YYYY-MM-DDTHH:mm:ssZ');

    //Populate inputs with values from URL
    self.find('input.populate-from-url').each(function () {
        var parameterName = $(this).val();
        var machineName = $(this).attr('data-machine-name');
        var typefield = $(this).attr('data-field-type');
        var valueToPopulate = '';
        var customUrlParameters = self.find('input[name="custom-url-received"]').val();

        if (parameterName && machineName) {
            if (customUrlParameters && customUrlParameters != '') {
                valueToPopulate = retrieveGetParameterFromCustom(parameterName, customUrlParameters);
            }
            else {
                valueToPopulate = retrieveGetParameter(parameterName);
            }

            //Populate field
            if (valueToPopulate) {
                //Populate input

                if(typefield == 'PHONE'){
                    var telInput = self.find('input[name="' + machineName + '"]').get(0);
                    if (!valueToPopulate.startsWith("+")) {valueToPopulate = "+" + valueToPopulate;}
                    var $input = self.find('input[name="' + machineName + '"]');
                    $input.val(valueToPopulate);
                    window.intlTelInput(telInput, {
                        allowDropdown: true,
                        initialCountry: "auto",
                        utilsScript: "/js/vendors/intl-tel-utils.js"
                    });
                } else {
                    let fieldToUpdate = self.find('input[name="' + machineName + '"]');
                    fieldToUpdate.val(valueToPopulate);

                    if (typefield == "HIDDEN") {
                        fieldToUpdate.data("defaultValue", valueToPopulate)
                    }
                }
                
                //Populate textarea
                self.find('textarea[name="' + machineName + '"]').empty();
                self.find('textarea[name="' + machineName + '"]').append(valueToPopulate);
            }
        }
    });


    //Populate inputs with values from URL
    self.find('input.populate-from-url-timezone').each(function () {
        populateFromUrlTimezone($(this), self);
    });

    //Populate SF related 
    self.find('input.populate-sf-record-related').each(function () {
        var parameterName = $(this).val();
        var machineName = $(this).attr('data-machine-name');
        var secondRelated = $(this).attr('data-second-related');
        var isMultiple = $(this).hasClass('multiple-files');
        var valueToPopulate = '';

        if (parameterName && (machineName || secondRelated)) {
            valueToPopulate = retrieveGetParameter(parameterName);

            //Populate field
            if (valueToPopulate) {
                //Populate input
                if (!isMultiple) {
                    self.find('input[name="' + machineName + '"]').attr("data-sf-record-to-relate", valueToPopulate);

                }
                else {
                    self.find('input[name="' + secondRelated + '"]').val(valueToPopulate);
                }
            }
        }
    });

    //Populate inputs with value of currentDatetime
    self.find('input.populate-current-datetime').each(function () {
        var machineNameId = $(this).val();
        var machineName = $(this).attr('data-machine-name');
        var format = $(this).attr('data-time-format'); //Can be HHMM or HHMMPM
        //Populate input
        if (self.find('input[id="' + machineName + '-input"]').length > 0) {
            //Nothing to do
        } else {
            self.find('input[name="' + machineName + '"]').val(currentDatetimeForHidden);
        }
        

        //Populate textarea
        self.find('textarea[name="' + machineName + '"]').empty();
        self.find('textarea[name="' + machineName + '"]').append(currentDatetime);
        //Populate datepicker
        self.find('input.date-picker-form-builder[name="' + machineName + '"]').val(currentDate);
        self.find('label#label-date-' + machineNameId).html(currentDate);

        //Populate timepicker
        if (format === 'HHMM') {
            //24 hours format
            //self.find('input[name="' + machineNameId + '[hour]"]').val(times24[0]);
            //self.find('input[name="' + machineNameId + '[minute]"]').val(times24[1]);
            self.find('input[name="' + machineNameId + '[timeValue]"]').val(currentDatetime24);
        }
        else if (format === 'HHMMPM') {
            //12 hours format
            self.find('input[name="' + machineNameId + '[timeValue]"]').val(currentDatetimeAMPM);
            //self.find('input[name="' + machineNameId + '[hour]"]').val(timesLocalHours[0]);
            //self.find('input[name="' + machineNameId + '[minute]"]').val(timesLocalHours[1]);
            //self.find('select[name="' + machineNameId + '[format]"]').val(formatLocal);
        }
    });



    //upload images
    self.find('input[type="file"].file-upload-image:not(.multiple-file)').each(function () {
        var fileInput = $(this);
        var idPreview = fileInput.attr('data-image-preview-field');
        if (idPreview !== null && idPreview !== undefined && idPreview !== '') {
            fileInput.on('change', function () {
                ReadUrlForImageFileInput(this, idPreview);
            });
        }
    });


}

function form_load_values(formToReloadId, autoSubmit) {
    
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    var formSelector = !formToReloadId ? '.formBlock.formwrapper' : '.formBlock.formwrapper[data-form-id="' + formToReloadId + '"]';
    $(formSelector).each(function () {
        var self = $(this);
        var formId = $(this).data('form-id');
        var form = $(this).find('form');
        var emailFrom = $(this).find('input[name="emailFrom[value]"]');

        checkbox_validate($(this));

        var jsonDataDisplay = [];
        var jsonDataRedirect = [];
        let formLogic = self.find('input[name="fields_logic"]').val();

        let IsIncludeSignatureField = self.find('input[name="IsIncludeSignatureField"]').val();
        if(IsIncludeSignatureField == 'True'){
           if (navigator.geolocation) {
                navigator.permissions.query({ name: "geolocation" })
                .then(permissionStatus => {
                    if (permissionStatus.state !== "denied") {
                        getLocationGoogle(self);
                    } else {
                        getGeolocationDataCurrentUser(self);
                    }
                })
                .catch(() => {
                    getGeolocationDataCurrentUser(self);
                });
            } else {
                getGeolocationDataCurrentUser(self);
            }
            setTimeout(() => {
                let CurrentUserDataGeo = self.find('input[name="signatureCurrentUserGeoData"]').val();
                if(!CurrentUserDataGeo){
                    console.log('----geodata');
                    getGeolocationDataCurrentUser(self);
                }
            }, 2000);
        }
        if (formLogic === undefined || formLogic === '') {
            $.ajax({
                method: "POST",
                url: urlSite + "/Admin/GetFormFieldsData",
                async: false,
                data: { formId: formId }
            }).done(function (data) {
                var jsonData = JSON.parse(data);
                jsonDataDisplay = jsonData.logicDisplay;
                jsonDataRedirect = jsonData.logicRedirect;
                loadValuesInSessionStorageForRedirect(jsonDataRedirect, formId);

                return false;
            });
        } else {
            var jsonData = JSON.parse(formLogic);
            jsonDataDisplay = jsonData.logicDisplay;
            jsonDataRedirect = jsonData.logicRedirect;
            loadValuesInSessionStorageForRedirect(jsonDataRedirect, formId);
        }


        $(this).find('.row-fields .row').each(function () {
            if ($(this).find('.fields-section .box').length > 0) {
                if ($(this).find('.label-section').length > 0) {
                    var height = $(this).find('.label-section').innerHeight();
                    var heightBox = $(this).find('.fields-section').innerHeight();
                    if (height > heightBox) {
                        $(this).find('.fields-section .field-container-section-option').height(height);
                        $(this).find('.fields-section .field-container-section-option').addClass('field-container-section')
                    }


                }


            }
        });


        var selector = 'input[type="checkbox"], input[type="radio"], input[type="number"], input[type="text"][data-type="number"], select';
        var selectorAutoPopulate = 'input.custom-combobox-input';

        $(this).on('change', selector, function () {

            var self = $(this);
            var dataType = self.attr('data-type');
            if (dataType) {
                let fieldId = $(this).prop("id").replace("[value]", "");
                display_logic_events($(this), jsonDataDisplay, fieldId);
                redirect_logic_events($(this), jsonDataRedirect);
            }
            if (dataType === 'dropdown' || dataType === 'radio' || dataType == 'intensityrate' || dataType == 'scalerate') {
                // checking if field is mapping to sf
                var sfFieldName = self.closest('.fields-section').find('.sf_field').first().val();
                if (sfFieldName !== '') {
                    // checking if dropdown is controlling a dependent field
                    dependentPicklistInnerActionSelect(sfFieldName, self, dataType);
                    dependentPicklistInnerActionRadio(sfFieldName, self, dataType);
                }
            }
        });
        
        LLSHOC_DependentSelect_FormLoadValues();

        $(this).on('change', 'input.date-picker-pp', function () {
            var name = $(this).attr('name');
            $('input[name="' + name + '"]').trigger('changeDate');
        });

        $(this).on('focusout', 'input.code-validation-input', function () {
            var previousValue = $(this).data('previous-val');
            var section = $(this).parent().parent();
            if ($(this).val() != previousValue) {
                section.find('.validated-check').addClass('hide');
                section.find('.not-validated-check').addClass('hide');
                $(this).data('previous-val', $(this).val());
                $(this).removeAttr('data-checked');
                $('label#' + $(this).attr('name') + '-error').remove()
                $(this).data('missing-validation', true);
            }
        });

        $(this).on('click', 'a.code-validation-button', function () {
            var buttonHere = $(this);
            var previousValue = $(this).data('previous-val');
            var section = $(this).parent().parent().parent();
            var selector = $(this).data('selector');
            var input = $(this).data('input');
            //$('label#' + input + '-error').remove();
            var hidden = 'options-' + selector;
            var inserted = $('input[name="' + input + '"]').val();
            var innerToken = $('input[name="' + hidden + '"]').val();
            if (inserted != '') {
                $(this).attr('disabled', 'disabled');
                $.ajax({
                    method: "POST",
                    url: urlSite + 'check-code',
                    data: { inserted: inserted, innerToken: innerToken },
                    beforeSend: function () {
                        //$('label#' + input + '-error').remove();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.code == "200") {
                        $('select[name="' + selector + '"]').find('option').remove();
                        var option = '';
                        var value = '';
                        if (jsonResult.found) {
                            $(section).find('.validated-check').removeClass('hide');
                            option = '<option value="' + jsonResult.value + '" selected>' + inserted + '</option>';
                            value = jsonResult.value;
                            $('input[name="' + input + '"]').removeAttr('data-not-valid');
                            $('input[name="' + input + '"]').attr('data-checked', 'true');
                        }
                        else {
                            option = '<option value="' + inserted + '" selected>' + inserted + '</option>';
                            $(section).find('.not-validated-check').removeClass('hide');
                            $('input[name="' + input + '"]').removeAttr('data-checked');
                            $('input[name="' + input + '"]').attr('data-not-valid', 'true');
                        }
                        $('input[name="' + input + '"]').data('missing-validation', false);
                        $('input[name="' + input + '"]').trigger('focusout');
                        $('select[name="' + selector + '"]').append(option);
                        $('select[name="' + selector + '"]').trigger('change');
                    }
                    //$('label#' + input + '-error').remove();
                    buttonHere.removeAttr('disabled');
                }).always(function () {
                });

            }
        });

        $(this).on('input propertychange paste', selectorAutoPopulate, function () {
            var self = $(this);
            self.parents('.input-group-select').find('select').first().val(self.val()).trigger('change');
        });
        $('.number-slider').on('moved.zf.slider', function () {
            var id = $(this).children('.slider-handle').attr('aria-controls');
            display_logic_events($('#' + id), jsonDataDisplay, id.replace('number-slider-',''));
            redirect_logic_events($('#' + id), jsonDataRedirect);
        });


        if ($('select[data-type="dropdown"]').length > 0) {
            $('select[data-type="dropdown"]:not([data-type="dropdown_multiple"])').each(function () {
                var self = $(this);
                var isAutoSuggest = $(this).hasClass('autosuggest');
                var isPagination = $(this).hasClass('paginationClass');
                if (isAutoSuggest && !isPagination) {
                    self.select2();
                    self.on('select2:open', function (e) {
                        setTimeout(function () {
                            document.getElementsByClassName('select2-search__field')[0].focus();
                        }, 0);
                    });
                }
                else if (isPagination)
                {
                    var tokenId = self.attr('id').replaceAll('[value]', '');
                    var storedData = sessionStorage.getItem('picklistdata-' + tokenId);
                    var currentTime = new Date().getTime();

                    if (storedData) {
                        var parsedData = JSON.parse(storedData);
                        if (currentTime - parsedData.timestamp < window.expirationTime) {
                            formbuilder_initializeSelect2(self, parsedData.items);
                        } else {
                            formbuilder_fetchData(self, tokenId);
                        }
                    } else {
                        formbuilder_fetchData(self, tokenId);
                    }
                }
            });
                    
        }

        if ($('select[data-type="dropdown_multiple"]').length > 0) {
            $('select[data-type="dropdown_multiple"]').each(function () {
                var self = $(this);
                var isAutoSuggest = $(this).hasClass('autosuggest');
                var isPagination = $(this).hasClass('paginationClass');
                if (isAutoSuggest && !isPagination) {
                    self.select2();
                }
                else if (isPagination) {
                    var tokenId = self.attr('id').replaceAll('[value][]', '');
                    var storedData = sessionStorage.getItem('picklistdata-' + tokenId);
                    var currentTime = new Date().getTime();

                    if (storedData) {
                        var parsedData = JSON.parse(storedData);
                        if (currentTime - parsedData.timestamp < window.expirationTime) {2
                            formbuilder_initializeSelect2(self, parsedData.items, true);
                        } else {
                            formbuilder_fetchData(self, tokenId, true);
                        }
                    } else {
                        formbuilder_fetchData(self, tokenId, true);
                    }
                }
            });

        }

        if (emailFrom.length > 0) {
            $.ajax({
                type: "GET",
                url: urlSite + '/ARS/getSiteId',
                success: function (data) {
                    var siteId = data;
                    var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                    var partnerformData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));

                    if (formData && !partnerformData) {
                        emailFrom.val(formData['email']);
                    }
                    else if (!formData && partnerformData) {
                        emailFrom.val(partnerformData['email']);
                    }
                }
            });
        }

        if (jsonDataDisplay.length > 0) {
            const unique_fields = jsonDataDisplay.map(item => item.conditions.map(condition => condition.field)).flat().reduce((uniqueFields, field) => {if (field.trim() !== "" && !uniqueFields.includes(field)){uniqueFields.push(field);} return uniqueFields;}, []);
            if(unique_fields.length > 0){
                for (let i = 0; i < unique_fields.length; i++) {
                    if(self.find('input[type="checkbox"][name="'+unique_fields[i]+'[value]"]').length > 0){
                        self.find('input[type="checkbox"][name="' + unique_fields[i] + '[value]"]').trigger('change');
                    }else if(self.find('input[type="radio"][name="'+unique_fields[i]+'[value]"]').length > 0){
                        self.find('input[type="radio"][name="' + unique_fields[i] + '[value]"]').trigger('change');
                    }else if(self.find('input[type="number"][name="'+unique_fields[i]+'[value]"]').length > 0 && self.find('input[type="number"][name="'+unique_fields[i]+'[value]"]').val() != ''){
                        self.find('input[type="number"][name="' + unique_fields[i] + '[value]"]').trigger('change');
                    }else if(self.find('select[name="'+unique_fields[i]+'[value]"]').length > 0 && self.find('select[name="'+unique_fields[i]+'[value]"]').val() != ''){
                        self.find('select[name="' + unique_fields[i] + '[value]"]').trigger('change');
                    }
                }
            }
        }
        //Including trigger change to radiobuttons to activa display logic with default value
        /*
        self.find(selector).each(function () {
            var input = $(this);
            input.trigger('change');
        });

        */
        self.find('.input-group-checkbox input[type="checkbox"]').each(function () {
            var field = $(this);
            field.on('change', function () {
                var id_required = $(this).data('required');
                var content = $(this).closest('div.content');
                content.find('label.error').remove();
                var validation = content.find('label.validation-message');
                if (id_required == true) {
                    if ($(this).is(':checked')) {
                        validation.css('display', 'none');
                    } else {
                        validation.css('display', 'block');
                    }
                } else {
                    validation.css('display', 'none');
                }
            })
        });

        /*
        self.find('.input-group-checkbox input[type="checkbox"][data-required="true"]').each(function () {
            var field = $(this);
            field.on('change', function () {
                var content = $(this).closest('div.content');
                content.find('label.error').remove();
                var validation = content.find('label.validation-message');

                if ($(this).is(':checked')) {
                    validation.css('display', 'none');
                } else {
                    validation.css('display', 'block');
                }
            })
        });
        */
        //Including method to initialize rich text to textareas with property enabled
        if (self.find('textarea.rich_text').length > 0) {
            self.find('textarea.rich_text').each(function () {
                var item = $(this);
                var id = item.attr('id');
                if (typeof CKEDITOR !== "undefined") {
                    initialize_ckeditor_textarea_rich_text(id, form);
                }
            });
        }
        //Including validation to redirect to form when required login section is render
        if (self.find('a.log_in_required').length > 0) {
            if (window.location.search !== '?requiredLogin=1') {
                $('#login-modal').find('form').find('input[name="returnurl"]').val(window.location.pathname + window.location.search); //Update redirect url field in modal
            }

        }

        if (self.hasClass('kiosk-form')) {
            var kioskReturn = $('#base_kiosk_return_url').val();
            var kioskConnectionId = $('#base_kiosk_connection_id').val();
            var kioskContactId = $('#base_kiosk_contact_id').val();


            if (kioskReturn != undefined && kioskReturn != null && kioskReturn.trim() != '') {
                self.find('input[name="have_redirection"]').val("True");
                self.find('input[name="redirect_url"]').val(kioskReturn);
            }

            if (kioskConnectionId != undefined && kioskConnectionId != null && kioskConnectionId.trim() != '') {
                self.find('input[name="kiosk_connection_id"]').val(kioskConnectionId);
            }

            if (kioskContactId != undefined && kioskContactId != null && kioskContactId.trim() != '') {
                self.find('input[name="kiosk_contact_id"]').val(kioskContactId);
            }
        }

        if (self.hasClass('registration-form') && self.hasClass('llamapi-registration-form')) {
            validate_information_for_registration_forms(self);
        }



        var loadFromLocalStorage = self.find('input[name="load_response_storage"]').val();
        if (loadFromLocalStorage === 'true' || loadFromLocalStorage === true)
            hocvolunteer_load_data_from_storage(self);

        validate_autonumeric_fields(self);

        init_timepicker_form_builder(self);

        form_initialize_date_picker(self);

        EventsPopulateFieldsFormBuilder(self);

        var isModal = $(this).hasClass('form-in-modal');
        
        if (formToReloadId != undefined || !isModal) {            
            PopulateFromBlockWithDataFromSF(self, autoSubmit);
        }

    });
}

function formbuilder_fetchData(self, tokenId, multiple) {
    var currentTime = new Date().getTime();
    $.ajax({
        url: '/admin/GetPicklistSFListViewOptions?tokenId=' + tokenId,
        type: 'GET',
        dataType: 'json',
        success: function (data) {
            var dataWithTimestamp = {
                timestamp: currentTime,
                items: data.items
            };
            sessionStorage.setItem('picklistdata-' + tokenId, JSON.stringify(dataWithTimestamp));
            formbuilder_initializeSelect2(self, data.items, multiple);
        }
    });
}

function formbuilder_initializeSelect2(self, data, multiple) {
    if (multiple == undefined)
        multiple = false;
    self.select2({
        ajax: {
            delay: 250,
            transport: function (params, success, failure) {
                let page = params.data.page || 1;
                let pageSize = 100;
                let search = params.data.term || '';

                clearTimeout(self.searchTimeout);
                self.searchTimeout = setTimeout(function () {
                    let filteredData = data.filter(item => item.text.toLowerCase().includes(search.toLowerCase()));

                    let paginatedData = filteredData.slice((page - 1) * pageSize, page * pageSize);

                    success({
                        items: paginatedData.map(item => ({ id: item.id, text: item.text })),
                        totalCount: filteredData.length
                    });
                }, 300);
            },
            processResults: function (data, params) {
                params.page = params.page || 1;

                return {
                    results: data.items,
                    pagination: {
                        more: data.items.length >= 100
                    }
                };
            },
            cache: true
        },
        minimumResultsForSearch: 1,
        placeholder: '',
        multiple: multiple,
        allowClear: true,
        language: {
            loadingMore: function () {
                return window.translation.loading_more_items;
            },
            noResults: function () {
                return window.translation.no_results_found;
            },
            searching: function () {
                return window.translation.searching_items;
            }
        }
    });
}
function validate_date_values_custom(currentValue) {

    if (currentValue !== null && currentValue !== undefined && currentValue !== '') {
        var date = new Date(currentValue);
        if (date.getFullYear() < 1900)
            return false;
        else if (date.toString() === 'Invalid Date')
            return false;
    }
    return true;
}

function validate_date_values(currentValue) {

    if (currentValue !== null && currentValue !== undefined && currentValue !== '') {
        var date = new Date(currentValue);
        if (date.getFullYear() < 1900)
            return false;
    }
    return true;
}

function send_canvas_signature(self, formForm) {
    var canvas = self.find('canvas').get(0);
    var context = canvas.getContext("2d");
    var imgData = context.getImageData(0, 0, canvas.width, canvas.height);
    var hasContent = imgData.data.some(function (value, index) { return index % 4 === 3 && value !== 0; });
    if (hasContent) {
        self.find('.spinner').show();
        self.closest('.formBlock').find('.submit-button').addClass('disabled');
        var _formId = self.closest('.formBlock').data('form-id');
        var signature_img_url = self.jSignature('getData', 'image');
        var timestamp = new Date().getTime();
        var fileName = "sign_image_" + timestamp + ".png";
        var file = ConvertImageBase64ToFile(signature_img_url, fileName);
        var field_id_name = self.attr('data-idvalue');
        var xhr = upload_image_asign_url_to_signature(self, _formId, field_id_name, file, formForm);
        return xhr;
    }
}

function debounce(func, delay) {
    let debounceTimer;
    return function () {
        const context = this;
        const args = arguments;
        clearTimeout(debounceTimer);
        debounceTimer = setTimeout(() => func.apply(context, args), delay);
    };
}


function form_validate_multilanguage(formForm, self) {

    var _formId = self.closest('.formBlock').data('form-id');
    var _form = self.closest('.formBlock').find('form#form-custom-' + _formId);
    var textboxes = self.closest('.formBlock').find('input[type="text"][data-required="true"]');
    var textareaRichText = self.closest('.formBlock').find('textarea.rich_text');

    var isMultiLanguage = self.closest('.formBlock').find('input#enable-multi-language').val();
    var datalist = [];
    if (isMultiLanguage === "true") {
        idsMultilanguage = self.closest('.formBlock').find('input#ids-fields-with-multi-language').val();
        datalist = JSON.parse(idsMultilanguage);
    }

    //Apply event to assign to fields current datetime
    var formForm = _form.serializeJSON();
    formForm['formId'] = _formId;
    formForm['save_complete_later'] = false;


    textboxes.each(function () {
        var value = $(this).val();
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            var field = $(this);
            var idField = field.data('field-id');

            var idFieldSelector = idField + '[value]';
            var originalValue = formForm[idField];
            if (isMultiLanguage === "true") {
                datalist.forEach(function (valueL) {
                    if (valueL == idField) {
                        idFieldSelector = field.attr('id');
                        value = _form.find('input[id="' + idFieldSelector + '"]').val();
                        idFieldSelector = idFieldSelector.replace('[value]', '_');
                        formForm[idFieldSelector] = { sf_field: originalValue.sf_field, sf_object: originalValue.sf_object, type: originalValue.type, value: value };
                    }
                });
            }


        }
    });


    textareaRichText.each(function () {
        var field = $(this);
        var parentDisplay = field.parents('.rich_text').css('display')

        if (parentDisplay !== 'none') {
            var idField = field.data('field-id');
            var foundML = false;
            var idFieldSelector = idField + '[value]';
            var originalValue = formForm[idField];
            if (isMultiLanguage === "true") {
                datalist.forEach(function (valueL) {
                    if (valueL == idField) {
                        idFieldSelector = field.attr('id');
                        foundML = true;
                    }
                });
            }

            var textRichText = CKEDITOR.instances[idFieldSelector].getData();
            if (foundML == true) {
                idFieldSelector = idFieldSelector.replace('[value]', '_');
            }
            else {
                idFieldSelector = idField;
            }
            formForm[idFieldSelector] = {
                sf_field: originalValue.sf_field,
                sf_object: originalValue.sf_object,
                type: originalValue.type,
                value: textRichText
            };
        }
    });


    return formForm;
}

function process_container_form_block() {
    if ($('.formBlock').length > 0) {
        $('.formBlock').each(function () {
            if ($(this).hasClass('form-modal-initial-container') && $(this).hasClass('button-not-display')) {
                $(this).parent('.container-block-section').addClass('nothing-to-display');
            }
        });
    }
}

function form_block_inner_submit(self) {

    var valid = false;
    let missingrecords = false;

    var _formId = self.closest('.formBlock').data('form-id');
    var _form = self.closest('.formBlock').find('form#form-custom-' + _formId);

    let isMultiRecordForm = _form.find('input[name="multivalueFeature"]').val();
    if (isMultiRecordForm !== null && multivalueFeature !== undefined)
        isMultiRecordForm = $.trim(isMultiRecordForm).toLowerCase();

    if (isMultiRecordForm !== "true")
        valid = is_validate_form_builder_submit(self);
    else {

        let totalChildren = $('#summary-records-form-custom-' + _formId + ' tbody tr:not(.no-records)').length;
        if (totalChildren > 0)
            valid = true;
        else {
            valid = false;
            missingrecords = true;
        }
    }

    var paymentComponent = self.closest('.formBlock').find('.payment-component');
    var isuserinformationform = self.closest('.formBlock').find('input[name="isuserinformationform"]').val();
    var existCurrentUserEmail = self.closest('.formBlock').find('input[name="currentuseremail"]').length > 0;
    var isuserregistrationform = self.closest('.formBlock').find('input[name="isuserregistrationform"]').val();
    var requestVerificationTokens = self.closest('.formBlock').find('input[name="__RequestVerificationToken"]');

    var hasPaymentComponent = false;
    var errorFromPayment = false;

    //validate if the feature is not multirecords because multirecord doesn't workd with payment component
    if (paymentComponent !== null && paymentComponent !== undefined && paymentComponent.length > 0) {
        if (!paymentComponent.hasClass('is-hidden')) {
            if (paymentComponent.find('input[name="prefer_not_donate"]').length > 0) {
                if (paymentComponent.find('input[name="prefer_not_donate"]').is(':checked') === false && paymentComponent.find('input[name="payment_processor"]:checked').length === 0) {

                    valid = false;
                    errorFromPayment = true;
                    Swal.fire({
                        title: '',
                        icon: 'error',
                        text: 'You should select a Payment processor or Sorry, I cannot donate at this time',
                        confirmButtonText: 'Ok',
                        closeOnConfirm: true
                    });
                    self.closest('.formBlock').find('.processing_screen').hide();
                    self.closest('.formBlock').find('.spinner').hide();
                }

                if (paymentComponent.find('input[name="prefer_not_donate"]').is(':checked') === false && paymentComponent.find('input[name="isAllowSelectMultipleAmount"]').val() == "true" && paymentComponent.find('input[name="formAmountField"]').val() == 0) {
                    valid = false;
                    errorFromPayment = true;
                    Swal.fire({
                        title: '',
                        icon: 'error',
                        text: 'Sorry, you cannot continue at this time. You must select at least one amount.',
                        confirmButtonText: 'Ok',
                        closeOnConfirm: true
                    });
                    self.closest('.formBlock').find('.processing_screen').hide();
                    self.closest('.formBlock').find('.spinner').hide();

                }
                hasPaymentComponent = has_payment_component(paymentComponent);

            } else {
                hasPaymentComponent = true;
            }
        }
    }
    let thereAreVisibleErrors = $('label.error-custom').is(':visible');

    if (isMultiRecordForm === "true")
        thereAreVisibleErrors = false;

    if (valid === true && thereAreVisibleErrors === false) {
        // Starting verification is is form to update User information
        //Validate if is updating information and the email was changed
        var formForm = _form.serializeJSON();
        formForm['formId'] = _formId;
        formForm['save_complete_later'] = false;
        formForm = form_validate_multilanguage(formForm, self);
        // CSRF Token
        if (requestVerificationTokens !== null) {
            requestVerificationTokens.each(function () {
                formForm['__RequestVerificationToken'] = $(this).val();
            });
        }

        if ((isuserinformationform !== undefined && isuserinformationform === "True" && existCurrentUserEmail === true) ||
            (isuserregistrationform !== undefined && isuserregistrationform === "True")
        ) {

            if ($('body').hasClass('hoc-volunteer-system') && $('body').hasClass('hoc-volunteer-system-hybrid')) {
                //verify the query string
                var occSelectedBeforeLogin = retrieveGetParameter("occSelectedBeforeLogin");
                var confirmationUrl = retrieveGetParameter("confirmationUrl");
                var waitlistAllowed = retrieveGetParameter("waitlistAllowed");
                var signUpBeforeLoginWTeam = retrieveGetParameter("signUpBeforeLoginWTeam");
                if (occSelectedBeforeLogin !== null && occSelectedBeforeLogin !== undefined) {
                    var objOneStep = {
                        occSelectedBeforeLogin: occSelectedBeforeLogin,
                        confirmationUrl: confirmationUrl,
                        waitlistAllowed: waitlistAllowed,
                        signUpBeforeLoginWTeam: signUpBeforeLoginWTeam,
                    };

                    formForm['oneStepSignup'] = JSON.stringify(objOneStep);
                }
            }


            // logic to get the field that contains the  email field
            if (is_needed_verification_code(self, formForm, _form, hasPaymentComponent, isuserregistrationform === "True") === true) {
                // to avoid the processing of the form
                return;
            }
        }
        // ending verification related to update user personal information
        prepare_form_submission(self, formForm, _form, hasPaymentComponent)

    }
    else {
        if (isMultiRecordForm === "true" && missingrecords) {
            Swal.fire({
                title: '',
                icon: 'error',
                html: "You must add at least one record before submitting.",
                confirmButtonText: 'Ok',
                closeOnConfirm: true
            });
        } else if (errorFromPayment === false) {
            //Move document to first field with error

            self.closest('.formBlock').find('.processing_screen').hide();
            self.closest('.formBlock').find('.spinner').hide();
            var topLabelError = 0;
            var currentScrollTopUser = $(document).scrollTop();

            if (_form.find('label.error-custom:visible').length > 0) {
                topLabelError = _form.find('label.error-custom:visible').first().offset().top;
            }
            else if (_form.find('label.error:visible').length > 0) {
                topLabelError = _form.find('label.error:visible').first().offset().top;
                _form.find('label.error:visible').first().siblings('input.error,select.error,textarea.error').focus();
            }

            if (currentScrollTopUser > topLabelError) {
                $('body,html').animate({
                    scrollTop: topLabelError - 100,
                }, 500);
            }

        }
    }
}

function form_block_toggle_password_event() {
    try {
        if ($('.formBlock .form-password-box').length > 0) {
            let iconbase = $('.formBlock .form-password-box i.toogle-password-item');
            iconbase.attr("aria-label", window.translation.show_password);
            $('.form-password-box i.toogle-password-item').on('click', function () {
                var parent = $(this).parent();
                let icon = $(this);
                let ispwdField = parent.find('input.password-field-item').prop("type").toLowerCase() == "password";
                if (ispwdField) {
                    parent.find('input.password-field-item').prop("type", "text");
                    parent.find('i.toogle-password-item').removeClass("fa-eye");
                    parent.find('i.toogle-password-item').addClass("fa-eye-slash");
                    icon.attr("aria-label", window.translation.hide_password);
                } else {
                    parent.find('input.password-field-item').prop("type", "password");
                    parent.find('i.toogle-password-item').addClass("fa-eye");
                    parent.find('i.toogle-password-item').removeClass("fa-eye-slash");
                    icon.attr("aria-label", window.translation.show_password);
                }
            });
        }
    } catch (e) {
        window.console && console.error(e)
    }
}

function form_block_validate_reset_password() {
    if ($('.formBlock').find('.form-builder-change-password').length > 0) {
        $('.formBlock').find('.form-builder-change-password').each(function () {
            let container = $(this);
            container.find('input[type="password"][name="oldpass"],input[type="password"][name="password"],input[type="password"][name="retype_password"]').on('change', function () {
                let valueOld = container.find('input[type="password"][name="oldpass"]').val();
                let valueNew = container.find('input[type="password"][name="password"]').val();
                let valueRet = container.find('input[type="password"][name="retype_password"]').val();
                let hasValue = valueOld !== '' || valueNew !== '' || valueRet !== '';
                if (hasValue === true) {
                    container.find('label[for="oldpass"]').addClass('required');
                    container.find('label[for="password"]').addClass('required');
                    container.find('label[for="retype_password"]').addClass('required');
                    container.find('input[name="oldpass"]').attr('data-required', 'true');
                    container.find('input[name="password"]').attr('data-required', 'true');
                    container.find('input[name="retype_password"]').attr('data-required', 'true');

                } else {
                    container.find('label[for="oldpass"]').removeClass('required');
                    container.find('label[for="password"]').removeClass('required');
                    container.find('label[for="retype_password"]').removeClass('required');
                    container.find('label[id="oldpass-error"]').remove();
                    container.find('label[id="password-error"]').remove();
                    container.find('label[id="retype_password-error"]').remove();
                    container.find('input[name="oldpass"]').attr('data-required', 'false');
                    container.find('input[name="password"]').attr('data-required', 'false');
                    container.find('input[name="retype_password"]').attr('data-required', 'false');
                }
            });
        });
    }
}

function getLocationGoogle(self) {
    if (navigator.geolocation) {
        let city = '';
        let state = '';
        let country = '';
        let street = '';
        let latitude = '';
        let longitude = '';
        navigator.geolocation.getCurrentPosition(function (position) {
            var pos = {
                lat: position.coords.latitude,
                lng: position.coords.longitude
            };
            $.get(get_geo_url("reversegeo") + "?latitude=" + pos.lat + "&longitude=" + pos.lng, function (data) {
                if (typeof (data) == "string") {data = JSON.parse(data);}
                if (data.status == 1 || data.code == 200) {
                    city = data.city;
                    state = data.regioncode1;
                    country = data.country;
                    zipcode = data.postalcode;
                    latitude = data.latitude;
                    longitude = data.longitude;
                    const IpUser = self.find('input[name="IpUser"]').val();
                    let result = {
                      ip: IpUser,
                      data: {
                        status: "success",
                        country: country,
                        regionName: state,
                        city: city,
                        zip: zipcode,
                        lat: latitude,
                        lon: longitude,
                        query: IpUser
                    }
                };
                let jsonData = JSON.stringify(result);
                self.find('input[name="signatureCurrentUserGeoData"]').val(jsonData);
            }
            else {
                console.log("getCurrentPosition error....");
            }
        });
        }, function () {
            console.log("getCurrentPosition is not supported....");
        });
    }
}

function getGeolocationDataCurrentUser(self) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    return $.ajax({
        method: "POST",
        url: urlSite + "admin/GetUserGeolocation",
        beforeSend: function () {}
    }).done(function (data) {
        self.find('input[name="signatureCurrentUserGeoData"]').val(data);
    });
}


function GetSignatureDataSite(formElement) {
    let currentUserData = formElement.find('input[name="signatureCurrentUser"]').val();
    let CurrentUserDataGeo = formElement.find('input[name="signatureCurrentUserGeoData"]').val();
    let userData = (currentUserData)?JSON.parse(currentUserData):null;
    let userGeoData = (CurrentUserDataGeo)?JSON.parse(CurrentUserDataGeo):null;
    let userNames = userData!= null ?userData.FirstName + ' ' + userData.LastName:'';
    let userEmail = userData!= null ?userData.Email:'';
    let userCity = userGeoData != null ? userGeoData.data.city : '';
    let userState = userGeoData != null ? userGeoData.data.regionName : '';
    let userCountry = userGeoData != null ? userGeoData.data.country : '';
    let userIp = userGeoData != null ? userGeoData.ip : ''; 
    let date = getCurrentDateTime();
    const data = {
        name: userNames,
        email: userEmail,
        city:userCity,
        state: userState,
        country:userCountry,
        date: date,
        ip: userIp
    };
    return data;
}


function getCurrentDateTime() {
  const now = new Date();
  const year = now.getFullYear();
  const month = String(now.getMonth() + 1).padStart(2, '0');
  const day = String(now.getDate()).padStart(2, '0');
  const hours = String(now.getHours()).padStart(2, '0');
  const minutes = String(now.getMinutes()).padStart(2, '0');
  const seconds = String(now.getSeconds()).padStart(2, '0');
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}



function form_block_events() {
    if ($('.formBlock').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        urlSite = urlSite.substring(0, urlSite.length - 1);

        $(".signature_pad").jSignature();
        
        $(document).on('mouseup touchend', '.signature_pad', debounce(function () {
            let formElement = $(this).closest('form.form-component');
            if($(this).hasClass('include_signature_info')){
                let data = GetSignatureDataSite(formElement);
                const SignJsonData = JSON.stringify(data);
                $(this).siblings('input.signature-transaction-info').val(SignJsonData);
                var canvas = $(this).find("canvas.jSignature").get(0);
                var ctx = canvas.getContext("2d");
                //clear Sign data
                ctx.clearRect(300, 0, 300, canvas.height);
                //Add new data
                ctx.fillStyle = "rgba(0, 0, 0, 0.1)";
                ctx.fillRect(300, 0, 300, canvas.height);
                ctx.font = "bold 12px Arial";
                ctx.fillStyle = "rgba(0, 0, 0, 0.8)";
                ctx.fillText("Digitally Signed", 305, 12);
                ctx.font = "11px Arial";
                ctx.fillText(`Name: ${data.name}`, 305, 24);
                ctx.fillText(`Email: ${data.email}`, 305, 36);
                ctx.fillText(`City: ${data.city}`, 305, 48);
                ctx.fillText(`State: ${data.state}`, 305, 60);
                ctx.fillText(`Country: ${data.country}`, 305, 72);
                ctx.fillText(`Date: ${data.date}`, 305, 84);
                ctx.fillText(`IP: ${data.ip}`, 305, 96);
                $(this).addClass('active');
            }
            
            var self = $(this);
            var field_id_name = $(this).attr('data-idvalue');
            let isARSPage = $('body').hasClass('ars-page');
            if (isARSPage) {
                var itemName = field_id_name.replaceAll('[value]', '');
                var formForm = {};
                formForm[itemName] = '';
                send_canvas_signature(self, formForm);
            }
            else {
                $("input[name='" + field_id_name + "']").val('temp_value');
            }
        }, 800));


        set_default_datetime_form_blocks($(this));
        form_load_values();

        form_validate_custom_date_picker();

        form_validate_close_modal();

        process_container_form_block();
        form_block_toggle_password_event();
        form_block_validate_reset_password();

        var calculatefields = $('.formBlock input[data-type-custom="calculate"]');
        if (calculatefields.length) {
            calculate_items();
        }
        $(document).on('click', '.formBlock a.submit-button', function () {

            var self = $(this);
            let formElement = $(this).closest('form.form-component');
            let isRecaptchaActive = is_recaptcha_active();
            if (isRecaptchaActive) {
                self.closest('.formBlock').find('.processing_screen').show();
                self.closest('.formBlock').find('.spinner').show();
                grecaptcha.execute(getClientSecurityKey(), { action: "forms" }).then(function (token) {
                    formElement.find('input[name="pageuserinternalcompleted"]').val('1');
                    if (formElement.find('input[name="user_response"]').length > 0) {
                        //update the value
                        formElement.find('input[name="user_response"]').val(token);
                        var time = new Date().getTime();
                        formElement.find('input[name="user_response_time"]').val(time);
                    } else {
                        // add the form
                        var time = new Date().getTime();
                        formElement.append('<input type="hidden" name="user_response" id="user_response" value="' + token + '" /> ');
                        formElement.append('<input type="hidden" name="user_response_time" id="user_response_time" value="' + time + '" /> ');
                    }
                    form_block_inner_submit(self);
                });
            } else {
                form_block_inner_submit(self);
            }
            
            return false;
        });

        $(document).on('click', '.formBlock a.custom-cancel-button', function () {
            var url = $(this).data("cancel-url");
            if (url != undefined) {
                window.location.href = url;
            }
            else {
                if ($(this).parents().find('.form-user-modal').length > 0) {
                    //var revealModal = $(this).parents().find('.form-user-modal').first();
                    var revealModal = $(this).parents('.form-user-modal').first();
                    var formId = $(revealModal).find('.formBlock').data('form-id');
                    closeCustomForm(formId, revealModal.attr('id'));
                }
                else {
                    history.back()
                }
            }
        });

        $(document).on('click', '.formBlock a.save_continue_later', function () {
            var self = $(this);
            var isDisabled = self.attr('disabled');

            if (isDisabled) {
                return false;
            }
            var _formId = self.closest('.formBlock').data('form-id');
            var _form = self.closest('.formBlock').find('form');
            var formForm = _form.serializeJSON();
            var requestVerificationTokens = self.closest('.formBlock').find('input[name="__RequestVerificationToken"]');

            // CSRF Token
            if (requestVerificationTokens !== null) {
                requestVerificationTokens.each(function () {
                    formForm['__RequestVerificationToken'] = $(this).val();
                });
            }

            var textareaRichText = self.closest('.formBlock').find('textarea.rich_text');
            textareaRichText.each(function () {
                var field = $(this);
                var idField = field.data('field-id');
                if (idField) {
                    var textRichText = CKEDITOR.instances[idField + '[value]'].getData();
                    formForm[idField].value = textRichText;
                }
            });

            formForm['formId'] = _formId;
            formForm['save_complete_later'] = true;
            var fileUploads = _form.find('input[type="file"].simple-file');
            var signaturePads = _form.find('.signature_pad');
            if (fileUploads.length > 0 || signaturePads.length > 0) {
                var validFile = true;
                var xhrs = [];
                var undCounter = 0;
                var isThereFileError = false;
                $.each(fileUploads, function (i, f) {
                    var files = fileUploads[i].files;
                    var private = fileUploads[i].getAttribute('data-private');
                    var fileFormId = fileUploads[i].getAttribute('data-form-id');
                    var requiresLogin = fileUploads[i].getAttribute('data-requires-login');
                    var libraryId = fileUploads[i].getAttribute('data-library-id');
                    var saveToSalesforce = fileUploads[i].getAttribute('data-save-to-salesforce');
                    var sfRecordToRelate = fileUploads[i].getAttribute('data-sf-record-to-relate');
                    var fileUrl = '';
                    var isCopyTo = fileUploads[i].getAttribute('data-copy-enabled');
                    var copyToField = fileUploads[i].getAttribute('data-copy-to-field');
                    var fileName = '';
                    var fileInputName = fileUploads[i].getAttribute('id');
                    var fileAttributeName = fileUploads[i].getAttribute('name')
                    var labelToDisplay = '';
                    if ($('input[id="' + fileInputName + '"]').parent('.fields-section').length > 0) {
                        labelToDisplay = $.trim($('input[id="' + fileInputName + '"]').parent('.fields-section').parent('.internal-field-content').find('.label-section label').text());
                    }
                    if (files.length > 0) {
                        if (window.FormData !== undefined) {
                            var data = new FormData();
                            data.append("private", private);
                            data.append("formId", fileFormId);
                            data.append("requiresLogin", requiresLogin);
                            data.append("libraryId", libraryId);
                            data.append("saveToSalesforce", saveToSalesforce);
                            data.append("sfRecordToRelate", sfRecordToRelate);
                            data.append("inputSource", fileAttributeName)
                            for (var x = 0; x < files.length; x++) {
                                fileName = files[x].name;
                                data.append("file" + x, files[x]);
                                if (((files[x].size / 1024) / 1024) > window.maxFileLengthMBForm) {
                                    validFile = false;
                                }
                            }
                            if (validFile) {
                                var xhr = $.ajax({
                                    type: "POST",
                                    url: urlSite + "/ARS/UploadFile",
                                    contentType: false,
                                    processData: false,
                                    data: data
                                }).done(function (data) {
                                    fileUrl = '';
                                    var jsonResult = JSON.parse(data);
                                    if (jsonResult.status == '200') {
                                        if (jsonResult.Urls != "" && jsonResult.Urls != null) {
                                            jsonResult.Urls.forEach(function (item) {
                                                if (item.fileUrl != '' && item.fileUrl != null) {
                                                    if (fileUrl == '') {
                                                        fileUrl = item.fileUrl;
                                                    }
                                                    else {
                                                        fileUrl = fileUrl + ',' + item.fileUrl;
                                                    }
                                                }
                                            });
                                        }
                                    } else {
                                        isThereFileError = true;
                                        Swal.fire({
                                            title: "",
                                            icon: "error",
                                            text: jsonResult.message,
                                            confirmButtonText: "Ok",
                                        });
                                    }
                                    var name = f.name.substring(0, f.name.indexOf('['));
                                    formForm[name].value = fileUrl;
                                    if ((isCopyTo === true || isCopyTo === 'true')
                                        && copyToField !== null && copyToField !== undefined && copyToField !== '') {
                                        if (formForm[copyToField] !== null && formForm[copyToField] !== undefined) {
                                            formForm[copyToField].value = fileUrl;
                                        }
                                    }
                                    return false;
                                });
                                xhrs.push(xhr);
                            }
                            else {
                                Swal.fire({
                                    title: "",
                                    icon: "error",
                                    text: translation.file_exceeds_size_detail.replaceAll("{FileLength}", window.maxFileLengthMBForm).replaceAll("{FileName}", fileName).replaceAll("{FieldName}", labelToDisplay),
                                    confirmButtonText: "Ok",
                                });
                            }
                        } else {
                            var name = f.name.substring(0, f.name.indexOf('['));
                            formForm[name].value = fileUrl;
                            undCounter = undCounter + 1;
                        }
                    } else {
                        if (fileUploads[i].getAttribute('data-removed-file')) {
                            var name = f.name.substring(0, f.name.indexOf('['));
                            formForm[name].value = '*remove*';
                        }
                        //Validating if form is compliance
                        if (_form.hasClass("isComplianceForm")) {
                            var name = f.name.substring(0, f.name.indexOf('['));
                            var url_saved = "";
                            if (_form.find("input[name='" + name + '_url_file' + "']").length > 0) {
                                url_saved = _form.find("input[name='" + name + '_url_file' + "']").val();
                            }
                            formForm[name].value = url_saved;
                        }
                    }
                });
                $.each(signaturePads, function (index, f) {
                    var self = $(this);
                    var xhr = send_canvas_signature(self, formForm);
                    xhrs.push(xhr);
                });
                if (validFile) {
                    $.when.apply($, xhrs).done(function () {
                        if (isThereFileError === false) {
                            submit_form(self, formForm, false, null);
                        }
                    });
                }
            }else{
                submit_form(self, formForm, false, null);
            }
        });

        $(document).on('keyup change wheel', '.formBlock select[type="select"],.formBlock input[type="number"],.formBlock input[type="text"]', function (e) {
            var currentform = $(this).closest('form');
            let dataType = $(this).data("type");
            let isInput = $(this).is('input');

            if (isInput && (dataType == "number" || dataType == "currency" || dataType == "percent")) {
                if (e.type === 'wheel') {
                    setTimeout(() => {
                        calculate_items();
                    }, 100);
                } else {
                    calculate_items();
                }
            }

            PopulateFieldSelectLisviewSalesforce(currentform);
        });
        $(document).on('keyup keydown change', '.formBlock input[data-confirm-text="true"]', function () {
            let is_validate_confirm_text = $(this).attr('data-confirm-text');
            if(is_validate_confirm_text == 'true'){
               let currentValue = $(this).val();
               let dataOriginalRequired = $(this).attr('data-original-required');
               let fieldId = $(this).attr('data-field-id');
               if(dataOriginalRequired == ''){
                    if(currentValue == ''){
                        $(this).closest('.row-fields').find('input[name="retype_'+fieldId+'"]').attr('data-required',false);
                        $(this).closest('.row-fields').find('input[name="retype_'+fieldId+'"]').attr('aria-invalid',false);
                        $(this).closest('.row-fields').find('label[for="retype_'+fieldId+'"]').attr('data-required','');
                    }else{
                        $(this).closest('.row-fields').find('label[for="retype_'+fieldId+'"]').attr('data-required','*');
                    }
               }
            }
        });

        $(document).on('click', '.signature-clear', function () {
            $(this).parents('.fields-section').find('.signature_pad').jSignature("reset");
            var field_id_name = $(this).parents('.fields-section').find('.signature_pad').attr('data-idvalue');
            $(this).parents('.fields-section').find('.default-signature').hide();
            $(this).parents('.fields-section').find('.signature_pad').show();
            $("input[name='" + field_id_name + "']").val('');
            let sign_pad = $(this).closest('.fields-section').find('.signature_pad');
            if (sign_pad.hasClass('include_signature_info')) {
                sign_pad.removeClass('active');
            }
        });

        $(document).on('click', '.gpt-text-btn-iconopen-modal', function () {
            $(this).siblings('.gpt-text-results').addClass('active');
            $(this).hide();
        });
        $(document).on('click', '.gpt-text-btn-icon', function () {
            let thisElement = $(this);
            let promt = thisElement.siblings('input[name="chatgptpromt"]').val();
            let chatgptuseapi = thisElement.siblings('input[name="chatgptuseapi"]').val();
            let chatgpttextareamode = thisElement.siblings('input[name="chatgpttextareamode"]').val();
            let ChatGptIsCompletePrompt = thisElement.siblings('input[name="ChatGptIsCompletePrompt"]').val();
            let ChatGptIsMultiplePrompt = thisElement.siblings('input[name="ChatGptIsMultiplePrompt"]').val();
            let labelinput = '<b>' + $(thisElement).closest('.row').find('.label-section label').text() + '</b>';
            let text = thisElement.siblings('input.gpttext').val();
            if (chatgpttextareamode == 'true') {
                if (thisElement.siblings('textarea.gpttext').hasClass('rich_text')) {
                    let textarea_id = thisElement.siblings('textarea.gpttext').attr('id');
                    text = CKEDITOR.instances[textarea_id].getData();
                    text = $(text).text();
                } else {
                    let textarea_val = thisElement.siblings('textarea.gpttext').val();
                    text = textarea_val;
                }
            }
            if (ChatGptIsCompletePrompt == 'true') {
                if (text) {
                    thisElement.siblings('.gpt-text-results').removeClass('active');
                    generate_gpt_text(thisElement, text, "", chatgptuseapi);
                    $(this).find('.loader').addClass('active');
                } else {
                    Swal.fire({
                        title: '',
                        icon: 'error',
                        html: "The action can not be completed because the " + labelinput + " is empty.",
                        confirmButtonText: 'Ok',
                        closeOnConfirm: true
                    });
                }
            } else {
                if (text && promt) {
                    thisElement.siblings('.gpt-text-results').removeClass('active');
                    generate_gpt_text(thisElement, text, promt, chatgptuseapi);
                    $(this).find('.loader').addClass('active');
                } else {
                    if (text == '') {
                        Swal.fire({
                            title: '',
                            icon: 'error',
                            html: "The action can not be completed because the " + labelinput + " is empty.",
                            confirmButtonText: 'Ok',
                            closeOnConfirm: true
                        });
                    } else if (promt == '') {
                        Swal.fire({
                            title: '',
                            icon: 'error',
                            html: "The action can not be completed because the prompt in configure form is empty.",
                            confirmButtonText: 'Ok',
                            closeOnConfirm: true
                        });
                    }
                }
            }
        });
        $(document).on('change', 'select.gpt-prompts-options', function () {
            let thisElement = $(this);
            let promt = $(thisElement).val();
            if (promt) {
                let chatgptuseapi = thisElement.parent('.content-gpt-options-prompts').siblings('input[name="chatgptuseapi"]').val();
                let chatgpttextareamode = thisElement.parent('.content-gpt-options-prompts').siblings('input[name="chatgpttextareamode"]').val();
                let ChatGptIsCompletePrompt = thisElement.parent('.content-gpt-options-prompts').siblings('input[name="ChatGptIsCompletePrompt"]').val();
                let ChatGptIsMultiplePrompt = thisElement.parent('.content-gpt-options-prompts').siblings('input[name="ChatGptIsMultiplePrompt"]').val();
                let text = thisElement.parent('.content-gpt-options-prompts').siblings('input.gpttext').val();

                let labelinput = '<b>' + $(thisElement).closest('.row').find('.label-section label').text() + '</b>';

                if (chatgpttextareamode == 'true') {
                    if (thisElement.parent('.content-gpt-options-prompts').siblings('textarea.gpttext').hasClass('rich_text')) {
                        let textarea_id = thisElement.parent('.content-gpt-options-prompts').siblings('textarea.gpttext').attr('id');
                        text = CKEDITOR.instances[textarea_id].getData();
                        text = $(text).text();
                    } else {
                        let textarea_val = thisElement.parent('.content-gpt-options-prompts').siblings('textarea.gpttext').val();
                        text = textarea_val;
                    }
                }
                if (ChatGptIsMultiplePrompt == 'true') {
                    if (text && promt) {
                        thisElement.parent('.content-gpt-options-prompts').siblings('.gpt-text-results').removeClass('active');
                        generate_gpt_text(thisElement, text, promt, chatgptuseapi);
                        $(this).parent('.content-gpt-options-prompts').find('.loader').addClass('active');
                    } else {
                        if (text == '') {
                            Swal.fire({
                                title: '',
                                icon: 'error',
                                html: "The action can not be completed because the " + labelinput + " is empty.",
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            });
                            thisElement.val('');
                        }
                    }
                }
            } else {
                thisElement.val('');
            }
        });
        $(document).on('click', '.gpt-text-results .close', function () {
            $(this).parents('.gpt-text-results').removeClass('active');
            $(this).parents('.gpt-text-results').siblings('.gpt-text-btn-iconopen-modal').show();
        });
        $(document).on('change', '.gpt-text-results input[type="radio"]', function () {
            let chatgpttextareamode = $(this).parents('.input-gpt-text').find('input[name="chatgpttextareamode"]').val();
            let labelText = $(this).parent('label').find('.html-content').html();
            if (chatgpttextareamode == 'true') {
                if ($(this).parents('.input-gpt-text').find('textarea.gpttext').hasClass('rich_text')) {
                    let html_content = $(this).parent('label').find('.html-content').html();
                    let textarea_id = $(this).parents('.input-gpt-text').find('textarea.gpttext').attr('id');
                    let lines = html_content.split('\n');
                    let formattedText = lines.map(line => `<p>${line}</p>`).join('');
                    CKEDITOR.instances[textarea_id].setData(formattedText);
                } else {
                    $(this).parents('.input-gpt-text').find('textarea.gpttext').val(labelText);
                }
            } else {
                $(this).parents('.input-gpt-text').find('input.gpttext').val(labelText);
            }
            //Close modal and show icon modal
            $(this).parents('.gpt-text-results').removeClass('active');
            $(this).parents('.gpt-text-results').siblings('.gpt-text-btn-iconopen-modal').show();
        });
        $(document).on('click change', '.formBlock .number-slider', function () {
            calculate_items();
        });

        $(document).on('click change', '.formBlock .rating-class-section,.formBlock .rating-class-section-scale', function () {
            calculate_items();
        });

        var textareaRichText = $('.formBlock').find('textarea.rich_text');
        textareaRichText.each(function () {
            var field = $(this);
            var idField = field.data('field-id');
            var currentFormBlock = field.parents('.formBlock');
            var idFieldSelector = idField + '[value]';
            if (currentFormBlock !== null && currentFormBlock !== undefined) {
                var isMultiLanguage = currentFormBlock.find('input#enable-multi-language').val();
                if (isMultiLanguage === "true") {
                    var idsMultilanguage = currentFormBlock.find('input#ids-fields-with-multi-language').val();
                    var datalist = JSON.parse(idsMultilanguage);
                    datalist.forEach(function (valueL) {
                        if (valueL == idField) {
                            idFieldSelector = field.attr('id');
                        }
                    });
                }
            }

            if (idField) {
                CKEDITOR.instances[idFieldSelector].on('change', function () {
                    var textRichText = CKEDITOR.instances[idFieldSelector].getData();
                    field.val(textRichText);
                    field.trigger('change');
                });
            }
        });


        $(document).on('change', '.formBlock [data-copy-enabled="true"]', function () {
            var destineSelector = $(this).attr('data-copy-to-field');
            var typeFiled = $(this).attr('type');
            var dataTypeFiled = $(this).attr('data-type');
            if (destineSelector != undefined && destineSelector != null) {
                let setDefaultValue = false;
                if (typeFiled == 'checkbox' && dataTypeFiled == 'multiselect') {
                    var nameInput = $(this).attr('name');
                    var token = nameInput.split('[value][');
                    var groupSelect = token[0] + '[value][]';
                    var selValue = '';

                    $("[name='" + groupSelect + "'] input[type='checkbox']").each(function () {
                        if ($(this).prop('checked')) {
                            if ($(this).val() !== '') {
                                selValue += ((selValue != '' ? ',' : '') + $(this).val());
                                $("input[name='" + destineSelector + "[value]']").val(selValue);
                            }
                        }
                    });

                    if (selValue == '') {
                        setDefaultValue = true;
                    }
                }
                else if (typeFiled == 'checkbox') {
                    $("input[name='" + destineSelector + "[value]']").val($(this).prop('checked'));
                }
                else if (typeFiled === 'select' && dataTypeFiled === 'multiselect') {
                    let nameInput = $(this).attr('name');
                    let token = nameInput.split('[value][');
                    let groupSelect = '.fields-section.field-section-' + token[0];
                    var selValue = '';

                    let currentValue = $(this).val();
                    let setValue = '';
                    $(groupSelect).find('.ms-options input[type="checkbox"]:checked').each(function () {
                        if ($(this).val() !== '') {
                            selValue += ((selValue != '' ? ';' : '') + $(this).val());
                        }
                    });
                    if (selValue !== '') {
                        $("input[name='" + destineSelector + "[value]']").val(selValue);
                    } else {
                        setDefaultValue = true;
                    }

                }
                else {
                    $("input[name='" + destineSelector + "[value]']").val($(this).val());
                }

                if ($("input[name='" + destineSelector + "[value]']").val() == '' || setDefaultValue) {
                    let defaultValue = $("input[name='" + destineSelector + "[value]']").data('defaultValue');

                    if (defaultValue !== undefined && defaultValue !== '') {
                        $("input[name='" + destineSelector + "[value]']").val(defaultValue);
                    }
                } 
            }

        });

        $(document).on('change', '.formBlock input[name="isrecurrentbillingform"]', function () {
            if ($(this).is(':checked') == true) {
                $(this).closest('div.isrecurrentbilling').find('select[name="frequenciesToDisplayselected"]').show();
                $(this).closest('div.isrecurrentbilling').find('.recurrent-message').show();
            } else {
                $(this).closest('div.isrecurrentbilling').find('select[name="frequenciesToDisplayselected"]').hide();
                $(this).closest('div.isrecurrentbilling').find('.recurrent-message').hide();
            }
        });


        $(document).on('change', '.payment-component', function () {
            let thisElement = $(this);
            generate_text_recurrent_message(thisElement);
        });


        $(document).on('click keypress','.input-group-select input[data-custom-type="editable-select"]', function (event) {
            event.stopPropagation();
            if (event.type === 'click' || (event.type === 'keypress' && event.which === 13)) {
                $('.formBlock .input-group-select .select-options').removeClass('active');
                $(this).siblings('.select-options').addClass('active');
            }
        });


        $(document).on('click keypress keydown', '.formBlock .input-group-select .select-options span', function (event) {
            event.stopPropagation();
            if (event.type === 'keydown' && (event.key === 'ArrowUp' || event.key === 'ArrowDown')) {
                var $selectOptions = $(this).closest('.select-options');
                var $options = $selectOptions.find('span[role="option"]');
                var currentIndex = $options.index(this);
                if (event.key === 'ArrowUp' && currentIndex > 0) {
                    currentIndex--;
                } else if (event.key === 'ArrowDown' && currentIndex < $options.length - 1) {
                    currentIndex++;
                }
                $options.eq(currentIndex).focus();
            }
            if (event.type === 'click' || (event.type === 'keypress' && event.which === 13)) {
                var selectedValue = $(this).attr('value');
                var $inputGroupSelect = $(this).closest('.input-group-select');
                $(this).closest('.input-group-select').find('input[type="text"][data-custom-type="editable-select"]').val(selectedValue);
                $(this).closest('.select-options').removeClass('active');

                $inputGroupSelect.find('input[type="text"][data-custom-type="editable-select"]').attr('aria-live', 'assertive');

            }
        });




         $(document).on('click', function (event) {
            if (!$(event.target).is('.input-group-select input[data-custom-type="editable-select"]') ) {
                $('.formBlock .input-group-select .select-options').removeClass('active');
            }
        }); 

         var editableselects = $('.formBlock').find('div.custom-editable-select-options');

         editableselects.each(function () {
            let $this = $(this);
            let defaultValue = $this.find('span[selected]').text();
            if (defaultValue) {
                $this.siblings('input[type="text"][data-custom-type="editable-select"]').val(defaultValue);
            }
         });





    }

}

function validateDatesWithCompareCustomDatePicker(ruleValidate, idField, _form, name) {
    var valid = true;
    var idFieldToCompare = ruleValidate.attr('class');
    if (idFieldToCompare !== null && idFieldToCompare !== undefined) {
        idFieldToCompare = idFieldToCompare.replace('rule-', '');
        var operator = ruleValidate.val();
        var error_operator_message = '';
        var currentName = idField + "[value]";
        var isInputValue = $('input[name="' + currentName + '"]').val() != '';
        if (isInputValue === true) {
            var currentDateFieldValue = $('input[name="' + currentName + '"]').val();
            var compareName = idFieldToCompare + "[value]";
            var compareDateFieldValue = ($('input[name="' + compareName + '"]').length > 0)
                ? $('input[name="' + compareName + '"]').val()
                : null;

            if (currentDateFieldValue !== null && compareDateFieldValue !== null && isInputValue) {
                if (_form.find('input[name="' + idField + '[timeValue]"]').length > 0) {
                    var timeSelected = _form.find('input[name="' + idField + '[timeValue]"]').val();
                    if (timeSelected !== null && timeSelected !== undefined) {
                        currentDateFieldValue = getDateFromFields(currentDateFieldValue, timeSelected);
                        var dc = moment(currentDateFieldValue, getCustomDateFormatForCustomDateTimePickerMoment());
                        currentDateFieldValue = dc;
                    }
                } else {
                    var dc = moment(currentDateFieldValue, getCustomDateFormatForCustomDatePickerMoment());
                    currentDateFieldValue = dc;
                }
                if (_form.find('input[name="' + idFieldToCompare + '[timeValue]"]').length > 0) {
                    var timeSelected = _form.find('input[name="' + idFieldToCompare + '[timeValue]"]').val();
                    if (timeSelected !== null && timeSelected !== undefined) {
                        compareDateFieldValue = getDateFromFields(compareDateFieldValue, timeSelected);
                        var cc = moment(compareDateFieldValue, getCustomDateFormatForCustomDateTimePickerMoment());
                        compareDateFieldValue = cc;

                    }

                } else {
                    var cc = moment(compareDateFieldValue, getCustomDateFormatForCustomDatePickerMoment());
                    compareDateFieldValue = cc;
                }
                
               // compareDateFieldValue = compareDateFieldValue.valueOf();

                var labelValue = _form.find('label[for="' + idFieldToCompare + '[value]"]').text();
                var currentLabelValue = _form.find('label[for="' + idField + '[value]"]').text();

                if (operator === "GREATER_THAN_OR_EQUAL") {
                    if (currentDateFieldValue < compareDateFieldValue) {
                        valid = false;
                        error_operator_message = ' ' + translation.form_validation_greather_equal + ' ';
                    }

                } else if (operator === "GREATER_THAN") {
                    if (currentDateFieldValue <= compareDateFieldValue) {
                        valid = false;
                        error_operator_message = ' ' + translation.form_validation_greather + ' ';
                    }

                } else if (operator === "LESS_THAN") {
                    if (currentDateFieldValue >= compareDateFieldValue) {
                        valid = false;
                        error_operator_message = ' ' + translation.form_validation_less_than + ' ';
                    }

                } else if (operator === "LESS_THAN_OR_EQUAL") {
                    if (currentDateFieldValue > compareDateFieldValue) {
                        valid = false;
                        error_operator_message = ' ' + translation.form_validation_less_equal + ' ';
                    }
                } else if (operator === "EQUAL") {
                    if (currentDateFieldValue != compareDateFieldValue) {
                        valid = false;
                        error_operator_message = ' ' + translation.form_validation_equal + ' ';
                    }
                }

                if (valid === true && _form.find('.field-section-' + idField + ' .form-builder-date-container label.error').length > 0) {
                    try {
                        _form.find('.field-section-' + idField + ' .form-builder-date-container label.error').remove();
                    } catch (e) {
                        console.log(e);
                    }
                } else if (valid === false && _form.find('.field-section-' + idField + ' .form-builder-date-container label.error').length === 0) {
                    var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + currentLabelValue + error_operator_message + labelValue + '</label>';
                    _form.find('.field-section-' + idField + ' .form-builder-date-container').append(label);
                } else if (valid === false) {
                    _form.find('.field-section-' + idField + ' .form-builder-date-container label.error').remove();
                    var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + currentLabelValue + error_operator_message + labelValue + '</label>';
                    _form.find('.field-section-' + idField + ' .form-builder-date-container').append(label);
                }


            }
        }


    }
    return valid;
}

function form_validate_close_modal() {
    $('[data-reveal]').on('open.zf.reveal', function () {
        let modal = $(this);
        if (modal.hasClass('form-user-modal')) {
            if (modal.find('.form-builder-date-container').length > 0) {
                modal.find('.form-builder-date-container').each(function () {
                    let cf = $(this);
                    if (cf.find('.inclusive-dates__input-container').length > 1) {
                        //repeated field
                        cf.find('.inclusive-dates__input-container').first().remove();
                    }
                    cf.parents('.fields-section').find('.raw-date-inclusive').val('');
                });

                validate_current_configuration_custom_date_picker(true);
            }


        }
    });
   

    
}


function reviewAlternatives(currentValue) {
    let dateRegrex = /^(?:3[01]|[12][0-9]|0?[1-9])([\-/.])(0?[1-9]|1[1-2])\1\d{4}$/;
    if (dateRegrex.test(currentValue)) {
        return true;
    }
    return false;

}

function validateDateEntered(currentValue) {

    let dateRegrex = /^\d{2}([./-])\d{2}\1\d{4}$/;

    if (dateRegrex.test(currentValue)) {
        return true;
    }
    return false;
}

function validate_current_configuration_custom_date_picker(includeModalForm) {
    $(document).find('.formBlock input[type="text"].inclusive-dates__input').each(function () {

        
        let parentForm = $(this).parents('div.formBlock');
        if ((parentForm.hasClass('form-in-modal') && includeModalForm === true) ||
            (!parentForm.hasClass('form-in-modal') && includeModalForm === false)) {
            let id = $(this).attr('id');
            let field = $(this);
            let idRaw = id.replace("-input", "_Raw");
            let idItem = id.replace("-input", "");
            let currentfield = $(this).parents('inclusive-dates');
            var invalidDateMsg = translation.invalid_date_field;

            currentfield.removeAttr('disabled');
            let idField = idItem.replace("[value]", "") + "[currentDateFormat]"; 

            let currentSectionField = $(this).parents('.fields-section');
            let currentDateFormat = currentSectionField.find('input[name="' + idField + '"]').val();
            idField = idItem.replace("[value]", "") + "[fromLibrary]";
            let dateFormatLibrary = currentSectionField.find('input[name="' + idField + '"]').val();


            let fieldRaw = $(document).find('input[id="' + idRaw + '"]');
            let originalValue = $(document).find('input[id="' + id + '"]').val();
            let datePicker = document.getElementById(idItem);
            let currentDateSelected = fieldRaw.val();
            if (currentDateSelected !== null && currentDateSelected !== undefined && currentDateSelected !== '') {
                if (originalValue.indexOf("T") != -1) {
                    let fixedValue = moment(currentDateSelected).format(window.MomentDateFormat);
                    $(document).find('input[id="' + id + '"]').val(fixedValue);
                }
                else if (originalValue == '') {
                    var dateToPopulateField = (moment(currentDateSelected).format(window.MomentDateFormat));
                    $(document).find('input[id="' + id + '"]').val(dateToPopulateField);
                }
            }


            //verifying if populate the token
            if (currentSectionField.find('input.populate-current-datetime').length > 0) {
                let currentDateToAssign = moment().format(window.MomentDateFormat);
                let currentDateRaw = moment().format('YYYY-MM-DD');
                field.val(currentDateToAssign);
                fieldRaw.val(currentDateRaw);
                datePicker.startDate = currentDateRaw;
            }

            datePicker.addEventListener('changeDate', function (event) {
                let currentValue = moment(event.detail, currentDateFormat);
                field.parents(".fields-section").find("label.error").remove();
                //fieldRaw.val(currentValue);
                if (currentValue.isValid()) {
                    if (!validateDateEntered(event.detail)) {
                        if (reviewAlternatives(event.detail)) {
                            //requires rewrite
                            let valueRewrited = currentValue.format(currentDateFormat);
                            field.val(valueRewrited);

                            let validValue = currentValue.format(dateFormatLibrary);
                            fieldRaw.val(validValue);
                            datePicker.startDate = validValue;
                            form_validate_min_age(currentfield, validValue);
                        } else {
                            fieldRaw.val("Fecha Invalida");
                            if (!field.parents(".fields-section").find('.form-builder-date-container label.error').is(':visible')) {
                                var label = '<label id="' + idItem + '-error" class="error" for="' + idItem + '" style="display:block;">' + invalidDateMsg + '</label>';
                                field.parents(".fields-section .form-builder-date-container").append(label);
                            }
                        }

                    } else {
                        let validValue = currentValue.format(dateFormatLibrary);
                        fieldRaw.val(validValue);
                        datePicker.startDate = validValue;
                        form_validate_min_age(currentfield, validValue);
                        form_validate_min_max_days(currentfield, validValue, currentDateFormat);

                    }
                } else {
                    fieldRaw.val("Fecha Invalida");
                    if (!field.parents(".fields-section").find('.form-builder-date-container label.error').is(':visible')) {
                        var label = '<label id="' + idItem + '-error" class="error" for="' + idItem + '" style="display:block;">' + invalidDateMsg + '</label>';
                        field.parents(".fields-section .form-builder-date-container").append(label);
                    }

                }

            });
            datePicker.addEventListener('selectDate', function (event) {
                fieldRaw.val(event.detail);
                
                //let fixedValue = moment(event.detail).format(window.MomentDateFormat);
                //$(document).find('input[id="' + id + '"]').val(fixedValue);
                field.parents(".fields-section .form-builder-date-container").find("label[id='" + idItem + "-error']").remove();
                form_validate_min_age(currentfield, event.detail);
            });

            $(document).find('input[id="' + id + '"]').on('change', function () {
                let rawValue = fieldRaw.val();
                //fieldRaw.val(currentValue);
                if (rawValue !== 'Fecha Invalida' && rawValue !== 'Invalid Date') {
                    datePicker.startDate = rawValue;
                }
                    
                
            });

        }




    });

}

function form_validate_min_age(currentfield, dateSelected) {

    let dataMinAge = currentfield.attr('data-min-age');
    let dataErrorMessage = currentfield.attr('data-min-age-message');
    if ((dataMinAge !== null && dataMinAge !== undefined && dataMinAge !== '') &&
        (dataErrorMessage !== null && dataErrorMessage !== undefined && dataErrorMessage !== '')) {
        let selectedDate = moment(dateSelected);
        let currentDate = moment();
        let diff = currentDate.diff(selectedDate, 'years');
        let minAgeCompare = parseInt(dataMinAge);
        $(currentfield).find('label.error-min-age').remove();
        if (diff >= minAgeCompare) {
            return true;
        } else {
            $(currentfield).append('<label class="error error-datefield error-custom error-min-age">' + dataErrorMessage + '</label>');
        }
        return false;
    }
    return true;
}

function form_validate_min_max_days(currentfield, dateSelected, currentDateFormat) {
    let dataMinDate = currentfield.attr('min-date');
    let dataMaxDate = currentfield.attr('max-date');
    var labelToDisplay = '';
    if (currentfield.parents('.internal-field-content').find('.label-section label').length > 0) {
        labelToDisplay = $.trim(currentfield.parents('.internal-field-content').find('.label-section label').text());
    }

    if (dataMinDate !== null && dataMinDate !== undefined && dataMinDate !== '') {

        let currentValueMin = moment(dataMinDate);
        let selectedDate = moment(dateSelected);
        let minDate = moment(dataMinDate);
        let diff = selectedDate.diff(minDate, 'days');
        if (diff >= 0) {
            if (!(dataMaxDate !== null && dataMaxDate !== undefined && dataMaxDate !== ''))
                return true;
        } else {
            $(currentfield).append('<label class="error error-datefield error-custom error-min-date">' + labelToDisplay + ' ' + window.translation.must_be_greater_than + ' ' + currentValueMin.format(currentDateFormat) +'</label>');
            
        }
        if(!(dataMaxDate !== null && dataMaxDate !== undefined && dataMaxDate !== ''))
            return false;
    }
    if (dataMaxDate !== null && dataMaxDate !== undefined && dataMaxDate !== '') {
        let currentValueMax = moment(dataMaxDate);
        let selectedDate = moment(dateSelected);
        let maxDate = moment(dataMaxDate);
        let diff = maxDate.diff(selectedDate, 'days');
        if (diff >= 0) {
            return true;
        } else {
            $(currentfield).append('<label class="error error-datefield error-custom error-min-date">' + labelToDisplay + ' ' + window.translation.must_be_less_than + ' ' + currentValueMax.format(currentDateFormat) + '</label>');

        }
        return false;
    }
    return true;
}


function form_validate_custom_date_picker() {

    setTimeout(function () {
        validate_current_configuration_custom_date_picker(false);

    }, 250);
}


function replaceVariable(match, message_tokens) {
    var variableName = match.slice(1, -1);
    return message_tokens[variableName] || match;
}
function generate_text_recurrent_message(thisElement) {
    var isrecurrentbillingform = $(thisElement).find('input[name="isrecurrentbillingform"]').prop('checked');
    var amountSelected = $(thisElement).find('input[name="amountField"]:checked').val();
    if (isrecurrentbillingform) {
        let message = '';
        let original_message = window.translation.donation_recurring_message;
        let isRecurrentBilling = $(thisElement).find('input[name="isRecurrentBilling"]').val();
        let formAmountField = $(thisElement).find('input[name="formAmountField"]').val();
        if (amountSelected == 'Other Amount') {
            formAmountField = ($(thisElement).find('input[name="formAmountOtherValue"]').val() != '') ? $(thisElement).find('input[name="formAmountOtherValue"]').val() : '0.00';
        } else {
            formAmountField = (formAmountField / 100).toFixed(2);
        }
        let processor_selected = $(thisElement).find('input[name="processor_selected"]').val();
        let donate_pay_text = $(thisElement).find('input[name="donate_pay_text"]').val();
        let displayFrequenciesInForm = $(thisElement).find('input[name="displayFrequenciesInForm"]').val();
        let currentDate = moment().format(window.MomentDateFormat);
        var message_tokens = {
            donate_pay_text: donate_pay_text,
            processor_selected: processor_selected,
            formAmountField: formAmountField,
            frequency: '',
            currentDate: currentDate
        };
        if (isRecurrentBilling == 'true' && displayFrequenciesInForm == 'true') {
            frequency = $(thisElement).find('select[name="frequenciesToDisplayselected"] option:selected').text();
            message = original_message;
            message_tokens.frequency = frequency;
            message = message.replace(/{\w+}/g, function (match) {
                return replaceVariable(match, message_tokens);
            });
            thisElement.find('.recurrent-message p').text(message);
        } else {
            frequency = $(thisElement).find('input[name="SingleFrecuency"]').attr('data-single-frecuency-label');
            message_tokens.frequency = frequency;
            if (isRecurrentBilling == 'true') {
                message = original_message;
                message = message.replace(/{\w+}/g, function (match) {
                    return replaceVariable(match, message_tokens);
                });
                thisElement.find('.recurrent-message p').text(message);
            }
        }
    } else {
        thisElement.find('.recurrent-message p').text('');
    }
}

function generate_gpt_text(thisElement, text, promt, chatgptuseapi) {
    thisElement = ($(thisElement).hasClass('gpt-prompts-options')) ? $(thisElement).parent('.content-gpt-options-prompts') : thisElement;
    $('.gpt-text-results').removeClass('active');
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    var url = (chatgptuseapi == "AZURE") ? urlSite + "/ChatGpt/GetTextAzure" : urlSite + "/ChatGpt/GetText";
    var xhr = $.ajax({
        type: "POST",
        url: url,
        data: { textvalue: text, getpromt: promt },
        success: function (data) {
            data = data.replace(/^\s*[\r\n]/gm, '');
            const regex = /^(\d+\.\s+|\-\s+)/;
            let isList = regex.test(data);
            if (data) {
                let chatgpttextareamode = thisElement.siblings('input[name="chatgpttextareamode"]').val();
                let html_radio = (chatgpttextareamode == 'true') ? '<label class="original"><input type="radio" name="gpt-title"><span class="html-content"> ' + text + '</span></label>' : '<label class="original"><input type="radio" name="gpt-title"> <span class="html-content">' + text + '</span></label>';

                const options = data.replace(/\n/g, '').split(/\d+\. /).slice(1);

                const optionsArray = options.map(option => option.trim());
                if (isList && optionsArray.length > 0) {
                    for (var i = 0; i < optionsArray.length; i++) {
                        html_radio += '<label><input type="radio" name="gpt-title"><span class="html-content">' + optionsArray[i] + '</span></label>';
                    }
                    thisElement.siblings('.gpt-text-results').find('.content').html(html_radio);
                } else {
                    html_radio += '<label><input type="radio" name="gpt-title"><span class="html-content">' + data + '</span></label>';
                    thisElement.siblings('.gpt-text-results').find('.content').html(html_radio);
                }
            } else {
                thisElement.siblings('.gpt-text-results').find('.content').html('<p>There is a IA tool configuration error</p>');
            }
            thisElement.siblings('.gpt-text-results').addClass('active');
            thisElement.find('.loader').removeClass('active');
            if ($(thisElement).hasClass('content-gpt-options-prompts')) {
                $(thisElement).find('select.gpt-prompts-options').val('');
            }
        },
        error: function (xhr, status, error) {
            console.log("Error: " + error);
        }
    });
}
function upload_image_asign_url_to_signature(self, _formId, field_id_name, file, formForm) {
    var xhr = null;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    var validFile = true;
    var requiresLogin = $("input[name='" + field_id_name + "']").attr('data-requires-login');
    var saveToSalesforce = $("input[name='" + field_id_name + "']").attr('data-save-to-salesforce');
    var sfRecordToRelate = $("input[name='" + field_id_name + "']").attr('data-sf-record-to-relate');
    if (file) {
        var data = new FormData();
        data.append("private", false);
        data.append("formId", _formId);
        data.append("requiresLogin", requiresLogin);
        data.append("libraryId", '');
        data.append("saveToSalesforce", saveToSalesforce);
        data.append("sfRecordToRelate", sfRecordToRelate);
        data.append("inputSource", field_id_name)
        fileName = file.name;
        data.append("file" + 0, file);
        if (((file.size / 1024) / 1024) > window.maxFileLengthMBForm) {
            validFile = false;
        }
        if (validFile) {
            xhr = $.ajax({
                type: "POST",
                url: urlSite + "/ARS/UploadFile",
                contentType: false,
                processData: false,
                data: data
            }).done(function (data) {
                fileUrl = '';
                var jsonResult = JSON.parse(data);
                if (jsonResult.status == '200') {
                    if (jsonResult.Urls != "" && jsonResult.Urls != null) {
                        jsonResult.Urls.forEach(function (item) {
                            if (item.fileUrl != '' && item.fileUrl != null) {
                                if (fileUrl == '') {
                                    fileUrl = item.fileUrl;
                                }
                                else {
                                    fileUrl = fileUrl + ',' + item.fileUrl;
                                }
                            }
                        });
                    }
                } else {
                    isThereFileError = true;
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    });
                }
                $("input[name='" + field_id_name + "']").val(fileUrl);
                //Get value in form
                var itemName = field_id_name.replaceAll('[value]', ''); 
                var itemFile = formForm[itemName];
                itemFile["value"] = fileUrl;
                formForm[itemName] = itemFile;
                self.find('.spinner').hide();
                self.closest('.formBlock').find('.submit-button').removeClass('disabled');
                return false;
            });
            return xhr;
        } else {
            Swal.fire({
                title: "",
                icon: "error",
                text: translation.file_exceeds_size_detail.replaceAll("{FileLength}", window.maxFileLengthMBForm).replaceAll("{FileName}", fileName).replaceAll("{FieldName}", labelToDisplay),
                confirmButtonText: "Ok",
            });
        }
    }
}

//data url is array : 0 : "image/png;base64" , 1 : "iVBORw0KGgoAAAANSUhEU..."
function ConvertImageBase64ToFile(dataurl, filename) {
    var mime = dataurl[0];
    var base64 = dataurl[1];
    var bstr = atob(base64);
    var n = bstr.length;
    var u8arr = new Uint8Array(n);
    while (n--) {
        u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, { type: mime });
}


function validateConfirmedText(self){
    var confirmedtexts = self.closest('.formBlock').find('input[data-confirm-text="true"]');
    confirmedtexts.each(function () {
        let currentValue = $(this).val();
        let dataOriginalRequired = $(this).attr('data-original-required');
        let fieldId = $(this).attr('data-field-id');
        if(dataOriginalRequired == ''){
            if(currentValue == ''){
                $(this).closest('.row-fields').find('input[name="retype_'+fieldId+'"]').attr('data-required',false);
                $(this).closest('.row-fields').find('input[name="retype_'+fieldId+'"]').attr('aria-invalid',false);
                $(this).closest('.row-fields').find('label[for="retype_'+fieldId+'"]').attr('data-required','');
            }else{
                $(this).closest('.row-fields').find('label[for="retype_'+fieldId+'"]').attr('data-required','*');
            }
        }
    });
}

function calculate_items() {
    $(document).ready(function () {
        if ($('.formBlock .active_field_calculate').length > 0) {
            $('.formBlock .active_field_calculate').each(function (index, el) {
                var decimalSeparator = window.decimalCharacter;
                var digitGroupSeparator = window.digitGroupSeparator;
                var result = 0;
                var resultformatDecimal = '';
                var $this = $(this);
                var idRequired = $this.attr('data-required');
                var isAutoNumeric = $this.attr('data-is-auto-numeric');
                var items = $this.attr('data-items').split(',');
                const name = $this.attr('name');
                var hasError = false;
                let is_include_non_visible_fields = $this.siblings('input.is_include_non_visible_fields').val();
                var numberDecimal = 0;
                let allItemsAreEmpty = true;
                $(items).each(function (index, active) {
                    $('.formBlock input[type="number"],.formBlock input[type="text"][data-type="currency"],.formBlock input[type="text"][data-type="percent"],.formBlock input[type="text"][data-type="number"]').each(function (index1, el1) {

                        var isAutoNumeric = $(this).hasClass('field-with-auto-number');
                        var field_id = $(this).attr('name');
                        var positiontype = field_id.indexOf('[');
                        var value = $(this).val();
                        //This is to evaluate if really all the relatedItems were empty 
                        allItemsAreEmpty = allItemsAreEmpty && value == '';
                        let originalValue = value;
                        var isDecimal = false;
                        var dataType = $(this).attr('data-type');
                        var currentFieldDecimalSeparator = decimalSeparator;
                        var currentFieldDigitGroupSeparator = digitGroupSeparator;
                        if(!isAutoNumeric){
                            var dataDecimalMark = $(this).attr('data-decimal-mark');
                            currentFieldDecimalSeparator = (dataDecimalMark != '' && dataDecimalMark != undefined)?dataDecimalMark:currentFieldDecimalSeparator;
                        }
                        isDecimal = value.indexOf(currentFieldDecimalSeparator) !== -1;
                        currentFieldDigitGroupSeparator = (currentFieldDecimalSeparator === ',')?'.':',';
                        if (result && String(result).indexOf('.') !== -1) {
                            isDecimal = true;
                        }
                        if (isDecimal) {
                            numberDecimal = 2;
                        }
                        if (positiontype > 0) {
                            field_id = field_id.substring(0, positiontype);
                            if (field_id == active) {
                                if (value) {
                                    var isFieldVisible = true;
                                    if($(this).closest('.section', $(this).closest('form')).length > 0){
                                        isFieldVisible = $(this).closest('.internal-field-content.section').hasClass('is-hidden');
                                        if(!$(this).closest('.internal-field-content.section').hasClass('is-hidden')){
                                            isFieldVisible = $(this).closest('.row').hasClass('is-hidden');
                                        }
                                    }else{
                                        isFieldVisible = $(this).closest('.row').hasClass('is-hidden');
                                    }
                                    if(is_include_non_visible_fields == "True" || ( is_include_non_visible_fields == "False" && !isFieldVisible)){
                                        if(currentFieldDigitGroupSeparator !=''){
                                            let regex = new RegExp('\\' + currentFieldDigitGroupSeparator, "g");
                                            value = value.replace(regex, "");
                                        }
                                        value = value.replace(",", ".");
                                        result = Number((parseFloat(result) + parseFloat(value)).toFixed(numberDecimal));
                                    }
                                }
                            }
                        }
                    });

                    $('.formBlock .rating-class-section').each(function (index1, el1) {

                        if ($(this).find('input[type="radio"]').length > 0) {
                            var field_id = $(this).find('input[type="radio"]').first().attr('name');
                            var positiontype = field_id.indexOf('[');
                            var value = $('input[name="' + field_id + '"]:checked').val();
                            if (positiontype > 0) {
                                field_id = field_id.substring(0, positiontype);
                                if (field_id == active) {
                                    if (value) {
                                        var isFieldVisible = true;
                                        if($(this).closest('.section', $(this).closest('form')).length > 0){
                                            isFieldVisible = $(this).closest('.internal-field-content.section').hasClass('is-hidden');
                                        }else{
                                            isFieldVisible = $(this).closest('.row').hasClass('is-hidden');
                                        }
                                        if(is_include_non_visible_fields == "True" || ( is_include_non_visible_fields == "False" && !isFieldVisible)){
                                            //result = parseInt(result) + parseInt(value);
                                            result = Number((parseFloat(result) + parseFloat(value)).toFixed(numberDecimal));
                                        }
                                    }
                                }
                            }
                        }

                    });

                    $('.formBlock .rating-class-section-scale').each(function (index1, el1) {

                        if ($(this).find('input[type="radio"]').length > 0) {
                            var field_id = $(this).find('input[type="radio"]').first().attr('name');
                            var positiontype = field_id.indexOf('[');
                            var value = $('input[name="' + field_id + '"]:checked').val();
                            if (positiontype > 0) {
                                field_id = field_id.substring(0, positiontype);
                                if (field_id == active) {
                                    if (value) {
                                        var isFieldVisible = true;
                                        if($(this).closest('.section', $(this).closest('form')).length > 0){
                                            isFieldVisible = $(this).closest('.internal-field-content.section').hasClass('is-hidden');
                                        }else{
                                            isFieldVisible = $(this).closest('.row').hasClass('is-hidden');
                                        }
                                        if(is_include_non_visible_fields == "True" || ( is_include_non_visible_fields == "False" && !isFieldVisible)){
                                            //result = parseInt(result) + parseInt(value);
                                            result = Number((parseFloat(result) + parseFloat(value)).toFixed(numberDecimal));
                                        }
                                    }
                                }
                            }
                        }

                    });
                });
                var value = parseFloat(result).toFixed(numberDecimal);
                let previousVal = $this.val();
                // The following line is to avoid an infitinve loop because the event is triggered programatically for the calculate field
                if ((previousVal == '' && value > 0) || (previousVal !== '' && previousVal !== value)) {
                    if (value > 0) {
                        let formattedNumber = '';
                        resultformatDecimal = value.replace(".", decimalSeparator);
                        if(isAutoNumeric === 'True'){
                            const options = {
                              digitGroupSeparator:digitGroupSeparator,
                              decimalCharacter:decimalSeparator,
                              decimalPlaces: numberDecimal
                            };
                            formattedNumber = AutoNumeric.format(value, options);
                        }else{
                            formattedNumber = resultformatDecimal;
                        }
                        $this.siblings('.result_calculate').html(formattedNumber);
                        $this.val(formattedNumber);
                        custom_change_action_for_calculate_field($this);
                    } else {
                        value = null;
                        $this.val('');
                        $this.siblings('.result_calculate').html('');
                        custom_change_action_for_calculate_field($this);
                    }
                }
                let is_maximum_value_of_another_field = $this.siblings('input.is_maximum_value_of_another_field').val();
                let is_minimum_value_of_another_field = $this.siblings('input.is_minimum_value_of_another_field').val();
                let field_maximum_value = $this.siblings('input.field_maximum_value').val();
                let field_minimum_value = $this.siblings('input.field_minimum_value').val();
                let maxValue = null;
                let minValue = null;
                if(is_maximum_value_of_another_field == 'True'){
                    maxValue = parseFloat($this.closest('form').find('input[name="'+field_maximum_value+'[value]"]').val());
                }else{
                    maxValue = parseFloat($this.attr('data-max-value'));
                }

                if(is_minimum_value_of_another_field == 'True'){
                    minValue = parseFloat($this.closest('form').find('input[name="'+field_minimum_value+'[value]"]').val());
                }else{
                    minValue = parseFloat($this.attr('data-min-value'));
                }
                if (idRequired == 'true' && (!isValidValue(value) || ( value == 0 && allItemsAreEmpty))) {
                    var fieldIdentifier = 'label[id="' + name + '-error"]';
                    var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + window.translation.field_required + '</label>';
                    if ($this.closest('.fields-section').find(fieldIdentifier).length > 0) {
                        $this.closest('.fields-section').find(fieldIdentifier).replaceWith(label);
                    } else {
                        $this.closest(".fields-section").append(label);
                    }
                    hasError = true;
                }else  if ((isValidValue(maxValue) || isValidValue(minValue)) && isValidValue(value)) {
                    if (isValidValue(minValue) && value < minValue) {
                        const message = translation.form_number_field_min_value.replaceAll('{0}', minValue);
                        showError($this, name, message);
                        hasError = true;
                    }
                    if (isValidValue(maxValue) && value > maxValue) {
                        const message = translation.form_number_field_max_value.replaceAll('{0}', maxValue);
                        showError($this, name, message);
                        hasError = true;
                    }
                }
                if (!hasError) {
                    hideError($this, name);
                }
            });
        }
    });
}

function isValidValue(value) {
    return value !== undefined && value !== null && value !== '' && !isNaN(value);
}

function showError($element, name, message) {
    const label = `<label id="${name}-error" class="error" for="${name}" style="display:block; margin-top: 2px;">${message}</label>`;
    const $fieldSection = $element.closest('.fields-section');
    const $existingError = $fieldSection.find(`label[id="${name}-error"]`);
    if ($existingError.length) {
        $existingError.replaceWith(label);
    } else {
        $fieldSection.append(label);
    }
}

function hideError($element, name) {
    $element.closest('.fields-section').find(`label[id="${name}-error"]`).hide();
}

function PopulateFieldSelectLisviewSalesforce(currentform) {
    const operators = [
        { text: "is equal to", operator: "0", func: (a, b) => a === b, symbol: "=" },
        { text: "not equal to", operator: "7", func: (a, b) => a !== b, symbol: "!=" },
        { text: "contains", operator: "1", func: (a, b) => a.includes(b), symbol: "LIKE" },
        { text: "greater than", operator: "2", func: (a, b) => a > b, symbol: ">" },
        { text: "greater than or equal to", operator: "3", func: (a, b) => a >= b, symbol: ">=" },
        { text: "less than", operator: "4", func: (a, b) => a < b, symbol: "<" },
        { text: "less than or equal to", operator: "5", func: (a, b) => a <= b, symbol: "<=" },
        { text: "includes", operator: "6", func: (a, b) => a.includes(b), symbol: "INCLUDES" },
        { text: "does not include", operator: "8", func: (a, b) => !a.includes(b), symbol: "EXCLUDES" }
    ];
    $(document).ready(function () {
        $(currentform).find('select.select-from-listview[type="select"]').each(function() {
            var currentSelect = $(this);
            var filters = $(this).closest('.input-group-select').siblings('input.listview_filter_rules').val();
            if(filters != '' && filters != undefined){
                var obj = typeof filters === "string" ? JSON.parse(filters) : filters;
                if(obj != null){
                    const filteredData = obj.filter(item => String(item.comparisonValue).includes('f:'));
                    if (filteredData.length > 0) {
                        filteredData.forEach(item => {
                            const fieldId = item.comparisonValue.split(':')[1];
                            const inputElement = $(currentform).find(`[name="${fieldId}[value]"]`);
                            if (inputElement.length > 0) {
                                item.comparisonValue = inputElement.val();
                            }
                        });
                        $(this).find('option').each(function() {
                            if($(this).val() === "") return true;
                            var currentOption = $(this);
                            var showOption = true;
                            filteredData.forEach(item => {
                                var dataFieldName = item.field;
                                var comparisonValue = item.comparisonValue;
                                var optionAttributeValue = $(currentOption).attr('data-' + dataFieldName);
                                var operator = item.operator;
                                const operatorObj = operators.find(op => op.operator === String(operator));
                                if (operatorObj) {
                                    const matches = operatorObj.func(optionAttributeValue, comparisonValue);
                                    if (!matches) {
                                        showOption = false;
                                    }
                                }
                            });
                            if (showOption) {
                                $(currentOption).show();
                            } else {
                                $(currentOption).hide();
                                if($(currentSelect).val() == $(currentOption).val()){
                                    $(currentSelect).val('');
                                }
                            }
                        });
                    }
                }
            }
        });

        $(currentform).find('.input-group-radiobutton.data-from-lisview').each(function(index, el) {
            var fieldContainner = $(this);
            const checkedValue = $(fieldContainner).find('.inline-items-section input[type="radio"]:checked').val();
            var filters = $(this).find('input.listview_filter_rules').val();
            if(filters != '' && filters != undefined){
                var obj = typeof filters === "string" ? JSON.parse(filters) : filters;
                if(obj != null){
                    const filteredData = obj.filter(item => String(item.comparisonValue).includes('f:'));
                    if (filteredData.length > 0) {
                        filteredData.forEach(item => {
                            const fieldId = item.comparisonValue.split(':')[1];
                            const inputElement = $(currentform).find(`[name="${fieldId}[value]"]`);
                            if (inputElement.length > 0) {
                                item.comparisonValue = inputElement.val();
                            }
                        });
                        if($(fieldContainner).find('.inline-items-section').length > 0){
                            if($(fieldContainner).find('.inline-items-section .radio-input-inline').length > 0){
                                $(fieldContainner).find('.inline-items-section .radio-input-inline').each(function(index, el) {
                                    var showOption = true;
                                    var currentField = $(this).find('input');
                                    filteredData.forEach(item => {
                                        var dataFieldName = item.field;
                                        var comparisonValue = item.comparisonValue;
                                        var optionAttributeValue = $(currentField).attr('data-' + dataFieldName);
                                        var operator = item.operator;
                                        const operatorObj = operators.find(op => op.operator === String(operator));
                                        if (operatorObj) {
                                            const matches = operatorObj.func(optionAttributeValue, comparisonValue);
                                            if (!matches) {
                                                showOption = false;
                                            }
                                        }
                                    });
                                    if (showOption) {
                                        $(currentField).closest('.radio-input-inline').show();
                                    } else {
                                        $(currentField).closest('.radio-input-inline').hide();
                                        if(checkedValue == $(currentField).val()){
                                            $(currentField).prop('checked', false);
                                        }
                                    }
                                });
                            }
                        }else{
                            if($(fieldContainner).find('.row').length > 0){
                                $(fieldContainner).find('.row').each(function(index, el) {
                                    var showOption = true;
                                    var currentField = $(this).find('input');
                                    filteredData.forEach(item => {
                                        var dataFieldName = item.field;
                                        var comparisonValue = item.comparisonValue;
                                        var optionAttributeValue = $(currentField).attr('data-' + dataFieldName);
                                        var operator = item.operator;
                                        const operatorObj = operators.find(op => op.operator === String(operator));
                                        if (operatorObj) {
                                            const matches = operatorObj.func(optionAttributeValue, comparisonValue);
                                            if (!matches) {
                                                showOption = false;
                                            }
                                        }
                                    });
                                    if (showOption) {
                                        $(currentField).closest('.row').show();
                                    } else {
                                        $(currentField).closest('.row').hide();
                                        if(checkedValue == $(currentField).val()){
                                            $(currentField).prop('checked', false);
                                        }
                                    }
                                });
                            }
                        }
                    }
                }
            }
        });

        $(currentform).find('.rating-class-section-scale.data-from-lisview').each(function(index, el) {
            var fieldContainner = $(this);
            const checkedValue = $(fieldContainner).find('input[type="radio"]:checked').val();
            var filters = $(this).closest('.fields-section').find('input.listview_filter_rules').val();
            if(filters != '' && filters != undefined){
                var obj = typeof filters === "string" ? JSON.parse(filters) : filters;
                if(obj != null){
                    const filteredData = obj.filter(item => String(item.comparisonValue).includes('f:'));
                    if (filteredData.length > 0) {
                        filteredData.forEach(item => {
                            const fieldId = item.comparisonValue.split(':')[1];
                            const inputElement = $(currentform).find(`[name="${fieldId}[value]"]`);
                            if (inputElement.length > 0) {
                                item.comparisonValue = inputElement.val();
                            }
                        });
                        if($(fieldContainner).find('input').length > 0){
                            var totalItems = 0;
                            $(fieldContainner).find('input').each(function(index, el) {
                                var showOption = true;
                                var currentField = $(this);
                                var idField = $(currentField).attr('id');
                                filteredData.forEach(item => {
                                    var dataFieldName = item.field;
                                    var comparisonValue = item.comparisonValue;
                                    var optionAttributeValue = $(currentField).attr('data-' + dataFieldName);
                                    var operator = item.operator;
                                    const operatorObj = operators.find(op => op.operator === String(operator));
                                    if (operatorObj) {
                                        const matches = operatorObj.func(optionAttributeValue, comparisonValue);
                                        if (!matches) {
                                            showOption = false;
                                        }
                                    }
                                });
                                if (showOption) {
                                    $(currentField).siblings('label[for="'+idField+'"]').addClass('activeItem').css('display', 'flex');
                                    $(currentField).siblings('label[for="'+idField+'"]').removeClass('hidden');
                                    //$(currentField).show();
                                    totalItems++;
                                } else {
                                    //$(currentField).hide();
                                    $(currentField).siblings('label[for="'+idField+'"]').removeClass('activeItem').hide();
                                    $(currentField).siblings('label[for="'+idField+'"]').addClass('hidden');
                                    if(checkedValue == $(currentField).val()){
                                        $(currentField).prop('checked', false);
                                    }
                                }
                            });
                            var itemWitch = 100 / totalItems;
                            $(fieldContainner).find('label.activeItem').css('width', itemWitch+'%');
                            if(totalItems == 0){
                                $(fieldContainner).addClass('inactive');
                            }else{
                                $(fieldContainner).removeClass('inactive');
                            }
                        }
                    }
                }
            }
            
        });

        $(currentform).find('select.select-from-data-from-soql[type="select"]').each(function() {
            var currentSelect = $(this);
            var filters = $(this).closest('.input-group-select').siblings('input.soql_filter_rules').val();
            if(filters != '' && filters != undefined){
                const parsedConditions = getdatafilterssoql(filters);
                if(parsedConditions != null){
                    parsedConditions.forEach(item => {
                        const fieldId = item.value.split(':')[1];
                        const inputElement = $(currentform).find(`[name="${fieldId}[value]"]`);
                        if (inputElement.length > 0) {
                            item.value = inputElement.val();
                        }
                    });
                    $(this).find('option').each(function() {
                        if($(this).val() === "") return true;
                        var currentOption = $(this);
                        var showOption = true;
                        parsedConditions.forEach(item => {
                            var dataFieldName = item.field;
                            var comparisonValue = item.value;
                            var optionAttributeValue = $(currentOption).attr('data-' + dataFieldName);
                            var operator = item.operator;
                            const operatorObj = operators.find(op => op.symbol === String(operator));
                            if (operatorObj) {
                                const matches = operatorObj.func(optionAttributeValue, comparisonValue);
                                if (!matches) {
                                    showOption = false;
                                }
                            }
                        });
                        if (showOption) {
                            $(currentOption).show();
                        } else {
                            $(currentOption).hide();
                            if($(currentSelect).val() == $(currentOption).val()){
                                $(currentSelect).val('');
                            }
                        }
                    });
                }
            }
        });

        $(currentform).find('.input-group-radiobutton.data-from-soql').each(function(index, el){
            var fieldContainner = $(this);
            const checkedValue = $(fieldContainner).find('.inline-items-section input[type="radio"]:checked').val();
            var filters = $(this).find('input.soql_filter_rules').val();
            if(filters != '' && filters != undefined){
                const parsedConditions = getdatafilterssoql(filters);
                if(parsedConditions != null){
                    parsedConditions.forEach(item => {
                        const fieldId = item.value.split(':')[1];
                        const inputElement = $(currentform).find(`[name="${fieldId}[value]"]`);
                        if (inputElement.length > 0) {
                            item.value = inputElement.val();
                        }
                    });

                    if($(fieldContainner).find('.inline-items-section').length > 0){
                        if($(fieldContainner).find('.inline-items-section .radio-input-inline').length > 0){
                            $(fieldContainner).find('.inline-items-section .radio-input-inline').each(function(index, el) {
                                var showOption = true;
                                var currentField = $(this).find('input');
                                parsedConditions.forEach(item => {
                                    var dataFieldName = item.field;
                                    var comparisonValue = item.value;
                                    var optionAttributeValue = $(currentField).attr('data-' + dataFieldName);
                                    var operator = item.operator;
                                    const operatorObj = operators.find(op => op.symbol === String(operator));
                                    if (operatorObj) {
                                        const matches = operatorObj.func(optionAttributeValue, comparisonValue);
                                        if (!matches) {
                                            showOption = false;
                                        }
                                    }
                                });
                                if (showOption) {
                                    $(currentField).closest('.radio-input-inline').show();
                                } else {
                                    $(currentField).closest('.radio-input-inline').hide();
                                    if(checkedValue == $(currentField).val()){
                                        $(currentField).prop('checked', false);
                                    }
                                }
                            });
                        }
                    }else{
                        if($(fieldContainner).find('.row').length > 0){
                            $(fieldContainner).find('.row').each(function(index, el) {
                                var showOption = true;
                                var currentField = $(this).find('input');
                                parsedConditions.forEach(item => {
                                    var dataFieldName = item.field;
                                    var comparisonValue = item.value;
                                    var optionAttributeValue = $(currentField).attr('data-' + dataFieldName);
                                    var operator = item.operator;
                                    const operatorObj = operators.find(op => op.symbol === String(operator));
                                    if (operatorObj) {
                                        const matches = operatorObj.func(optionAttributeValue, comparisonValue);
                                        if (!matches) {
                                            showOption = false;
                                        }
                                    }
                                });
                                if (showOption) {
                                    $(currentField).closest('.row').show();
                                } else {
                                    $(currentField).closest('.row').hide();
                                    if(checkedValue == $(currentField).val()){
                                        $(currentField).prop('checked', false);
                                    }
                                }
                            });
                        }
                    }

                }
            }
        });

        $(currentform).find('.rating-class-section-scale.data-from-soql').each(function(index, el) {
            var fieldContainner = $(this);
            const checkedValue = $(fieldContainner).find('input[type="radio"]:checked').val();

            var filters = $(this).closest('.fields-section').find('input.soql_filter_rules').val();
            if(filters != '' && filters != undefined){
                const parsedConditions = getdatafilterssoql(filters);
                if(parsedConditions != null){
                    parsedConditions.forEach(item => {
                        const fieldId = item.value.split(':')[1];
                        const inputElement = $(currentform).find(`[name="${fieldId}[value]"]`);
                        if (inputElement.length > 0) {
                            item.value = inputElement.val();
                        }
                    });

                    if($(fieldContainner).find('input').length > 0){
                        var totalItems = 0;
                        $(fieldContainner).find('input').each(function(index, el) {
                            var showOption = true;
                            var currentField = $(this);
                            var idField = $(currentField).attr('id');
                            parsedConditions.forEach(item => {
                                var dataFieldName = item.field;
                                var comparisonValue = item.value;
                                var optionAttributeValue = $(currentField).attr('data-' + dataFieldName);
                                var operator = item.operator;
                                const operatorObj = operators.find(op => op.symbol === String(operator));
                                if (operatorObj) {
                                    const matches = operatorObj.func(optionAttributeValue, comparisonValue);
                                    if (!matches) {
                                        showOption = false;
                                    }
                                }
                            });
                            if (showOption) {
                                $(currentField).siblings('label[for="'+idField+'"]').addClass('activeItem').css('display', 'flex');
                                $(currentField).siblings('label[for="'+idField+'"]').removeClass('hidden');
                                totalItems++;
                            } else {
                                $(currentField).siblings('label[for="'+idField+'"]').removeClass('activeItem').hide();
                                $(currentField).siblings('label[for="'+idField+'"]').addClass('hidden');
                                if(checkedValue == $(currentField).val()){
                                    $(currentField).prop('checked', false);
                                }
                            }
                        });
                        var itemWitch = 100 / totalItems;
                        $(fieldContainner).find('label.activeItem').css('width', itemWitch+'%');
                        if(totalItems == 0){
                            $(fieldContainner).addClass('inactive');
                        }else{
                            $(fieldContainner).removeClass('inactive');
                        }
                    }

                }
            }

        });

    });
}

function getdatafilterssoql(filters){
    var obj = typeof filters === "string" ? JSON.parse(filters) : filters;
    const regex = /^(\w+__c)\s*(=|!=|>|<|>=|<=)\s*'([^']+)'$/;
    const parseConditions = (conditions) => {
        return conditions.map(condition => {
            const match = condition.match(regex);
            if (match) {
                const [, field, operator, value] = match;
                return { field, operator, value };
            }
            return null;
        }).filter(item => item !== null);
    };
    const parsedConditions = parseConditions(obj);
    return parsedConditions;
}

function replaceTokens(url, formForm) {
    return url.replace(/\{f:(\d+)\}/g, (match, fieldId) => {
        const fieldData = formForm[fieldId];
        if (!fieldData || fieldData.value === undefined) {
            return match;
        }
        let value = fieldData.value;
        if (fieldData.type === "datetime") {
            value = String(value).replace(/\//g, '-');
        }
        return value;
    });
}
function containsTokens(url) {
    return /\{f:\d+\}/.test(url);
}
function submit_form_inner(self, formForm, hasPaymentComponent, isFromVerificationCodePage, oneStepData) {
    if (isFromVerificationCodePage === undefined)
        isFromVerificationCodePage = false;

    var jsonData = [];

    var isComplianceForm;
    var formId;
    var blockFormId;
    var disableConfirmationMessage;
    var typeMessageConfirmation;
    var toastMessage
    if (isFromVerificationCodePage === true) {
        isComplianceForm = false;
        formId = formForm["formId"];
        // var blockFormId = self.closest('form').parents('.formBlock').data('form-id');
        disableConfirmationMessage = formForm["disable_confirmation_message"] == "True";
        typeMessageConfirmation = formForm["type_confirmation_success"];
        toastMessage = formForm["toast_message"];
    } else {
        isComplianceForm = (self.closest('form').hasClass('isComplianceForm') === true) ? true : false;
        formId = self.closest('form').attr("id");
        blockFormId = self.closest('form').parents('.formBlock').data('form-id');
        disableConfirmationMessage = self.closest('.formBlock').find('input[name="disable_confirmation_message"]').val() == "True";
        typeMessageConfirmation = self.closest('.formBlock').find('input[name="type_confirmation_success"]').val();
        toastMessage = self.closest('.formBlock').find('input[name="toast_message"]').val();
        self.closest('.formBlock').find('input[name="toast_message"]').removeAttr('disabled');
        self.closest('.formBlock').find('input[name="toast_message"]').attr('disabled', 'disabled');
    }

    var allow_submitted_data = self.closest('.formBlock').find('input[name="allow_submitted_data"]').val();
    var form_title = self.closest('.formBlock').find('.title-cms-block-form').text();
    var haveRedirection = formForm["have_redirection"];
    var partialRedirect = self.closest('.formBlock').find('input[name="partial_reload"]').val() == 'True';
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    var url_redirect = formForm["redirect_url"];
    var form_token = formForm["row_token"];
    var customRedirect = getRedirectByRules(blockFormId);
    if (customRedirect != null) {
        url_redirect = customRedirect;
    }
    
    if (containsTokens(url_redirect)) {
        url_redirect = replaceTokens(url_redirect, formForm);
    }

    formForm = validateFormBeforeSend(formForm);
    var valuesToSend = JSON.stringify(formForm);
    var requestVerificationToken = formForm["__RequestVerificationToken"] !== null ? formForm["__RequestVerificationToken"] : "";
    if (validate_honeypot_security(formId)) {
        $.ajax({
            method: "POST",
            url: urlSite + "/Admin/SubmitForm",
            data: {
                jsonData: valuesToSend,
                "__RequestVerificationToken": requestVerificationToken
            },
            beforeSend: function () {
                if (!self.closest('.formBlock').find('.submit-button').hasClass('disabled')) {
                    self.closest('.formBlock').find('.submit-button').addClass('disabled');
                }
                self.closest('.formBlock').find('.spinner').show();
                self.closest('.formBlock').find('.processing_screen').show();
            }
        }).done(function (data) {
            jsonData = JSON.parse(data);
            if (jsonData.status === 'error') {
                var textToDisplay = jsonData.results;
                if (jsonData.errorDetail != undefined && jsonData.errorDetail != '') {
                    textToDisplay = textToDisplay + '<br/> <br/>' + "<div class='alert-message-detail-form'><b>" + window.translation.error_detail + ":</b><br/><br/>" + jsonData.errorDetail + "</div>";
                }

                Swal.fire({
                    title: '',
                    icon: 'error',
                    html: textToDisplay,
                    confirmButtonText: 'Ok',
                    closeOnConfirm: true

                }).then(function (result) {
                    if (self.closest('.formBlock').find('.submit-button').hasClass('disabled')) {
                        self.closest('.formBlock').find('.submit-button').removeClass('disabled');
                    }
                    self.closest('.formBlock').find('.submit-button').removeAttr('disabled');
                    self.closest('.formBlock').find('.spinner').hide();
                    self.closest('.formBlock').find('.processing_screen').hide();

                    if (isFromVerificationCodePage == true) {
                        let initialForm = self.parents('form#verification-code-page');
                        if (initialForm !== undefined && initialForm.length > 0) {
                            let initialPage = initialForm.find('.cancel-verification-code-section a.cancel-verification-code').prop('href');
                            if (initialPage !== null && initialPage !== undefined) {
                                window.location.href = initialPage;
                            }
                        }
                    }

                });
                //renew form
                if (jsonData.renew != undefined && jsonData.renew == true && typeof regenerateKey == 'function') {
                    regenerateKey('form#' + formId, "forms");
                }
                if ($('.spinner-' + formId).length > 0) {
                    $('.spinner-' + formId).remove();
                    $('.disabled-' + formId).removeAttr('disabled');
                }
                return false;
            }
            else {
                var submittedToPrinted = (jsonData.submitedToPrint !== undefined && jsonData.submitedToPrint !== null ? jsonData.submitedToPrint : null);

                if (submittedToPrinted !== null) {
                    self.closest('.formBlock').find('input[name="submitToPrintData"]').val(submittedToPrinted);
                }

                var successMessage = (isComplianceForm) ? window.translation.submission_has_been_received : window.translation.submit_successfull;
                if (toastMessage !== null && toastMessage !== undefined && toastMessage !== '') successMessage = toastMessage;
                if (formForm.save_complete_later) successMessage = window.translation.data_saved;
                if (jsonData.SimultanueosUpdate)
                {
                    successMessage = window.translation.records_saved;
                }
                //Validate if form has redirect and avoid display sucess message
                if (hasPaymentComponent === false) {

                    //onestepdata
                    if ($('body').hasClass('hoc-volunteer-system') &&
                        oneStepData !== null &&
                        oneStepData !== undefined) {
                        var data = JSON.parse(oneStepData);
                        if (data.occSelectedBeforeLogin !== null && data.occSelectedBeforeLogin !== undefined && data.occSelectedBeforeLogin !== '') {
                            var urlToSend = urlSite + "/opportunity/" + data.occSelectedBeforeLogin;
                            if (data.signUpBeforeLoginWTeam !== null && data.signUpBeforeLoginWTeam !== undefined && data.signUpBeforeLoginWTeam == "true") {
                                urlToSend += "?OneStepSignUpWTeam=true";
                            } else {
                                urlToSend += "?OneStepSignUp=true";
                            }
                            window.location.href = urlToSend;
                            return;
                        }

                    }


                    if (jsonData.renew != undefined && jsonData.renew == true) {
                        regenerateKey('form#' + formId, "forms");
                    }

                    var urlFinal = '';
                    if (haveRedirection == 'True' || haveRedirection == 'true') {
                        if (url_redirect != null && url_redirect !== '') {
                            var stringReplace = "upsertedrecordid";

                            var objectId = jsonData.recordId;
                            var relatedObjectId = jsonData.relatedObjectIds;
                            //validate url redirect use upsertedrecordid
                            if (objectId != null && objectId != "" && url_redirect.indexOf(stringReplace) !== -1) {
                                url_redirect = url_redirect.replace(stringReplace, objectId);
                            }

                            if (relatedObjectId != null && url_redirect.indexOf("{ro:")) {

                                var re = /{(ro):[a-zA-Z]([a-zA-Z()0-9._])*}/g;
                                var s = url_redirect;
                                var m;

                                do {
                                    m = re.exec(s);
                                    if (m) {
                                        console.log('m:' + m[0])
                                        var replaceText = m[0].replaceAll('{ro:', '').replace('}', '');
                                        if (relatedObjectId[replaceText] !== undefined) {
                                            url_redirect = url_redirect.replaceAll(m[0], relatedObjectId[replaceText]);
                                        }
                                    }
                                } while (m);
                            }



                            var saveDataToStorage = self.closest('.formBlock').find('input[name="save_response_storage"]').val();
                            if (saveDataToStorage === true || saveDataToStorage === 'true') {
                                var token = hocvolunteer_save_data_in_local_storage(formForm);
                                if (token !== null && token !== undefined && token !== '') {
                                    if (url_redirect.indexOf('?') != -1) {
                                        url_redirect += "&tokennextpage=" + token;
                                    }
                                    else {
                                        url_redirect += "?tokennextpage=" + token;
                                    }
                                }
                            }
                            urlFinal = urlSite + url_redirect;
                        }
                    }

                    if (typeMessageConfirmation === 3 || typeMessageConfirmation === '3') {
                        if (urlFinal != null && urlFinal !== '') {
                            form_redirect_reload(self, false, partialRedirect, urlFinal, jsonData.recordId);
                        } else if (url_redirect !== null && url_redirect !== '') {
                            form_redirect_reload(self, false, partialRedirect, urlSite + url_redirect, jsonData.recordId);
                        }
                        return false;
                    }
                    else if (typeMessageConfirmation === 2 || typeMessageConfirmation === '2') {
                        $.growl.notice({ title: window.translation.success, message: successMessage, duration: 10000 });
                        setTimeout(function () {
                            if (haveRedirection == 'True' || haveRedirection == 'true') {
                                if (urlFinal !== null && urlFinal !== '') {
                                    form_redirect_reload(self, false, partialRedirect, urlFinal, jsonData.recordId);
                                } else {
                                    form_redirect_reload(self, true, partialRedirect, null, jsonData.recordId);
                                }
                            } else {
                                if (formForm.isuserregistrationform !== null && formForm.isuserregistrationform !== undefined && formForm.isuserregistrationform === "True") {
                                    form_redirect_reload(self, false, false, "/success-registration");
                                } else {
                                    form_redirect_reload(self, true, partialRedirect, null, jsonData.recordId);
                                }
                            }
                        }, 5000);
                        return false;
                    } else if (typeMessageConfirmation === 1 || typeMessageConfirmation === '1') {
                        if (allow_submitted_data == 'True') {
                            form_token = form_token + '?title=' + form_title;
                            successMessage += `<div><button class="swal2-confirm swal2-styled" onclick="onBtnClicked('submitteddata','` + form_title + `','` + form_token + `','` + self.closest('.formBlock').find('form').attr('id') + `')">See and print submitted data</button></div>`;
                        }
                        Swal.fire({
                            title: window.translation.success,
                            icon: "success",
                            confirmButtonText: 'Ok',

                            closeOnConfirm: true,
                            html: successMessage
                        }).then(function (result) {
                            if (haveRedirection === 'true' || haveRedirection === 'True') {
                                if (urlFinal !== null && urlFinal !== '') {
                                    form_redirect_reload(self, false, partialRedirect, urlFinal, jsonData.recordId);
                                } else {
                                    form_redirect_reload(self, true, partialRedirect, null, jsonData.recordId);
                                }
                            } else {
                                if (formForm.isuserregistrationform !== null && formForm.isuserregistrationform !== undefined && formForm.isuserregistrationform === "True") {
                                    form_redirect_reload(self, false, false, "/success-registration", jsonData.recordId);
                                }
                                else {
                                    form_redirect_reload(self, true, partialRedirect, null, jsonData.recordId);
                                }

                            }


                        });
                        return false;
                    }

                    if (haveRedirection == "True" || haveRedirection == "true") {
                        if (url_redirect != null && url_redirect != "") {
                            form_redirect_reload(self, false, partialRedirect, url_redirect, jsonData.recordId);
                        } else {
                            form_redirect_reload(self, true, partialRedirect, null, jsonData.recordId);
                        }
                    }
                    else {
                        self.closest('.formBlock').find('.spinner').show();
                        self.closest('.formBlock').find('.processing_screen').show();
                        form_redirect_reload(self, true, partialRedirect, null, jsonData.recordId);
                        /*if (disableConfirmationMessage == false) {
                            Swal.fire({
                                title: window.translation.success,
                                text: successMessage,
                                icon: "success",
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true

                            }).then(function (result) {
                                window.location.reload(true);

                            });


                        } else {
                            window.location.reload(true);
                        }*/

                    }

                } else {
                    var paymentComponent = self.closest('.formBlock').find('.payment-component');
                    if (paymentComponent !== null && paymentComponent !== undefined) {
                        var redirectURL = paymentComponent.find('input[name="urlToProcess"]').val();
                        if (redirectURL !== null && redirectURL !== undefined && redirectURL.trim() !== "") {
                            var form = self.closest('.formBlock').find('form');
                            if (haveRedirection == "True" || haveRedirection == "true") {
                                if (url_redirect != null && url_redirect != "") {
                                    var stringReplace = "upsertedrecordid";
                                    var objectId = jsonData.recordId;
                                    //validate url redirect use upsertedrecordid
                                    if (objectId != null && objectId != "" && url_redirect.indexOf(stringReplace) !== -1) {
                                        url_redirect = url_redirect.replace(stringReplace, objectId);
                                    }
                                    if (objectId != null && objectId != undefined && objectId != "") {
                                        form.find('input[name="salesforceRecordId"]').val(objectId);
                                    }
                                    var finalUrl = (url_redirect.substring(0, 4) == 'http') ? url_redirect : urlSite + url_redirect;
                                    form.find('input[name="redirectToAfterProcess"]').val(finalUrl);
                                }
                            }
                            if (jsonData.recordId && jsonData.recordId != null && jsonData.recordId != undefined) {
                                form.find('input[name="salesforceRecordId"]').val(jsonData.recordId);
                            }
                            form.attr('action', redirectURL);
                            var isrecurrentbillingform = $(form).find('input[name="isrecurrentbillingform"]').prop('checked');
                            if (isrecurrentbillingform) {
                                $(form).find('input[name="isrecurrentbillingform"]').val(true);
                            }
                            if (paymentComponent.hasClass('stripe-donation')) {
                                var url = form.attr('action');
                                var data = form.serialize();
                                $.ajax({
                                    method: "POST",
                                    url: url,
                                    data: data,
                                    beforeSend: function () {
                                        //ativate loading
                                    }
                                }).done(function (data) {
                                    var stripe = Stripe(data.publishable);
                                    return stripe.redirectToCheckout({ sessionId: data.id });
                                });
                            } else if (paymentComponent.hasClass('authorizenet-donation')) {

                                var url = form.attr('action');
                                var data = form.serialize();
                                $.ajax({
                                    method: "POST",
                                    url: url,
                                    data: data,
                                    beforeSend: function () {
                                        //ativate loading
                                    }
                                }).done(function (data) {
                                    var form = document.createElement("form");
                                    form.method = 'post';
                                    form.action = data.action;
                                    var input = document.createElement('input');
                                    input.type = "hidden";
                                    input.name = "token";
                                    input.value = data.token;
                                    form.appendChild(input);
                                    $('body').append(form);
                                    form.submit();
                                });

                            } else {
                                form.submit();
                            }
                        } else {
                            Swal.fire({
                                title: '',
                                icon: 'error',
                                text: "Error to process the donation",
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            });

                            self.closest('.formBlock').find('.submit-button').removeClass('disabled');
                            self.closest('.formBlock').find('.submit-button').removeAttr('disabled');
                            self.closest('.formBlock').find('.processing_screen').hide();
                            self.closest('.formBlock').find('.spinner').hide();
                        }

                    }
                }

            }

            return false;
        });
    } else {
        self.closest('.formBlock').find('.submit-button').removeClass('disabled');
        self.closest('.formBlock').find('.submit-button').removeAttr('disabled');
        self.closest('.formBlock').find('.processing_screen').hide();
        self.closest('.formBlock').find('.spinner').hide();
    }
}

function clear_forms(selfForm) {
    var selector = 'input[type="text"], input[type="checkbox"], input[type="radio"], input[type="number"], input[type="tel"], input[type="file"], select, textarea';
    $(selfForm).find(selector).each(function () {
        var dataType = $(this).attr('data-type');
        var inputType = $(this).attr('type');
        var idData = $(this).attr('id');
        var classItem = $(this).attr('class');
        var nameData = $(this).attr('name');
        var includeLabel = $(this).parent().find('.input-group-label').length > 0;

        if ((dataType || classItem && classItem.indexOf('date-picker-form-builder') != -1 || includeLabel) && nameData.indexOf('[value]') != -1) {
            switch (inputType) {
                case 'textarea':
                    $('#' + idData).text('');
                    break;
                case 'checkbox':
                    $('input[name="' + nameData + '"]').prop('checked', false);
                    break;
                case 'select':
                    if (dataType == 'multiselect') {
                        $(this).val('');
                        $(this).trigger('change');
                        $(this).multiselect('reload');
                    }
                    else {
                        $(this).val('');
                    }
                    break;
                case 'radio':
                    $('input[name="' + nameData + '"]').prop('checked', false);
                    break;
                default:
                    if (inputType == 'file') {
                        if ($(this).parent().find('.file-upload-name').length > 0) {
                            $(this).parent().find('.file-upload-name').text('');
                        }
                        else if ($(this).parents().find('.related-files-container').length > 0) {
                            if ($(this).parents().find('.related-files-container').first().find('ul.related-files-list li').length > 0) {
                                $(this).parents().find('.related-files-container').first().find('ul.related-files-list li').remove();
                            }
                        }
                    }
                    if (!dataType || classItem && classItem.indexOf('date-picker-form-builder') != -1 || includeLabel)
                        $('input[name="' + nameData + '"]').val('');
                    else
                        $(this).val('');
                    break;
            }
        }

    });
}

function form_redirect_reload(self, isReload, ajaxReload, urlToRedirect, recordId) {
    var formBlock = self.closest('.formBlock');
    var formId = formBlock.data('form-id');
    if ($('#form-user-modal-' + formId).length > 0) {
        
        var modalForm =  formBlock.parents('.form-user-modal').first();
        if (!modalForm.hasClass('hidden-autosubmit-form')) {
            closeCustomForm(formId, 'form-user-modal-' + formId, recordId);
        }
        else {
            $('.spinner-' + formId).remove();
            $('.disabled-' + formId).removeAttr('disabled');
        }
    }


    if (ajaxReload) {
        clear_forms(self.closest('.formBlock'));
        var listingToReload = self.closest('.formBlock').find('input[name="listing_to_reload"]').val();
        
        form_load_values(formId);

        var listingIds = listingToReload ? listingToReload.split(',') : [];
        listingIds.forEach(function (item) {
            if ($('input[name="listingcmsid"][value="' + item + '"]').length > 0) {
                listingcmsblock_load_records_sfview(undefined, item, undefined, true);
            }
        });

        if ($('#form-user-modal-' + formId).find('.submit-button').length > 0) {
            $('#form-user-modal-' + formId).find('.submit-button').removeClass('disabled');
            $('#form-user-modal-' + formId).find('.submit-button').removeAttr('disabled');
        }
        if ($('#form-user-modal-' + formId).find('.processing_screen').length > 0) {
            $('#form-user-modal-' + formId).find('.processing_screen').hide();
        }
        if ($('#form-user-modal-' + formId).find('.spinner').length > 0) {
            $('#form-user-modal-' + formId).find('.spinner').hide();
        }
        if (self.closest('.formBlock').find('.submit-button').length > 0) {
            self.closest('.formBlock').find('.submit-button').removeClass('disabled');
            self.closest('.formBlock').find('.submit-button').removeAttr('disabled');
        }
        if (self.closest('.formBlock').find('.processing_screen').length > 0) {
            self.closest('.formBlock').find('.processing_screen').hide();
        }
        if (self.closest('.formBlock').find('.spinner').length > 0) {
            self.closest('.formBlock').find('.spinner').hide();
        }

    }
    else if (!isReload && urlToRedirect) {
        window.location.href = urlToRedirect;
    }
    else {
        window.location.reload(true);
    }
}

function openCustomForm(formId, autoSubmit) {
    
    var self = $('.formBlock[data-form-id="' + formId + '"]');

    if ($(self).find('select[data-type="multiselect"]').length > 0) {
        HandleProcessingScreenFormBlock('show', false, $('#form-custom-' + formId), self);
        setTimeout(function () {

            $(self).find('select').each(function () {
                var dataType = $(this).attr('data-type');
                if (dataType == 'multiselect') {
                    $(this).multiselect();

                }
            });
            if ($('#form-user-modal-' + formId).find('.spinner').length > 0) {
                $('#form-user-modal-' + formId).find('.spinner').hide();
            }
        }, 500);
        HandleProcessingScreenFormBlock('false', false, $('#form-custom-' + formId), self);
    }

    if ($(self).find('input[type="file"]').length > 0) {
        $(self).find('input[type="file"]').each(function () {
            if ($(this).parents().find('.related-files-container').length > 0) {
                if ($(this).parents().find('.related-files-container').first().find('ul.related-files-list li').length > 0) {
                    $(this).parents().find('.related-files-container').first().find('ul.related-files-list li').remove();
                }
            }

        });
        init_multi_file_form_builder();
    }

    if ($(self).find('select.select-from-listview').length > 0) {
        $(self).find('select.select-from-listview').each(function () {
            var idField = $(this).attr('id');
            var fieldSelect = $(this);
            var parameterUrl = $(self).find('input[name="custom-url-received"]').val();
            idField = idField.replaceAll('[value]', '');
            reloadSelectWithSFView(idField, parameterUrl, fieldSelect, null, formId, autoSubmit);
        });
    }


    if (self.find('input[type="file"].simple-file').length > 0) {
            self.find('input[type="file"].simple-file').each(function () {
                var fieldSection = $(this).parents('.fields-section').first();
                $(this).val('');
                var inputName = $(this).attr('name');
                fieldSection.find('span.file-upload-name').html('');
                fieldSection.find('.file-upload-name').html('');
                fieldSection.find('label[for="file-upload-input-' + inputName + '"]').text(window.translation.choose_fle);
            });
    }
    
    form_load_values(formId, autoSubmit);
    if (!autoSubmit) {
        $('#form-user-modal-' + formId).foundation('open');
        //event to detect close form
        let buttonOpen = $(document).find('a[data-form-id="' + formId + '"].open-form-modal:not(.hide)').first();
        $(document).on('closed.zf.reveal', '#form-user-modal-' + formId, function () {
            buttonOpen.focus();
        });
    }
    var validator = $('#form-custom-' + formId).validate();
    validator.destroy();
    initiate_jquery_validate(window.translation);


}

function reloadSelectWithSFView(fieldID, parameterUrl, fieldSelect, recordId, formId, autoSubmit) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    let data = { fieldId: fieldID, parameterUrl: parameterUrl };
    $.ajax({
        type: "POST",
        url: urlSite + "admin/VerifyOptionForListViewDropdowns",
        data: data
    }).done(function (data) {
        var jsonData = JSON.parse(data);
        if (jsonData.code == 200) {
            var options = jsonData.options;
            fieldSelect.empty();
            fieldSelect.html(options);
            if (recordId && recordId != '') {
                fieldSelect.val(recordId);
            }
            if (formId) {
                
                form_load_values(formId, autoSubmit);
            }
        }
    });
}

function closeCustomForm(formId, revealModal, recordId) {
    var self = $('.formBlock[data-form-id="' + formId + '"]');

    if ($(self).find('textarea.rich_text').length > 0) {
        $(self).find('textarea.rich_text').each(function () {
            var textareaId = $(this).attr('id');
            if ($('div[id="cke_' + textareaId + '"]').length > 0) {
                $('div[id="cke_' + textareaId + '"]').remove();
            }
        });
    }

    if ($(self).find('select.autosuggest').length > 0) {
        $(self).find('select.autosuggest').each(function () {
            var selectName = $(this).attr('name');
            $('select[name="' + selectName + '"]').select2('destroy');
        });
    }

    if ($(self).find('input[name="select-to-reload"]').val() != '') {
        var controlToReload = $(self).find('input[name="select-to-reload"]').val();
        reloadSelectWithSFView(controlToReload, '', $('select[name="' + controlToReload + '[value]"]'), recordId);
    }

    if ($(self).find('select[data-type="multiselect"]').length > 0) {
        if ($('#form-user-modal-' + formId).find('.processing_screen').length > 0) {
            $('#form-user-modal-' + formId).find('.processing_screen').show();
        }
        if ($('#form-user-modal-' + formId).find('.spinner').length > 0) {
            $('#form-user-modal-' + formId).find('.spinner').show();
        }

        $(self).find('select').each(function () {
            var dataType = $(this).attr('data-type');
            if (dataType == 'multiselect') {
                $(this).multiselect('unload');

            }
        });


        setTimeout(function () {
            $('#' + revealModal).foundation('close');
            if ($('#form-user-modal-' + formId).find('.processing_screen').length > 0) {
                $('#form-user-modal-' + formId).find('.processing_screen').hide();
            }
            if ($('#form-user-modal-' + formId).find('.spinner').length > 0) {
                $('#form-user-modal-' + formId).find('.spinner').hide();
            }
        }, 500);
    }
    else {
        $('#' + revealModal).foundation('close');
    }

}

function onBtnClicked(btnId, form_title, record_token, formID) {
    //var sesion_id = get('ASP.NET_SessionId');
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    if (btnId == "submitteddata" && record_token != '') {
        var submitedDataToPrint = $('#' + formID).find('input[name="submitToPrintData"]').val();
        var newform = $('#' + formID + '-print-data');
        newform.find('input[name="form_title"]').val(form_title);
        newform.find('input[name="form_token"]').val(record_token);
        newform.find('input[name="data_submitted"]').val(submitedDataToPrint);

        newform.submit();
        return false;
        //window.location.href = urlSite+'/submission-success-data/'+record_token;
        //window.open(urlSite+'/submission-success-data/'+record_token, '_blank');
    }
}

function calculate_latlong_for_address_components(currentForm, setValuesInFormData, self) {


    var xhrsLatLong = [];
    if (setValuesInFormData === true && (currentForm === null || currentForm === undefined))
        setValuesInFormData = false;


    try {
        if (self && self.find('div.address-component-latlong.pending').length > 0) {

            self.find('div.address-component-latlong.pending').each(function () {

                let urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
                urlSite = urlSite.substring(0, urlSite.length - 1);
                let formData = '';
                let currentAvailableData = [];

                if (self.find('input.address-component-street.address-component').length > 0 && self.find('input.address-component-street.address-component').val() != '')
                    currentAvailableData.push(self.find('input.address-component-street.address-component').val());

                if (self.find('input.address-component-city.address-component').length > 0 && self.find('input.address-component-city.address-component').val() != '')
                    currentAvailableData.push(self.find('input.address-component-city.address-component').val());

                if (self.find('input.address-component-state.address-component').length > 0 && self.find('input.address-component-state.address-component').val() != '')
                    currentAvailableData.push(self.find('input.address-component-state.address-component').val());

                if (self.find('input.address-component-zipcode.address-component').length > 0 && $('input.address-component-zipcode.address-component').val() != '')
                    currentAvailableData.push(self.find('input.address-component-zipcode.address-component').val());

                if (self.find('select.address-component-country.address-component').length > 0 && self.find('select.address-component-country.address-component').val() != '')
                    currentAvailableData.push(self.find('select.address-component-country.address-component').val());

                if (currentAvailableData.length > 0) {
                    formData = currentAvailableData.join(',');

                    let data = { address: formData }
                    var xhrLatLong = $.ajax({
                        type: "POST",
                        url: urlSite + "/getgeolocation",
                        data: data
                    }).done(function (data) {
                        fileUrl = '';
                        let jsonResult = JSON.parse(data);

                        if (jsonResult !== null && jsonResult.code == 200 && jsonResult.response != undefined && jsonResult.response.docs.length > 0) {

                            if (self.find('input.address-component-latitude.address-component').length > 0) {
                                self.find('input.address-component-latitude.address-component').val(jsonResult.response.docs[0].latitude)
                                if (setValuesInFormData === true) {
                                    let fieldId = self.find('input.address-component-latitude.address-component').prop('name').replace("[value]", "");
                                    currentForm[fieldId]["value"] = jsonResult.response.docs[0].latitude;
                                }
                            }

                            if (self.find('input.address-component-longitude.address-component').length > 0) {

                                self.find('input.address-component-longitude.address-component').val(jsonResult.response.docs[0].longitude)
                                if (setValuesInFormData === true) {
                                    let fieldId = self.find('input.address-component-longitude.address-component').prop('name').replace("[value]", "");
                                    currentForm[fieldId]["value"] = jsonResult.response.docs[0].longitude;
                                }
                            }
                        }

                        $(this).removeClass("pending")
                        return false;
                    });

                    xhrsLatLong.push(xhrLatLong);
                }

            });

            return xhrsLatLong;
        }
    } catch (e) {
        window.console && console.error(e)
    }
}

function submit_form(self, formData, hasPaymentComponent, isFromVerificationCodePage, oneStepData) {
    var xhrsLatLong = calculate_latlong_for_address_components(formData, true, self);
    $.when.apply($, xhrsLatLong).done(function () {
        evaluate_recapctha_to_send_form(self, formData, hasPaymentComponent, isFromVerificationCodePage, oneStepData);
    });

}

function evaluate_recapctha_to_send_form(self, formData, hasPaymentComponent, isFromVerificationCodePage, oneStepData) {
    var securityKey = getClientSecurityKey();
    var recalculateToken = false;
    if (securityKey != undefined) {
        // compare the current time vs the time when the token eas generated
        var initialTime = formData["user_response_time"];
        let initialRecapcthaCompleted = formData["pageuserinternalcompleted"];
        let currentToken = formData["user_response"];

        if (currentToken === undefined || currentToken === null || currentToken === '')
            recalculateToken = true;
        if (initialTime === undefined) {
            try {
                if (document.referrer != '') {
                    let currentHost = window.location.hostname;
                    let domainReferrer = (new URL(document.referrer));

                    if (currentHost === domainReferrer.hostname) {
                        recalculateToken = true;
                    }
                } else if (initialRecapcthaCompleted !== undefined && initialRecapcthaCompleted == '') {
                    recalculateToken = true;
                }
            } catch (e) {
                window.console && console.error(e)
            }
        } else {
            var currentTime = new Date().getTime();

            var diff = currentTime - initialTime;
            if (diff > 90000)
                recalculateToken = true;
        }

    }

    if (recalculateToken === true) {
        // $('#volunteer-register-form').find(".submit-button").attr("disabled", true);
        var actionName = 'forms'

        grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {

            var currentTime = new Date().getTime();
            currentTime = currentTime + (24 * 60 * 60 * 1000);
            formData["user_response"] = token;
            formData["user_response_time"] = currentTime;

            // ajax_submit_event(null, formData);
            submit_form_inner(self, formData, hasPaymentComponent, isFromVerificationCodePage, oneStepData);
        });
    } else {
        //ajax_submit_event(null, formData);
        submit_form_inner(self, formData, hasPaymentComponent, isFromVerificationCodePage, oneStepData);
    }
}
let displayLogicIteration = 0;
/**
 * @param {Array} jsonData: It contains all the display logic rules of the current form
 * @param {any} form : It is the current form element
 * @param {any} elementId : When it is triggered by  a specified  onchange element, the elementId must be provided, else it can be null or undefined
 */
function process_display_logic(jsonData, form, elementId, type) {
    displayLogicIteration++;
    let radioValue = '';
    if (jsonData != null && jsonData.length > 0) {
        let iterationItems = 0;
        if (type === 'radio') {
            if (elementId.indexOf('_') > -1) {
                let values = elementId.split('_');
                elementId = values[1];
                radioValue = values[0];
            }
        }
        if (type === 'select') {
            if (elementId != null && elementId !== undefined && elementId.indexOf('[]') != -1) {
                elementId = elementId.replace('[]', '');
            }
        }

        if (type === 'checkbox') {
            if (elementId != null && elementId !== undefined && elementId.indexOf('[') != -1) {
                elementId = elementId.split('[')[0];
            }
        }

        let jsonDataFiltered = filter_By_Condition_Field(jsonData, elementId);

        jsonDataFiltered.forEach(function (item) {
            iterationItems++;

            var machineName = item.machineName;
            var fieldType = item.fieldType;
            var originalRequired = form.find('[name="' + machineName + '[value]"]').attr('data-original-required');
            var required = form.find('[name="' + machineName + '[value]"]').attr('data-required');
            if (fieldType == 'multiselect') {
                var originalRequired = form.find('[name="' + machineName + '[value][]"]').attr('data-original-required');
                var required = form.find('[name="' + machineName + '[value][]"]').attr('data-required');
            } else if ((fieldType == null || fieldType == undefined) && (machineName != null && machineName != undefined && machineName != '')) {
                if (form.find('a#button-submit-' + machineName).length > 0) {
                    fieldType = 'button';
                } else if (form.hasClass('form-ars')) {
                    fieldType = 'button';
                }
            }

            var conditions = item.conditions;

            var and_or = item.and_or;
            var display = item.display;
            var fitCounter = 0;

            let iterationConditions = 0;
            conditions.forEach(function (cond) {
                iterationConditions++;
                var field = cond.field;
                var op = cond.op;
                var data = cond.data;
                var isHidden = (form.find('[name="' + field + '[value]"]').attr('data-type')=='hidden' || form.find('[name="' + field + '[value]"]').parents('.fields-section').first().parent().css('display') !== 'none') ? false : true;
                var isAutopopulate = form.find('[name="' + field + '[value]"]').hasClass('autosuggest') ? true : false;

                var val;
                var typeAttr = form.find('[name*="' + field + '[value]"]').attr('type');
                var dataType = form.find('[name*="' + field + '[value]"]').attr('data-type');

                var dataDecimalMark = form.find('[name*="' + field + '[value]"]').attr('data-decimal-mark');
                var decimalMark = (dataDecimalMark != '' && dataDecimalMark != undefined) ? dataDecimalMark : window.decimalCharacter;
                
                if (typeAttr === null || typeAttr === undefined) {
                    if (form.find('input#innerSettings_' + field).length > 0) {
                        typeAttr = form.find('input#innerSettings_' + field).attr('data-type');
                        if (typeAttr !== null && typeAttr === 'field-readonly') {
                            if (form.find('label#readonly-field-' + field).length > 0) {
                                val = form.find('label#readonly-field-' + field).text();
                            }
                            else if (form.find('[name="' + field + '[type]"]').val() == 'checkbox'
                                && form.find('.field-section-' + field + ' label.read-only-text').length > 0) {
                                val = form.find('.field-section-' + field + ' label.read-only-text').text() == "Yes" ? 'true' : 'false';
                            }
                        }
                    }
                } else if (typeAttr == 'checkboxes' && dataType == 'multiselect') {
                    val = new Array();
                    form.find('[name*="' + field + '[value]"]').each(function () {
                        if ($(this).attr('type') == 'checkbox') {
                            if ($(this).is(':checked')) {
                                val.push($(this).attr('value'));
                            }
                        }
                    });
                } else if (typeAttr == 'checkbox') {
                    val = form.find('[name="' + field + '[value]"]').is(':checked') == true ? 'true' : 'false';
                }
                else if (typeAttr == 'radio') {
                    val = form.find('[name="' + field + '[value]"]:checked').val();
                }
                else if (typeAttr == 'select' && dataType == 'multiselect') {
                    val = form.find('[name="' + field + '[value][]"]').val();
                }
                else {
                    let explicitField = form.find('[name="' + field + '[value]"]');
                    val = explicitField.val();

                    if (explicitField.hasClass('active_field_calculate')) {

                        val = ConvertNumericValue(val,decimalMark);                        
                    }
                }
                if(dataType === 'number'){
                    val = ConvertNumericValue(val,decimalMark);
                }

                if (!isHidden || isAutopopulate) {
                    if (val && val.constructor === Array) {
                        if ((op == "==" && val.indexOf(data) != -1) ||
                            (op == "!=" && val.indexOf(data) == -1)) {
                            fitCounter = fitCounter + 1;
                        } else if(op == "_multicheck_include_" && val.some(element => element.includes(data))){
                            fitCounter = fitCounter + 1;
                        } else if(op == "_multicheck_notinclude_" && val.every(element => !element.includes(data))){
                            fitCounter = fitCounter + 1;
                        } else if(op === "_not_equal_empty_" && val.length > 0){
                            fitCounter = fitCounter + 1;
                        } else if(op === "_equal_empty_" && val.length == 0){
                            fitCounter = fitCounter + 1;
                        }
                    }
                    else if ((op == "==" && val == data) ||
                        (op == "!=" && val != data) ||
                        (op == ">" && parseInt(val) > parseInt(data)) ||
                        (op == ">=" && parseInt(val) >= parseInt(data)) ||
                        (op == "<" && parseInt(val) < parseInt(data)) ||
                        (op == "<=" && parseInt(val) <= parseInt(data))) {
                        fitCounter = fitCounter + 1;
                    } else if (op === "_not_equal_empty_" && (val !== null && val !== undefined && val !== '')) {
                        fitCounter = fitCounter + 1;
                    } else if (op === "_equal_empty_" && (val === null || val === undefined || (val !== null && val !== undefined && val === ''))) {
                        fitCounter = fitCounter + 1;
                    }
                }
            });

            var _display = 'none';

            if (((and_or == "&&" || and_or == "") && parseInt(fitCounter) == parseInt(conditions.length)) ||
                ((and_or == "||" || and_or == "") && parseInt(fitCounter) >= 1)) {

                _display = display == 0 ? 'none' : 'block';
                if (display == 2) { _display = 'none'; }
            }
            else if (((and_or == "&&" || and_or == "") && parseInt(fitCounter) != parseInt(conditions.length)) ||
                ((and_or == "||" || and_or == "") && parseInt(fitCounter) < 1)) {

                _display = display != 0 ? 'none' : 'block';
                if (display == 2) { _display = 'none'; }
            }

            if (_display == 'none') {
                if (required == 'true') {

                    //form.find('[name="' + machineName + '[value]"]').attr('data-required', 'false');
                    if (form.find('[name="' + machineName + '[value]"]').attr('data-multi-required') != undefined) {
                        form.find('[name="' + machineName + '[value]"]').attr('data-multi-required', 'false');
                    }
                    else {
                        form.find('[name="' + machineName + '[value]"]').attr('data-required', 'false');
                    }
                    form.find('[name="' + machineName + '[value]"]').removeClass('error');
                    form.find('[name="' + machineName + '[value]"]').removeAttr('aria-invalid');
                    form.find('[name="' + machineName + '[value]"]').removeAttr('aria-required');
                    form.find('[name="' + machineName + '[value]"]').attr('data-conditional', 'true');

                    if (form.find('[name="' + machineName + '[value][]"]').length > 0) {

                        form.find('[name="' + machineName + '[value][]"]').attr('data-required', 'false');
                        form.find('[name="' + machineName + '[value][]"]').removeClass('error');
                        form.find('[name="' + machineName + '[value][]"]').removeAttr('aria-invalid');
                        form.find('[name="' + machineName + '[value][]"]').removeAttr('aria-required');
                        form.find('[name="' + machineName + '[value][]"]').attr('data-conditional', 'true');
                    }
                }
            } else if (_display == 'block') {
                if (originalRequired == 'required') {

                    if (form.find('[name="' + machineName + '[value]"]').attr('data-multi-required') != undefined) {
                        form.find('[name="' + machineName + '[value]"]').attr('data-multi-required', true);
                    }
                    else {
                        form.find('[name="' + machineName + '[value]"]').attr('data-required', 'true');
                    }
                    form.find('[name="' + machineName + '[value]"]').attr('data-conditional', 'true');
                    form.find('[name="' + machineName + '[value]"]').attr('aria-required', 'true');

                    if (form.find('[name="' + machineName + '[value][]"]').length > 0) {

                        form.find('[name="' + machineName + '[value][]"]').attr('data-required', 'true');
                        form.find('[name="' + machineName + '[value][]"]').attr('data-conditional', 'true');
                        form.find('[name="' + machineName + '[value][]"]').attr('aria-required', 'true');
                    }
                }
            }
            add_remove_hidden_class(form, machineName, _display, fieldType);
        });
    }
}

function ConvertNumericValue(value,decimalMark){
    var numericValue;
    if (decimalMark === ".") {
        numericValue = parseFloat(value.replace(/,/g, ''));
    } else {
        numericValue = parseFloat(value.replace(/\./g, '').replace(',', '.'));
    }
    return numericValue;
}

function display_logic_events(self, jsonData, elementId) {
    var type = self.attr('type');
    var dataType = self.data('type');
    var name = self.attr('name');
    var form = self.closest('form');
    var required = self.attr('data-required');
    var originalRequired = self.attr('data-original-required');
    name = name.substring(0, name.lastIndexOf('[value]'));
    if (required != null && required == 'true') {
        if (type === 'checkbox') {
            //form_checkbox_error(self);
        }
        else if (type === 'radio') {
            var content = self.closest('div.input-group-radiobutton');
            var validation = content.find('label.validation-message');

            if (self.is(':checked') !== false && validation.length) {
                validation.css('display', 'none');
                content.find('label.error').remove();
            }
        }
    }
    process_display_logic(jsonData, form, elementId, type);
}

function redirect_logic_events(self, jsonData) {
    var type = self.attr('type');
    var dataType = self.data('type');
    var name = self.attr('name');
    var form = self.closest('form');
    var formId = self.parents('.formBlock').data('form-id');
    var required = self.attr('required');
    var originalRequired = self.attr('data-original-required');
    name = name.substring(0, name.lastIndexOf('[value]'));

    if (required != null && required == 'true') {
        if (type === 'checkbox') {
            form_checkbox_error(self);
        }
        else if (type === 'radio') {
            var content = self.closest('div.input-group-radiobutton');
            var validation = content.find('label.validation-message');

            if (self.is(':checked') !== false && validation.length) {
                validation.css('display', 'none');
            }
        }
    }

    if (jsonData != null && jsonData.length > 0) {
        jsonData.forEach(function (item) {
            var urlRedirect = item.urlRedirect;
            var conditions = item.conditions;
            var and_or = item.and_or;
            var display = item.display;
            var fitCounter = 0;

            conditions.forEach(function (cond) {
                var field = cond.field;
                var op = cond.op;
                var data = cond.data;
                var isHidden = (form.find('[name="' + field + '[value]"]').parents('.fields-section').first().parent().css('display') !== 'none') ? false : true;
                var isAutopopulate = form.find('[name="' + field + '[value]"]').hasClass('autosuggest') ? true : false;

                var val;
                var typeAttr = form.find('[name*="' + field + '[value]"]').attr('type');
                var dataType = form.find('[name*="' + field + '[value]"]').attr('data-type');
                if (typeAttr == 'checkboxes' && dataType == 'multiselect') {
                    val = new Array();
                    form.find('[name*="' + field + '[value]"]').each(function () {
                        if ($(this).attr('type') == 'checkbox') {
                            if ($(this).is(':checked')) {
                                val.push($(this).attr('value'));
                            }
                        }
                    });
                } else if (typeAttr == 'checkbox') {
                    val = form.find('[name="' + field + '[value]"]').is(':checked') == true ? 'true' : 'false';
                }
                else if (typeAttr == 'radio') {
                    val = form.find('[name="' + field + '[value]"]:checked').val();
                }
                else if (typeAttr == 'select' && dataType == 'multiselect') {
                    val = form.find('[name="' + field + '[value][]"]').val();
                }
                else {
                    val = form.find('[name="' + field + '[value]"]').val();
                }

                if (!isHidden || isAutopopulate) {
                    if (val && val.constructor === Array) {
                        if ((op == "==" && val.indexOf(data) != -1) ||
                            (op == "!=" && val.indexOf(data) == -1)) {
                            fitCounter = fitCounter + 1;
                        }
                    }
                    else if ((op == "==" && val == data) ||
                        (op == "!=" && val != data) ||
                        (op == ">" && parseInt(val) > parseInt(data)) ||
                        (op == ">=" && parseInt(val) >= parseInt(data)) ||
                        (op == "<" && parseInt(val) < parseInt(data)) ||
                        (op == "<=" && parseInt(val) <= parseInt(data))) {
                        fitCounter = fitCounter + 1;
                    } else if (op === "_not_equal_empty_" && (val !== null && val !== undefined && val !== '')) {
                        fitCounter = fitCounter + 1;
                    } else if (op === "_equal_empty_" && (val === null || val === undefined || (val !== null && val !== undefined && val === ''))) {
                        fitCounter = fitCounter + 1;
                    }
                }
            });


            var _redirection = '';

            if (((and_or == "&&" || and_or == "") && parseInt(fitCounter) == parseInt(conditions.length)) ||
                ((and_or == "||" || and_or == "") && parseInt(fitCounter) >= 1)) {

                _redirection = urlRedirect;
            }
            else if (((and_or == "&&" || and_or == "") && parseInt(fitCounter) != parseInt(conditions.length)) ||
                ((and_or == "||" || and_or == "") && parseInt(fitCounter) < 1)) {

                _redirection = '';
            }

            updateListRedirections(formId, item.id, _redirection == urlRedirect);

        });
    }
}


function add_remove_hidden_class(form, machineName, display, fieldType) {
    if (fieldType == 'button' && !form.hasClass('form-ars')) {
        if (display == 'none') {
            form.find('a#button-submit-' + machineName).addClass('is-hidden');
        } else {
            form.find('a#button-submit-' + machineName).removeClass('is-hidden');
        }
    } else if (fieldType == 'button' && form.hasClass('form-ars')) {
        var statusButton = form.find('#status-button').val();
        if (statusButton != null && statusButton != undefined && statusButton == '0') {
            form.find('#status-button').val(display);
        }
        if (display == 'none') {
            $('body').find('.actions_branch_logic .next_option a.primary-button').addClass('is-hidden');
        } else {
            $('body').find('.actions_branch_logic .next_option a.primary-button').removeClass('is-hidden');
        }

    }

    if (fieldType == "multiselect") {
        var value = form.find('[name="' + machineName + '[value][]"]');
    }
    else if (fieldType == "description" || fieldType == "section") {
        var value = form.find('div[data-machine-name="' + machineName + '[value]"]');
    }
    else {
        var value = form.find('[name="' + machineName + '[value]"]');
    }
    var dataType = value.data('type');
    var isMultiFile = false;

    if (value.hasClass('multiple-file')) {
        isMultiFile = true;
    }
    var parent = value.closest('.row');
    if (isMultiFile) {
        parent = $('#related-files-container-' + machineName).parent().parent();
    }
    var type = form.find('[name="' + machineName + '[type]"]');
    var hour = form.find('[name="' + machineName + '[hour]"]');
    var minute = form.find('[name="' + machineName + '[minute]"]');
    var timeValue = form.find('[name="' + machineName + '[timeValue]"]');
    var format = form.find('[name="' + machineName + '[format]"]');
    var sf_field = form.find('[name="' + machineName + '[sf_field]"]');
    var sf_object = form.find('[name="' + machineName + '[sf_object]"]');
    var formatDate = form.find('[name="' + machineName + '[formatDate]"]');
    var formatTime = form.find('[name="' + machineName + '[formatTime]"]');
    var timezone = form.find('[name="' + machineName + '[timezone]"]');
    var isHidden = parent.hasClass('is-hidden');
    if (dataType == 'radio') { 
        parent = value.closest('.input-group');
        if (parent.length === 0) {
            if (value.length > 1) {
                parent = value.first().parents('.internal-field-content');
            } else {
                parent = value.parents('.internal-field-content');
            }

        }
        var isRadioMultiple = value.parents('.input-group-radiobutton').length > 0;
        if (isRadioMultiple) {
            parent = value.parents('.input-group-radiobutton').first().closest('.row').first();
        }
        isHidden = parent.hasClass('is-hidden');
    }
    if (display == 'none' && !isHidden) {
        parent.addClass('is-hidden');
        value.addClass('is-hidden');
        type.addClass('is-hidden');
        sf_field.addClass('is-hidden');
        sf_object.addClass('is-hidden');

        if (hour.length > 0) {
            hour.addClass('is-hidden');
            minute.addClass('is-hidden');
            format.addClass('is-hidden');
        }
        if (timeValue.length > 0) {
            timeValue.addClass('is-hidden');
        }

    }
    else if (display == 'block' && isHidden) {
        parent.removeClass('is-hidden');
        value.removeClass('is-hidden');
        type.removeClass('is-hidden');
        sf_field.removeClass('is-hidden');
        sf_object.removeClass('is-hidden');

        if (hour != null) {
            hour.removeClass('is-hidden');
            minute.removeClass('is-hidden');
            format.removeClass('is-hidden');
        }
        if (timeValue != null) {
            timeValue.removeClass('is-hidden');
        }

        if (fieldType == 'dropdown' && machineName !== '') {
            //verify if the dropdown is show as codevalidator
            let dd = form.find('select[id="' + machineName + '[value]"]');
            if (dd != undefined && dd.length > 0 && dd.hasClass('select-inner-code-validator')) {
                let inputCode = form.find('.field-section-' + machineName + ' .code-validation-box input[id="text-' + machineName + '[value]"].code-validation-input');
                if (inputCode !== undefined && inputCode.length > 0) {
                    inputCode.removeClass('is-hidden');
                }
            } else if (dd.data("copyEnabled")) {
                dd.trigger("change")
            }
        }
    }

    if (dataType == 'email' || dataType == 'password') {
        var _value = form.find('[name="retype_' + machineName + '"]');
        var _parent = _value.closest('.row');

        if (display == 'none' && !isHidden) {
            _parent.addClass('is-hidden');
            _value.addClass('is-hidden');
        }
        else if (display == 'block' && isHidden) {
            _parent.removeClass('is-hidden');
            _value.removeClass('is-hidden');
        }
    }

    if (fieldType == 'datetime') {
        var default_date_time = form.find('[name="' + machineName + '[value]_default_date_time"]');

        if (display == 'none') {
            formatDate.addClass('is-hidden');
            formatTime.addClass('is-hidden');
            timezone.addClass('is-hidden');

            if (default_date_time != null) {
                default_date_time.addClass('is-hidden');
            }
        }
        else if (display == 'block') {
            formatDate.removeClass('is-hidden');
            formatTime.removeClass('is-hidden');
            timezone.removeClass('is-hidden');

            if (default_date_time != null) {
                default_date_time.removeClass('is-hidden');
            }
        }
    }
    if (fieldType == 'paymentcomponent') {
        payment_component_add_remove_hiddne(form, form, display);
    }
    if (fieldType == 'section') {
        var mainsection = form.find('input[name="' + machineName + '[type]"][value="section"]').closest('.section');
        var payment_form = mainsection.find('.row.payment-component');
        if (!payment_form) {
            payment_form = mainsection.find('.subsection .row.payment-component');
        }
        if (payment_form.length > 0) {
            payment_component_add_remove_hiddne(mainsection, form, display);
        }
    }
    if (fieldType == 'checkbox') {
        if (display == 'block') {
            var originalRequired = form.find('[name="' + machineName + '[value]"]').attr('data-original-required');
            if (originalRequired == 'required') {
                form.find('[name="' + machineName + '[value]"]').data('required', true);
            }
        } else {
            form.find('[name="' + machineName + '[value]"]').data('required', false);
        }
    } else if (fieldType == 'addresscomponent') {
        let parentComponent = form.find('[data-machine-name="' + machineName + '[value]"]').parents('.address-component');

        if (parentComponent !== undefined && parentComponent !== null) {
            if (display == 'none') {
                parentComponent.addClass('is-hidden');
            } else {
                parentComponent.removeClass('is-hidden');
            }
        }
    }
    //calculate_items();
}


function payment_component_add_remove_hiddne(mainsection, form, display) {

    var payment_form = mainsection.find('.row.payment-component');
    if (!payment_form) {
        payment_form = mainsection.find('.subsection .row.payment-component');
    }
    payment_form.find('input[name="payment_processor"]').prop("checked", true).change();
    var btn_text_original = form.find('.submit-button.from-view').attr('data-original-label');
    var payment_prosesor = payment_form.find('input[name="payment_processor"]').val();
    var donate_pay_text = payment_form.find('input[name="donate_pay_text"]').val();

    var payment_text_btn = btn_text_original;
    if (payment_form.length > 0) {

        payment_text_btn = btn_text_original + ' ( ' + donate_pay_text + ' with ' + payment_prosesor + ' )';
    }
    if (display == 'none') {

        payment_form.addClass('is-hidden');
        payment_form.find('input[name="prefer_not_donate"]').prop("checked", true).change();
        form.find('.submit-button.from-view').text(btn_text_original);
    } else if (display == 'block') {

        payment_form.removeClass('is-hidden');
        payment_form.find('input[name="prefer_not_donate"]').prop("checked", false).change();
        form.find('.submit-button.from-view').text(payment_text_btn);
    }
}

function form_checkbox_error(self) {
    var content = self.closest('div.content');
    var validation = content.find('label.validation-message');
    var required = self.data('required');

    if (validation.length && required == 'true') {
        if (self.prop('checked') !== false) {
            validation.css('display', 'none');
        }
        else {
            validation.css('display', 'block');
            topPage = content.offset().top;
        }
    }
}

function EventPopulateCurrentDatetimeSubmit(self) {
    var currentLanguage = window.translation['language_iso'];
    moment.locale(currentLanguage);

    var currentDatetime = moment().format(window.MomentDateTimeFormat);
    var currentDate = moment().format(window.MomentDateFormat);
    var currentDatetimeAMPM = moment().format('hh:mm A');
    var currentDatetime24 = moment().format('HH:mm');
    var currentDatetimeForHidden = moment().format('YYYY-MM-DDTHH:mm:ssZ');

    //Populate inputs with value of currentDatetime
    self.find('input.populate-current-datetime-submit').each(function () {

        var machineNameId = $(this).val();
        var machineName = $(this).attr('data-machine-name');
        var format = $(this).attr('data-time-format'); //Can be HHMM or HHMMPM
        var timesLocal = currentDatetimeAMPM.split(' ');
        var times24 = currentDatetime24.split(':');
        var formatLocal = timesLocal[1];
        var timesLocalHours = timesLocal[0].split(':');

        //Populate input
        self.find('input[name="' + machineName + '"]').val(currentDatetimeForHidden);

        //Populate textarea
        self.find('textarea[name="' + machineName + '"]').empty();
        self.find('textarea[name="' + machineName + '"]').append(currentDatetime);

        //Populate datepicker
        self.find('input.date-picker-input[name="' + machineName + '"]').val(currentDate);

        //Populate timepicker
        if (format === 'HHMM') {
            //24 hours format
            self.find('input[name="' + machineNameId + '[hour]"]').val(times24[0]);
            self.find('input[name="' + machineNameId + '[minute]"]').val(times24[1]);
        }
        else if (format === 'HHMMPM') {
            //12 hours format
            self.find('input[name="' + machineNameId + '[hour]"]').val(timesLocalHours[0]);
            self.find('input[name="' + machineNameId + '[minute]"]').val(timesLocalHours[1]);
            self.find('select[name="' + machineNameId + '[format]"]').val(formatLocal);
        }
    });
}

function GetVerificationCode(token, containerElement) {
    var vertificationCodeHTML = '<div class="row verification-code-section">' +
        '<div class="small-12 medium-4 columns  fields-section">' +
        '<span>&nbsp;</span>' +
        '</div>' +
        '<div class="small-12 medium-8 columns  fields-section verification-code-row" style="">' +
        '<div class="small-12 columns">' +
        '<div class="small-12 medium-7 columns verify-input-code-section">' +
        '<input type="text" name="verificationCode" id="verificationCode" value="" placeholder="' + window.translation.verification_code_placeholder + '" class="verify-code-input" maxlength="5" />' +
        '</div>' +
        '<div class="small-12 medium-5 columns actions-section">' +
        '<a name="Verify" class="button verify-code verify-code-actions" href="#" >' + window.translation.verify + '</a><a name="Cancel" class="button cancel-verification-code verify-code-actions" href="#">' + window.translation.cancel + '</a>' +
        '<input type="hidden" value="' + token + '" name="verificationtoken"  id="verificationtoken" />' +
        '</div>' +
        '</div>' +
        '<div class="row resend-code-section"><a href="#" class="resend-code">' + window.translation.resend_code + '</a><div class="small-check-mark"></div></div >' +
        '</div>' +
        '</div>';

    if (containerElement.find('div.verification-code-section').length === 0) {
        if (containerElement.find('div.submit-group').length > 0) {
            containerElement.find('div.submit-group').before(vertificationCodeHTML);
        } else if (containerElement.find('div.actions_branch_logic').length > 0) {
            containerElement.find('div.actions_branch_logic').before(vertificationCodeHTML);
        }

    }
    else {
        containerElement.find('input#verificationtoken').val(token);
    }

}


function ValidateVerificationCode(self, inputValue) {
    var containerElement = self.closest('.formBlock');
    var _form = containerElement.find('form');
    var _formId = containerElement.data('form-id');
    var paymentComponent = containerElement.find('.payment-component');
    var requestVerificationTokens = containerElement.find('input[name="__RequestVerificationToken"]');


    var token = _form.find('input[name="verificationtoken"]').val();
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    var hideProcessingScreens = true;

    $.ajax({
        method: "POST",
        url: urlSite + "user/ValidateVerificationCode",
        data: { token: token, code: inputValue },
        beforeSend: function () {
            containerElement.find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status === "ok") {
            hideProcessingScreens = false;

            var formForm = _form.serializeJSON();
            formForm['formId'] = _formId;
            formForm['save_complete_later'] = false;

            // CSRF Token
            if (requestVerificationTokens !== null) {
                requestVerificationTokens.each(function () {
                    formForm['__RequestVerificationToken'] = $(this).val();
                });
            }
            var hasPaymentComponent = has_payment_component(paymentComponent);

            remove_form_restriction(_form, '10');
            prepare_form_submission(self, formForm, _form, hasPaymentComponent)

        } else if (jsonResult.status === "error" && jsonResult.code === 401) {

            var name = 'verificationCode';
            var fieldIdentifier = 'label[id="' + name + '-error"]';
            var label = '<label id="' + name + '-error" class="error" style="display:block;">' + jsonResult.message + '</label>';
            if ($('#' + name).parents('.fields-section').find(fieldIdentifier).length > 0) {
                $('#' + name).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
            } else {
                $('#' + name).parent().append(label);
            }

            if (jsonResult.token !== undefined) {
                containerElement.find('#verificationtoken').val(jsonResult.token);
            }

            if (jsonResult.blockRetries === true) {
                var verifyButton = self.closest('.verification-code-section').find('.actions-section a.verify-code');
                if (verifyButton !== undefined) {
                    verifyButton.prop('disabled', true);
                    verifyButton.addClass('custom-disabled-opacity')
                }
            }

        } else {
            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });
        }

    }).always(function () {
        if (hideProcessingScreens === true)
            containerElement.find('.processing_screen').hide();
    });

}
function hide_verificationcode_error_element(self) {
    var elementError = self.closest('.formBlock').find('#verificationCode-error');
    if (elementError !== undefined && elementError.is(':visible')) {
        elementError.hide();
    }

    var elementCheckmark = self.closest('.formBlock').find('.small-check-mark');
    if (elementCheckmark !== undefined && elementCheckmark.is(':visible'))
        elementCheckmark.hide();
}

function add_verification_code_events() {
    $('body div.formBlock').on('keypress', 'input[name="verificationCode"]', function (e) {
        //if the letter is not digit then display error and don't type anything
        if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
            return false;
        }
    });

    $('body div.formBlock').on('input', 'input[name="verificationCode"]', function () {

        if ($('body div.formBlock .verification-code-section a.verify-code').hasClass('custom-disabled-opacity') || $('body div.formBlock #user_token_id').length > 0 && $('body div.formBlock #user_token_id').val() != '') {
            return false;
        }

        var elementCheckmark = $(this).closest('.formBlock').find('.small-check-mark');

        if (elementCheckmark !== undefined && elementCheckmark.is(':visible')) {
            elementCheckmark.hide();
        }


        if ($(this).val().length >= 5) {
            hide_verificationcode_error_element($(this));
            ValidateVerificationCode($(this), $(this).val())
        }
    });

    $('body div.formBlock').on('click', 'a.cancel-verification-code[name="Cancel"]', function () {
        var isRegistrationFormValue = $(this).closest('.formBlock').find('input[name="isRegistrationFormWithArs"]').val();
        var isRegistrationWithARS = isRegistrationFormValue === "true" || isRegistrationFormValue === "True";


        var actionButton = undefined;

        if (isRegistrationWithARS === false)
            actionButton = $(this).closest('.formBlock').find('.submit-group');
        else
            actionButton = $(this).closest('.formBlock').find('.next_option a.primary-button');


        $(this).closest('.formBlock').find('.custom-disabled-opacity').removeClass('custom-disabled-opacity');
        $(this).closest('.formBlock').find('div.verification-code-section').remove();

        if (actionButton !== undefined)
            actionButton.show();

    });

    $('body div.formBlock').on('click', 'a.verify-code[name="Verify"]', function () {
        hide_verificationcode_error_element($(this));
        ValidateVerificationCode($(this), $(this).closest('.formBlock').find('input#verificationCode').val());
    });

    $('body div.formBlock').on('click', 'a.resend-code', function () {
        if ($(this).hasClass('custom-disabled-opacity')) {
            return false;
        }

        $('body div.formBlock .actions-section a.verify-code').removeClass('custom-disabled-opacity');
        $('body div.formBlock .actions-section a.verify-code').prop('disabled', false);
        hide_verificationcode_error_element($(this));
        var isuserregistrationform = $(this).closest('.formBlock').find('input[name="isuserregistrationform"]').val();
        is_needed_verification_code($(this), null, null, null, isuserregistrationform === "True");
    });


    if ($('body div.formBlock input.sf_field[type="hidden"][value="Email"]').length > 0) {
        $('body div.formBlock input.sf_field[type="hidden"][value="Email"]').each(function () {

            if ($(this).closest('.formBlock #user_token_id').length > 0 && $(this).closest('.formBlock #user_token_id').val() != '') {
                return false;
            }

            var isUpdatePersonalInformation = false;
            var isRegistrationForm = false;
            var message = window.translation.verification_code_after_submit;


            var element = $(this).closest('.formBlock').find('#isuserinformationform');
            var user_token_id = $(this).closest('.formBlock').find('#user_token_id').val();
            if (element !== undefined && element.val() === "True") {
                isUpdatePersonalInformation = true;
                message = window.translation.verification_code_will_be_sent;
            }

            element = $(this).closest('.formBlock').find('#isuserregistrationform');
            if (element !== undefined && element.val() === "True")
                isRegistrationForm = true;

            if (isUpdatePersonalInformation == true || isRegistrationForm == true) {

                var emailElementName = undefined;
                var newEmail = undefined;
                var emailElement = $(this);

                if (emailElement !== undefined) {

                    emailElementName = emailElement.attr('name');

                    if (emailElementName !== undefined) {
                        var positiontype = emailElementName.indexOf('[');
                        if (positiontype > 0 && (user_token_id == undefined || user_token_id == '')) {
                            emailElementName = emailElementName.substring(0, positiontype);

                            emailElement.after('<label id="' + emailElementName + '-info" for="' + emailElementName + '" class="info info-email-code" style="display:none;">' + message + '</label>')

                            $('body div.formBlock').on('input', 'input#' + emailElementName, function () {

                                var errorValue = $('label#' + emailElementName + '-error').css('display');

                                var isErrorValue = false;
                                if (errorValue == "block")
                                    isErrorValue = true;

                                var currentEmail = $(this).closest('.formBlock').find('input#currentuseremail').val();
                                if (currentEmail !== $(this).val() && isErrorValue === false) {
                                    $(this).closest('.formBlock').find('p.info-email-code').show();
                                } else
                                    $(this).closest('.formBlock').find('p.info-email-code').hide();

                            });

                        }
                    }
                }
            }

        });


    }
}
function get_id_email_input(self) {

    var emailElementId = undefined;
    var newEmail = undefined;
    var emailElement = self.closest('.formBlock').find('input.sf_field[type="hidden"][value="Email"]');

    if (emailElement !== undefined) {

        emailElementId = emailElement.attr('name');
        if (emailElementId !== undefined) {
            var positiontype = emailElementId.indexOf('[');

            if (positiontype > 0) {
                emailElementId = emailElementId.substring(0, positiontype);
            }
        }
    }

    return emailElementId;

}

function get_element_value_by_id(self, id) {
    var value = undefined;
    var idToFind = id;

    try {
        if (id !== undefined) {
            var element = self.closest('.formBlock').find('#' + id + '\\[value\\]');
            if (element !== undefined)
                value = element.val();
        }

    } catch (e) {
        window.console && console.error(e)
    }
    return value;
}

function get_id_element_mapping_to_Salesforce_field(self, salesforceField) {

    var fieldElementId = undefined;
    var newEmail = undefined;
    var fieldElement = self.closest('.formBlock').find('input.sf_field[type="hidden"][value="' + salesforceField + '"]');

    if (fieldElement !== undefined) {

        fieldElementId = fieldElement.attr('name');
        if (fieldElementId !== undefined) {
            var positiontype = fieldElementId.indexOf('[');

            if (positiontype > 0) {
                fieldElementId = fieldElementId.substring(0, positiontype);
            }
        }
    }

    return fieldElementId;

}

function get_contact_name_from_special_form(self) {
    var fullName = "";

    var firstName = get_element_value_by_id(self, get_id_element_mapping_to_Salesforce_field(self, "FirstName"));
    var lastName = get_element_value_by_id(self, get_id_element_mapping_to_Salesforce_field(self, "LastName"));


    return (firstName !== undefined ? firstName : "") + " " + (lastName !== undefined ? lastName : "");
}

function prepare_form_submission(self, formForm, _form, hasPaymentComponent, allowRegistrationSubmission) {
    if (allowRegistrationSubmission === undefined)
        allowRegistrationSubmission = true;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    //Disable buttons
    self.attr('disabled', 'disabled');
    self.siblings('img').first().css('display', 'inline');

    //Show please wait
    self.closest('.formBlock').find('.processing_screen').show();

    var fileUploads = _form.find('input[type="file"].simple-file');

    var fileUploadsMultiple = _form.find('input[type="file"].multiple-file');

    if (fileUploadsMultiple.length > 0 && _form.first('input[name="salesforce_id_to_update"]').val() == '') {

        var relatedFilesToUpdate = new Array();

        $.each(fileUploadsMultiple, function (k, f) {
            var ulFilesInfo = $(fileUploadsMultiple[k]).attr('data-ul-files-id');

            if ($('#' + ulFilesInfo + ' input[type="hidden"].salesforce-id').length > 0) {
                var filesAdded = $('#' + ulFilesInfo + ' input[type="hidden"].salesforce-id')

                $.each(filesAdded, function (j, f) {
                    relatedFilesToUpdate.push($(filesAdded[j]).val());
                });
            }
        });

        if (relatedFilesToUpdate.length > 0) {
            formForm['SfFiles'] = JSON.stringify(relatedFilesToUpdate);
        }
    }

    var signaturePads = _form.find('.signature_pad');
    var validFile = true;
    if (fileUploads.length > 0 || signaturePads.length > 0) {
        var xhrs = [];
        var undCounter = 0;
        var isThereFileError = false;
        $.each(fileUploads, function (i, f) {
            var files = fileUploads[i].files;
            var private = fileUploads[i].getAttribute('data-private');
            var fileFormId = fileUploads[i].getAttribute('data-form-id');
            var requiresLogin = fileUploads[i].getAttribute('data-requires-login');
            var libraryId = fileUploads[i].getAttribute('data-library-id');
            var saveToSalesforce = fileUploads[i].getAttribute('data-save-to-salesforce');
            var sfRecordToRelate = fileUploads[i].getAttribute('data-sf-record-to-relate');
            var fileUrl = '';
            var isCopyTo = fileUploads[i].getAttribute('data-copy-enabled');
            var copyToField = fileUploads[i].getAttribute('data-copy-to-field');
            var fileName = '';
            var fileInputName = fileUploads[i].getAttribute('id');
            var fileAttributeName = fileUploads[i].getAttribute('name')

            var labelToDisplay = '';
            if ($('input[id="' + fileInputName + '"]').parent('.fields-section').length > 0) {
                labelToDisplay = $.trim($('input[id="' + fileInputName + '"]').parent('.fields-section').parent('.internal-field-content').find('.label-section label').text());
            }


            if (files.length > 0) {
                if (window.FormData !== undefined) {
                    var data = new FormData();
                    data.append("private", private);
                    data.append("formId", fileFormId);
                    data.append("requiresLogin", requiresLogin);
                    data.append("libraryId", libraryId);
                    data.append("saveToSalesforce", saveToSalesforce);
                    data.append("sfRecordToRelate", sfRecordToRelate);
                    data.append("inputSource", fileAttributeName)
                    for (var x = 0; x < files.length; x++) {
                        fileName = files[x].name;
                        data.append("file" + x, files[x]);
                        if (((files[x].size / 1024) / 1024) > window.maxFileLengthMBForm) {
                            validFile = false;
                        }
                    }

                    if (validFile) {
                        var xhr = $.ajax({
                            type: "POST",
                            url: urlSite + "/ARS/UploadFile",
                            contentType: false,
                            processData: false,
                            data: data
                        }).done(function (data) {
                            fileUrl = '';
                            var jsonResult = JSON.parse(data);
                            if (jsonResult.status == '200') {
                                if (jsonResult.Urls != "" && jsonResult.Urls != null) {

                                    jsonResult.Urls.forEach(function (item) {
                                        if (item.fileUrl != '' && item.fileUrl != null) {
                                            if (fileUrl == '') {
                                                fileUrl = item.fileUrl;
                                            }
                                            else {
                                                fileUrl = fileUrl + ',' + item.fileUrl;
                                            }
                                        }
                                    });
                                }
                            } else {
                                isThereFileError = true;
                                Swal.fire({
                                    title: "",
                                    icon: "error",
                                    text: jsonResult.message,
                                    confirmButtonText: "Ok",
                                });
                            }
                            var name = f.name.substring(0, f.name.indexOf('['));
                            formForm[name].value = fileUrl;
                            if ((isCopyTo === true || isCopyTo === 'true')
                                && copyToField !== null && copyToField !== undefined && copyToField !== '') {
                                if (formForm[copyToField] !== null && formForm[copyToField] !== undefined) {
                                    formForm[copyToField].value = fileUrl;
                                }
                            }


                            return false;
                        });

                        xhrs.push(xhr);
                    }
                    else {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: translation.file_exceeds_size_detail.replaceAll("{FileLength}", window.maxFileLengthMBForm).replaceAll("{FileName}", fileName).replaceAll("{FieldName}", labelToDisplay),
                            confirmButtonText: "Ok",
                        });
                    }

                } else {
                    var name = f.name.substring(0, f.name.indexOf('['));
                    formForm[name].value = fileUrl;
                    undCounter = undCounter + 1;
                }
            } else {
                if (fileUploads[i].getAttribute('data-removed-file')) {
                    var name = f.name.substring(0, f.name.indexOf('['));
                    formForm[name].value = '*remove*';
                }

                //Validating if form is compliance
                if (_form.hasClass("isComplianceForm")) {
                    var name = f.name.substring(0, f.name.indexOf('['));
                    var url_saved = "";
                    if (_form.find("input[name='" + name + '_url_file' + "']").length > 0) {
                        url_saved = _form.find("input[name='" + name + '_url_file' + "']").val();
                    }
                    formForm[name].value = url_saved;
                }
            }
        });

        $.each(signaturePads, function (index, f) {
            var self = $(this);
            var xhr = send_canvas_signature(self, formForm);
            xhrs.push(xhr);
        });

        if (validFile) {
            $.when.apply($, xhrs).done(function () {
                undCounter = 0;
                if (isThereFileError === false) {
                    if (self.closest('.formBlock.llamapi-registration-form').length > 0) {

                        if (allowRegistrationSubmission === true) {
                            submit_form_registration_in_ars(self, formForm);
                        }

                    } else {
                        submit_form(self, formForm, hasPaymentComponent, null);
                    }
                } else {
                    self.closest('.formBlock').find('.processing_screen').hide();
                    self.removeAttr('disabled');
                    self.siblings('img').first().css('display', 'none');
                }
            });

            if (undCounter > 0) {

                if (self.closest('.formBlock.llamapi-registration-form').length > 0) {
                    if (allowRegistrationSubmission == true) {
                        submit_form_registration_in_ars(self, formForm);
                    }
                }
                else {
                    submit_form(self, formForm, hasPaymentComponent, null);
                }
            }
        }
        else {

            self.closest('.formBlock').find('.processing_screen').hide();
            self.removeAttr('disabled');
            self.siblings('img').first().css('display', 'none');
        }
    }
    else {
        if (self.closest('.formBlock.llamapi-registration-form').length > 0) {
            if (allowRegistrationSubmission == true) {
                submit_form_registration_in_ars(self, formForm);
            }
        }
        else {
            if (allowRegistrationSubmission == true) {
                submit_form(self, formForm, hasPaymentComponent, null);
            }
        }
    }

}

function has_payment_component(paymentComponent) {

    var hasPaymentComponent = false;

    if (paymentComponent !== null && paymentComponent !== undefined && paymentComponent.length > 0) {
        if (paymentComponent.find('input[name="prefer_not_donate"]').length > 0) {
            hasPaymentComponent = false;
            if (paymentComponent.find('input[name="prefer_not_donate"]').is(':checked') === false) {
                hasPaymentComponent = true;
            }

        } else {
            hasPaymentComponent = true;
        }
    }

    return hasPaymentComponent;
}

function is_needed_verification_code(self, formForm, _form, hasPaymentComponent, isRegistrationForm, skip_submit_action, urlFromClick) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    var isNeededVerificationCode = false;
    var newEmail = undefined;
    var elementEmailId = get_id_email_input(self);
    if (elementEmailId !== undefined) {
        newEmail = self.closest('.formBlock').find('input[name="' + elementEmailId + '[value]"]').val();
        newEmail = newEmail.trim().toLowerCase();
    }

    if (skip_submit_action === undefined) {
        skip_submit_action = false;
    }

    if (newEmail !== undefined) {
        var currentUserEmail = self.closest('.formBlock').find('input#currentuseremail').val();
        if (isRegistrationForm === true || newEmail !== currentUserEmail) {
            isNeededVerificationCode = true;

            var contactName = get_contact_name_from_special_form(self);

            var tokenValue = "";
            var tokenElement = self.closest('.formBlock').find('input#verificationtoken');
            var userIdToken = self.closest('.formBlock').find('input#user_token_id').val();

            if (tokenElement !== undefined) {
                tokenValue = tokenElement.val();

                if (tokenValue === undefined)
                    tokenValue = "";
            }

            var postData = undefined;
            var pathService = "user/VerifyChangeEmail";

            var firstFormData = null;
            var siteId = self.closest('.formBlock').find('input[name="siteReference"]').val();

            if (USE_NEW_VERIFICATION_CODE_FLOW == 1) {
                // Is needed add the current form data
                prepare_form_submission(self, formForm, _form, hasPaymentComponent, false)

                let formId = self.closest('.formBlock').find('form.form-component').prop('id');

                firstFormData = prepare_first_page_vol_form_data_llamapi(formId);

                _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, firstFormData);

                firstFormData = JSON.stringify(firstFormData)


            }

            if (isRegistrationForm === false) {
                postData = { oldEmail: currentUserEmail, newEmail: newEmail, contactName: contactName, token: tokenValue };
            } else {
                pathService = "user/VerifyNewEmail";
                postData = { email: newEmail, token: tokenValue, verificationCode: '', contactName: contactName, userIdToken: userIdToken, internalData: firstFormData }
            }

            if ($('label#' + elementEmailId + '-info').is(':visible') === false) {
                $('label#' + elementEmailId + '-info').show();
            }


            $.ajax({
                method: "POST",
                url: urlSite + pathService,
                data: postData,
                beforeSend: function () {
                    self.closest('.formBlock').find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                if (jsonResult.status === "ok") {
                    if (jsonResult.requireCode === true) {
                        if (jsonResult.verificationCodeInAddtionalPage == true) {
                            remove_form_restriction(_form);
                            window.location.href = urlSite + 'verification-code-step?userverification=' + jsonResult.hash;
                        } else {
                            self.closest('.formBlock').find('#' + elementEmailId).addClass('custom-disabled-opacity');
                            GetVerificationCode(jsonResult.token, self.closest('.formBlock'));
                            self.closest('.submit-group').hide();
                            if (self.hasClass('resend-code') === true) {
                                self.next('.small-check-mark').css('display', 'inline-block');
                                tokenElement.val(jsonResult.token);
                            }
                        }
                    } else {
                        if (self.hasClass('resend-code') === false)
                            remove_form_restriction(_form, '9');

                        if (skip_submit_action === false) {
                            prepare_form_submission(self, formForm, _form, hasPaymentComponent)
                        } else {
                            process_final_submmit_llama_ars_registration(_form, formForm, siteId, urlSite, urlFromClick);
                            isNeededVerificationCode = false;
                        }
                    }

                } else if (jsonResult.status === "error" && jsonResult.code === 409) {
                    Swal.fire({
                        title: window.translation.error,
                        text: jsonResult.message,
                        icon: "error",
                        closeOnConfirm: true
                    });
                    self.closest('.formBlock').find('img.spinner').hide();
                    if (self.closest('.formBlock').find('.actions_branch_logic .next_option').length > 0) {
                        self.closest('.formBlock').find('.actions_branch_logic .next_option a.button').removeAttr('disabled');
                        self.closest('.formBlock').find('.actions_branch_logic .next_option a.button').show();
                    } else {
                        self.closest('.formBlock').find('a.submit-button').removeAttr('disabled');
                    }



                } else if (jsonResult.status === "error" && jsonResult.code !== 500) {

                    if (self.hasClass('resend-code') === false) {
                        var name = elementEmailId;//get_id_email_input(self);
                        var fieldIdentifier = 'label[id="' + name + '-error"]';
                        var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + jsonResult.message + '</label>';
                        if ($('#' + name).parents('.fields-section').find(fieldIdentifier).length > 0) {
                            $('#' + name).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                        } else {
                            $('#' + name).parents(".fields-section").append(label);
                        }

                        if ($('label#' + name + '-info').length > 0) {
                            $('label#' + name + '-info').hide();
                        }

                        var isRegistrationFormValue = self.closest('.formBlock').find('input[name="isRegistrationFormWithArs"]').val();
                        if (isRegistrationFormValue === "true" || isRegistrationFormValue === "True") {
                            // to enabled next button handled in ARS
                            self.closest('.formBlock').find('.next_option a.primary-button').show();
                        }
                    } else {
                        var name = 'verificationCode';
                        var fieldIdentifier = 'label[id="' + name + '-error"]';
                        var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + jsonResult.message + '</label>';
                        if ($('#' + name).parents('.fields-section').find(fieldIdentifier).length > 0) {
                            $('#' + name).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                        } else {
                            $('#' + name).parents(".fields-section").append(label);
                        }

                        if ($('label#' + name + '-info').length > 0) {
                            $('label#' + name + '-info').hide();
                        }
                    }

                    if (jsonResult.blockResendCode === true) {
                        var resendCodeButton = self.closest('.formBlock').find('.verification-code-section .resend-code-section a.resend-code');
                        if (resendCodeButton !== undefined) {
                            {
                                resendCodeButton.prop('disabled', true);
                                resendCodeButton.addClass('custom-disabled-opacity')
                            }
                        }
                    }
                }
                else {
                    Swal.fire({
                        title: window.translation.warning,
                        text: jsonResult.message,
                        icon: "error",
                        closeOnConfirm: true
                    });
                    self.closest('.formBlock').find('img.spinner').hide();
                    if (self.closest('.formBlock').find('.actions_branch_logic .next_option').length > 0) {
                        self.closest('.formBlock').find('.actions_branch_logic .next_option a.button').removeAttr('disabled');
                        self.closest('.formBlock').find('.actions_branch_logic .next_option a.button').show();
                    } else {
                        self.closest('.formBlock').find('a.submit-button').removeAttr('disabled');
                    }

                }

            }).always(function () {
                self.closest('.formBlock').find('.processing_screen').hide();
            });
        }
    }
    return isNeededVerificationCode;

}

function submit_form_registration_in_ars(self, postData) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    var currentForm = self.closest('.formBlock.llamapi-registration-form').find('form');
    var link = currentForm.find('.actions_branch_logic .next_option a.button');
    urlFromClick = link.attr('data-current-url');
    var branchLogicInputRedirect = self.closest('.formBlock.llamapi-registration-form').find('input#branch-logic-redirect');


    var redirectUrl = currentForm.find('input[name="redirect_url"]').val();
    var siteId = self.closest('.formBlock.llamapi-registration-form').find('.actions_branch_logic .next_option a.primary-button').attr('data-connection');

    if (branchLogicInputRedirect.val() != '' && branchLogicInputRedirect.val() != null && branchLogicInputRedirect.val() != redirectUrl) {
        var dataToStore = {};
        dataToStore["registrationData"] = postData;
        dataToStore["connection-id"] = siteId;
        datatable_add_cells_data_for_mobile_headers
        dataToStore['back-branch-logic'] = [];
        var urlObject = {};
        urlObject.urlCurrent = urlSite + branchLogicInputRedirect.val();
        urlObject.urlBack = urlFromClick;
        dataToStore['back-branch-logic'].push(urlObject);
        _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, dataToStore);
        window.location.href = urlSite + branchLogicInputRedirect.val();

    } else {
        submit_form(self, postData, false);
    }

}

function validate_information_for_registration_forms(self) {
    if (self.find('.actions_branch_logic .next_option a').length > 0) {
        var siteId = self.find('.actions_branch_logic .next_option a').attr('data-connection');
        var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
        if (formData !== null && formData !== undefined && formData !== '') {
            if (formData["connection-id"] !== null && formData["connection-id"] !== undefined && formData["connection-id"] == siteId) {
                var registrationData = formData["registrationData"];
                let verificationToken = formData["verificationtoken"] !== undefined ? formData["verificationtoken"] : null;
                $.each(registrationData, function (key, value) {
                    if (value != '') {
                        if (value['value'] !== null && value['value'] !== undefined && value['value'] !== '') {
                            self.find('input[name="' + key + '[value]"]').val(value['value']);
                        }
                        else if (key === 'verificationCode') {
                            self.find('input[name="last_code_verification"]').val(value);
                        }
                        else if (key === 'verificationtoken') {
                            self.find('input[name="last_code_token"]').val(value);
                        }
                    }
                });

            }
        }
    }

}

function is_necessary_ask_code(self, formForm) {
    var elementEmailId = get_id_email_input(self);
    var newEmail = '';
    if (elementEmailId !== undefined) {
        newEmail = self.closest('.formBlock').find('input[name="' + elementEmailId + '[value]"]').val();
        newEmail = newEmail.trim().toLowerCase();
    }

    if (newEmail !== '') {
        var lastEmail = formForm['last_email_selected'];
        if (newEmail != lastEmail) {
            return true;
        }
    }

    return false;
}


function validateSPForm(formObject) {
    var _form = formObject.find('.formBlock');
    var select = formObject.find('.formBlock').find('select[data-required="true"]');
    var textboxes = formObject.find('.formBlock').find('input[type="text"][data-required="true"]');
    var numbers = formObject.find('.formBlock').find('input[type="number"][data-required="true"]');
    var checkboxes = formObject.find('.formBlock').find('input[type="checkbox"][data-required="true"]');
    var radioGroups = formObject.find('.formBlock').find('.input-group-radiobutton');
    var textareaRichText = formObject.find('.formBlock').find('textarea.rich_text');
    var hiddenFields = formObject.find('.formBlock').find('input[type="hidden"]');
    var groupCheckbox = formObject.find('.formBlock').find('.input-group-checkboxes');
    //var dateFields = formObject.find('.formBlock').find('input.date-picker-input');
    var dateFields = formObject.find('.formBlock').find('input.date-picker-form-builder');
    var requireTextarea = formObject.find('.formBlock').find('textarea[data-required="true"]');
    var scaleRatings = formObject.find('.formBlock').find('.rating-class-section-scale');
    var inputFiles = formObject.find('.formBlock').find('input[type="file"][data-required="true"]');

    $('label.sp-form-error').remove();
    $('label.validation-message').hide();

    groupCheckbox.each(function () {
        var value = '';
        var isMissingValue = false;
        var isHidden = $(this).closest('.row').hasClass('is-hidden');
        if ($(this).find('input.input-group-checkbox:checked').length > 0) {
            value = 'selected';
        }

        var isRequired = $(this).data('required');
        //var fromConditional = ($(this).attr("data-conditional") != undefined && $(this).attr("data-conditional") != null && $(this).attr("data-conditional") == 'true' ? true : false);

        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            if (isRequired == true &&
                !isHidden &&
                (value == undefined || value == null
                    || (value != null && value != undefined && value.trim() == ''))) {
                $(this).find('input.input-group-checkbox').addClass('missing-required');

                var name = $(this).attr('data-id-name');
                var labelIdSelector = 'label[id="' + name + '-error"]';
                if ($(this).find(labelIdSelector).length > 0) {
                    $(this).find(labelIdSelector).remove();
                }
                var label = '<label id="' + name + '-error-required" class="sp-form-error error-required" for="' + name + '" style="display:block;">This field is required</label>';
                $(this).append(label);

                valid = false;
                isMissingValue = true;
                $('input.input-group-checkbox.missing-required').on('change', function () {
                    var name = $(this).parents(".input-group-checkboxes").attr('data-id-name');
                    var fieldIdentifier = 'label[id="' + name + '-error-required"]';
                    if ($(this).parents(".input-group-checkboxes").find(fieldIdentifier).length > 0) {
                        $(this).parents(".input-group-checkboxes").find(fieldIdentifier).remove();
                        $(this).parents(".input-group-checkboxes input.input-group-checkbox.missing-required").removeClass('missing-required');
                    }
                });
            }

            var minOptions = $(this).attr('data-min-options');
            var maxOptions = $(this).attr('data-max-options');
            if (!isHidden && !isMissingValue && minOptions && maxOptions) {
                //-- Min and max validation for Multiple Select displayed as checkbox
                var totalSelected = $(this).find('input.input-group-checkbox:checked').length;
                var errorMessage = "";

                if (minOptions && maxOptions && !(minOptions == 0 && maxOptions == 0)) {
                    if (totalSelected !== minOptions && +minOptions === +maxOptions) {
                        errorMessage = translation.multiselect_only_one_option.replaceAll('[minNumber]', minOptions);

                    } else if (totalSelected < minOptions && +minOptions && +maxOptions == 0) {
                        errorMessage = translation.multiselect_min_option.replaceAll('[minNumber]', minOptions);

                    } else if (totalSelected > maxOptions && +minOptions == 0 && +maxOptions) {
                        errorMessage = translation.multiselect_max_option.replaceAll('[maxNumber]', maxOptions);

                    } else if (+minOptions != 0 && +maxOptions != 0 && (totalSelected > maxOptions || totalSelected < minOptions)) {
                        errorMessage = translation.multiselect_between_option.replaceAll('[minNumber]', minOptions);
                        errorMessage = errorMessage.replaceAll('[maxNumber]', maxOptions);

                    }

                    if (errorMessage !== "") {
                        valid = false;
                        $(this).find('input.input-group-checkbox').addClass('min-max-missing');
                        var name = $(this).attr('data-id-name');
                        var labelIdentifier = 'label[id="' + name + '-error"]';
                        if ($(this).find(labelIdentifier).length > 0) {
                            $(this).find(labelIdentifier).remove();
                        }
                        var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + errorMessage + '</label>';
                        $(this).append(label);


                        $('input.input-group-checkbox.min-max-missing').on('change', function () {

                            var name = $(this).parents(".input-group-checkboxes").attr('data-id-name');
                            var minOptionsCheck = $(this).parents(".input-group-checkboxes").attr('data-min-options');
                            var maxOptionsCheck = $(this).parents(".input-group-checkboxes").attr('data-max-options');
                            var totalCheckSelected = $(this).parents(".input-group-checkboxes").find('input.input-group-checkbox:checked').length;
                            var labelCheckId = 'label[id="' + name + '-error"]';
                            if ($(this).parents(".input-group-checkboxes").find(labelCheckId).length > 0 &&
                                (totalCheckSelected >= minOptionsCheck && totalCheckSelected <= maxOptionsCheck
                                    || totalCheckSelected >= minOptionsCheck && maxOptionsCheck == 0
                                    || minOptionsCheck == 0 && totalCheckSelected <= maxOptionsCheck)
                            ) {

                                $(this).parents(".input-group-checkboxes").find(labelCheckId).remove();
                                $(this).parents(".input-group-checkboxes input.min-max-missing").removeClass('min-max-missing');
                            }
                        });

                    }
                }
            }
        }
    });

    checkboxes.each(function () {
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            if ($(this).prop('checked') === false) {
                var content = $(this).closest('div.content');
                var validation = content.find('label.validation-message');
                var error_label = content.find('.input-group-checkbox label.error');
                setTimeout(function () {
                    error_label.remove();
                }, 1000);
                validation.css('display', 'block');
                topPage = content.offset().top;
                valid = false;
            }
        }
    });

    dateFields.each(function () {
        var name = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
        if (isSectionHidden === false) {
            if ($('input[name="' + name + '"]').length > 0) {
                //$('input[name="' + name + '"]').fdatepicker('remove');
                //customDateConfiguration(name.replace('[value]', ''));
                $('input[name="' + name + '"]').trigger('changeDate');
            }
        }
    });

    dateFields.each(function () {
        //if (valid) {
        var endDateMsg = $(this).data('end-date-msg');
        var startDateMsg = $(this).data('start-date-msg');
        var targetDateMsg = $(this).data('target-date-msg');
        var endDateValue = $(this).data('end-date');
        var startDateValue = $(this).data('start-date');
        var targetDateValue = $(this).data('target-date');
        var dataRequired = $(this).data('required');
        //var dataRequired = $(this).data('data-required');
        var name = $(this).attr('name');
        var currentValid = true;
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
        var valueField = $(this).val();
        if (isSectionHidden === false && (dataRequired == "true" || dataRequired == true)) {

            var currentValue = ($(this).val() != '')
                ? ($('input[name="' + name + '"]').length > 0)
                    ? $('input[name="' + name + '"]').fdatepicker().data('datepicker').date.valueOf()
                    : null
                : null;
            /*
            var currentValue = null;
            if (valueField != '') {
                if ($('input[name="' + name + '"]').length > 0) {
                    var value_dfate = $('input[name="' + name + '"]').val();
                    var dateformat = window.MomentDateFormat;
                    var momentDate = moment(value_dfate, dateformat);
                    currentValue = momentDate.valueOf();
                }
            }
            */

            if (currentValue != null) {
                if (endDateValue != null && endDateValue != undefined && endDateMsg != null && endDateMsg != undefined) {
                    if (currentValue > endDateValue && !$(this).parents(".fields-section").find('label.error').is(':visible')) {
                        var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + endDateMsg + '</label>';
                        $(this).parents(".fields-section").append(label);
                        valid = false;
                        currentValid = false;
                    }
                }
                else if (startDateMsg != null && startDateMsg != undefined && startDateValue != null && startDateValue != undefined) {
                    if (currentValue < startDateValue && !$(this).parents(".fields-section").find('label.error').is(':visible')) {
                        var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + startDateMsg + '</label>';
                        $(this).parents(".fields-section").append(label);
                        valid = false;
                        currentValid = false;
                    }
                }
                else if (targetDateMsg != null && targetDateMsg != undefined && targetDateValue != null && targetDateValue != undefined) {
                    if (!(equalDates(new Date(currentValue), new Date(targetDateValue))) && !$(this).parents(".fields-section").find('label.error').is(':visible')) {
                        var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + targetDateMsg + '</label>';
                        $(this).parents(".fields-section").append(label);
                        valid = false;
                        currentValid = false;
                    }
                }
            } else {
                if ($(this).parents('.fields-section').find('label.error').length === 0) {
                    var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + window.translation.field_required + '</label>';
                    $(this).parents(".fields-section").append(label);

                }
                valid = false;
                currentValid = false;

            }

        }

        if (currentValid === true)
            $(this).removeClass('error');
        //}
    });


    scaleRatings.each(function () {
        var firstRadio = $(this).find('input[type="radio"][data-required="true"]').first();
        var name = firstRadio.attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
        if (isSectionHidden === false) {
            var radios = $(this).find('input[name="' + name + '"][data-required="true"]');
            if (radios.attr('data-required') == 'true' && radios.is(':checked') === false) {
                var content = $(this).parent('.box');
                var validation = content.find('label.validation-message');
                validation.css('display', 'block');
                topPage = firstRadio.offset().top;
                valid = false;
            }
        }

    });

    radioGroups.each(function () {
        var firstRadio = $(this).find('input[type="radio"][data-required="true"]').first();
        var name = firstRadio.attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
        if (isSectionHidden === false) {
            var radios = $(this).find('input[name="' + name + '"][data-required="true"]');
            if (radios.attr('data-required') == 'true' && radios.is(':checked') === false) {
                var content = $(this)
                var validation = content.find('label.validation-message');
                validation.css('display', 'block');
                topPage = firstRadio.offset().top;
                valid = false;
            }
        }
    });


    textareaRichText.each(function () {
        var field = $(this);
        var parentDisplay = field.parents('.rich_text').css('display')

        if (parentDisplay !== 'none') {
            var idField = field.data('field-id');
            var textRichText = CKEDITOR.instances[idField + '[value]'].getData();
            field.val(textRichText);
        }
    });


    requireTextarea.each(function () {
        var value = $(this).val();
        var name = $(this).attr('name')
        var isSectionHidden = _form.find('.row.is-hidden textarea[name="' + name + '"]').length > 0;
        if (isSectionHidden === false) {
            if ((value == undefined || value == null
                || (value != null && value != undefined && value.trim() == ''))) {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');
                var name = $(this).attr('name');
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".fields-section").append(label);
                }
                valid = false;
            }
            else {
                $(this).removeClass('error');
            }
        }
    });


    hiddenFields.each(function () {
        var value = $(this).val();
        if (value.indexOf('validation-dates:') !== -1) {
            if (value.indexOf(':') !== -1) {
                var values = value.split(':');

                if (values.length > 1) {
                    var condition = values[1];
                    var items = condition.split(',');
                    if (items.length == 5) {
                        var valueField1 = self.closest('.formBlock').find('input[name="' + items[0] + '[value]"]').val();
                        var valueField2 = self.closest('.formBlock').find('input[name="' + items[1] + '[value]"]').val();
                        var criteria = items[2];
                        var positionValue = items[3]
                        var separator = items[4];
                        if (criteria == "sameyear" && valueField1.indexOf(separator) !== -1 && valueField2.indexOf(separator) !== -1) {
                            var valuesDate1 = valueField1.split(separator);
                            var valuesDate2 = valueField2.split(separator);
                            if (valuesDate1.length > positionValue && valuesDate2.length > positionValue) {
                                if (valuesDate1[positionValue] !== valuesDate2[positionValue]) {
                                    valid = false;
                                    Swal.fire({
                                        title: 'Error',
                                        icon: 'error',
                                        text: window.translation.should_have_same_year,
                                        confirmButtonText: 'Ok',
                                        closeOnConfirm: true
                                    });

                                }
                            }
                        }
                    }

                }
            }
        }
    });


    select.each(function () {
        var value = $(this).val();
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden select[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            var isMultiple = $(this).attr('multiple') === 'multiple';
            if ((value == undefined || value == null
                || (value != null && value != undefined && !isMultiple && value.trim() == ''))) {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');

                var name = $(this).attr('name');

                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').first().find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').first().find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".input-group-select").first().append(label);
                }
                valid = false;
            }
            else if (isMultiple && (!Array.isArray(value) || (Array.isArray(value) && value.length == 0))) {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');

                var name = $(this).attr('name');

                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').first().find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').first().find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".fields-section").first().append(label);
                }
                valid = false;
            }
            else {
                $(this).removeClass('error');
            }
        }
    });


    inputFiles.each(function () {
        var value = $(this).val();
        var nameField = $(this).attr('name');
        var typeInput = $(this).attr('type');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
        var section = $(this).parents('.fields-section').first();

        if (isSectionHidden === false) {
            if (
                typeInput != 'file' &&
                (value == undefined ||
                    value == null ||
                    (value != null && value != undefined && value.trim() == '')
                )
                ||
                typeInput == 'file' && section.find('.file-upload-name a').length==0
            )
            {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');
                var name = $(this).attr('name');
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').first().find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').first().find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".fields-section").first().append(label);
                }
                valid = false;

            }
            else { 
                $(this).removeClass('error');
            }
        }
    });

    textboxes.each(function () {
        var value = $(this).val();
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            if ((value == undefined || value == null
                || (value != null && value != undefined && value.trim() == ''))) {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');
                var name = $(this).attr('name');
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').first().find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').first().find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".fields-section").first().append(label);
                }
                valid = false;
            } else {
                $(this).removeClass('error');
            }
        }
    });

    numbers.each(function () {
        var value = $(this).val();
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            if ((value == undefined || value == null
                || (value != null && value != undefined && value.trim() == ''))) {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');
                var name = $(this).attr('name');
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="sp-form-error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').first().find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').first().find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".fields-section").first().append(label);
                }
                valid = false;
            }
            else {
                $(this).removeClass('error');
            }
        }
    });



}


function validate_autonumeric_fields(self) {
    self.find('input[type="text"].field-with-auto-number').each(function () {
        var currentField = $(this);
        var id = currentField.attr('data-id');
        var decimalPlaces = currentField.attr('data-decimal-places');
        if (decimalPlaces === null || decimalPlaces === undefined || decimalPlaces === '')
            decimalPlaces = '4';
        var minimumValue = '';
        var maximumValue = '';
        var minValue = currentField.attr('data-minvalue');
        var maxValue = currentField.attr('data-maxvalue');
        if (minValue !== null && minValue != undefined && minValue !== '') {
            minimumValue = minValue;
        }
        if (maxValue !== null && maxValue != undefined && maxValue !== '') {
            maximumValue = maxValue;
        }
        var selector = 'input[data-id="' + id + '"]';

        var options = {};
        options.digitGroupSeparator = window.digitGroupSeparator;
        options.decimalCharacter = window.decimalCharacter;
        options.roundingMethod = 'U';
        options.leadingZero = 'allow';
        if (minimumValue !== undefined && minimumValue !== null && minimumValue !== '') {
            options.minimumValue = minimumValue;
        }

        if (maximumValue !== undefined && maximumValue !== null && maximumValue !== '') {
            options.maximumValue = maximumValue;
        }

        if ((minimumValue !== undefined && minimumValue !== null && minimumValue !== '') || (maximumValue !== undefined && maximumValue !== null && maximumValue !== '')) {
            options.overrideMinMaxLimits = 'invalid';
        }
        options.decimalPlaces = decimalPlaces;

        //var currentFieldNumber = new AutoNumeric(selector, options);
        var element = document.querySelector(selector);
        var currentFieldNumber;
        if (AutoNumeric.isManagedByAutoNumeric(element)) {
            currentFieldNumber = AutoNumeric.getAutoNumericElement(element);
            currentFieldNumber.update(options);
        } else {
            currentFieldNumber = new AutoNumeric(selector, options);
        }

    });
}


function validateNumbers(input, decimalSeparator, decimalPlaces) {
    input = input[0];
    let value = input.value;
    value = value.trim();
    if (decimalPlaces == 0) {
        value = value.replace(/[^0-9]/g, '');
    } else {
        value = value.replace(new RegExp(`[^0-9\\${decimalSeparator}]`, 'g'), '');
        const parts = value.split(decimalSeparator);
        if (parts.length > 1 && parts[1] != '') {
            parts[1] = parts[1].substring(0, decimalPlaces);
            value = parts[0] + decimalSeparator + parts[1];
        }
    }
    input.value = value;
}
function init_timepicker_form_builder(self) {
    
    var tFormat = window.MomentTimeFormat;
    if (tFormat !== null && tFormat !== undefined)
        tFormat = tFormat.replace('A', 'p');

    var currentDatetimeAMPM = moment().format(window.MomentTimeFormat);

    self.find('input.timepicker.fromformbuilder').each(function () {
        $(this).parent().addClass('timepicker-container');
        var params = {
            timeFormat: tFormat,
            interval: 15,
            dropdown: true,
            scrollbar: true,
            dynamic: false,
            change: function (time) {
                var element = $(this), text;
                var timepicker = element.timepicker();
                text = 'Selected time is: ' + timepicker.format(time);
                var idField = element.attr('id');
                idField = idField.replace('[timeValue]', '');
                verifyDateTimeRules(idField, element);


            }
        };
        var setCurrentTime = $(this).data('assign-current-time');
        if (setCurrentTime === true || setCurrentTime === 'true') {
            $(this).timepicker(params);
            $(this).timepicker('setTime', currentDatetimeAMPM);
        }
        else
            $(this).timepicker(params);
    });
}

function LLSHOC_DependentSelect_FormLoadValues() {

    //This function is for LLSHOC to resolve issues related to Dependent SF Fields
    //not showing the appropiated values on FormLoad
    try {
		if ($('body').hasClass('hoc-volunteer-system')) {


            let dependentSelect = $('select[data-controller-name][data-type="dropdown"][type="select"][data-isdepedent="True"]');
            if (dependentSelect.length > 0) {
                dependentSelect.each(function (index, element) {

                    let masterFieldName = $(element).data('controller-name');
                    if (masterFieldName !== null && masterFieldName !== '') {

                        let masterFieldHiddenInput = $('input.sf_field[value="' + masterFieldName + '"]');
                        let fieldSectionId = masterFieldHiddenInput.attr('name').replace(/\[sf_field\]/g, '');
                        if (masterFieldHiddenInput.length > 0 && fieldSectionId !== null && fieldSectionId !== '') {

                            fieldSectionId = '.field-section-' + fieldSectionId;
                            let masterSelectSection = masterFieldHiddenInput.closest(fieldSectionId);
                            let masterSelect = masterSelectSection.find('select');

                            if (masterSelect !== null && masterSelect !== undefined && masterSelect !== '') {

                                masterSelect.trigger('change');
                            }
                        }
                    }
                });
            }
        }
    } catch (error) {

        console.log(error);
    }
}//End:LLSHOC_DependentSelect_FormLoadValues
function add_event_for_add_more_button() {
    if ($('.formBlock.blockContainer form .normal-fields .add-more-button').length > 0) {

        //Event to handle the action of removing items that already were added
        $('.formBlock.blockContainer form .summary-record-multirecord').on('click', 'a.multi-record-remove', function () {
            try {
                let parentItem = $(this).parents('tbody');
                let index = parentItem.find('a.multi-record-remove').index($(this));
                if (index > -1) {
                    //take care of logic of removing data in the respective multivaleus fields
                    let parentForm = $(this).parents('.formBlock.blockContainer form');
                    parentForm.find("[name$='[value]'], [name$='[value][]']").each(function () {
                        let isMultiSelect = false;

                        if ($(this).prop("type") == "select-multiple" && $(this).prop("multiple") == true)
                            isMultiSelect = true;

                        let originalName = $(this).prop("name");
                        if (isMultiSelect)
                            originalName = originalName.replace("[]", "");

                        let fieldNameParts = extract_form_field_name(originalName)
                        if (fieldNameParts != null) {
                            let fieldId = fieldNameParts[0];

                            if (!fieldId.startsWith('default-value-token-') && !fieldId.startsWith('populate_')) {

                                let multivalueSelector = fieldId + "[multivalue]";
                                let multivalueField = parentForm.find('[name="' + multivalueSelector + '"]');
                                let fieldType = parentForm.find('[name="' + fieldId + '[type]"]').val();

                                if (multivalueField !== undefined) {
                                    let mvalue = multivalueField.val();
                                    let arrayValue = [];
                                    if (mvalue !== '' && mvalue !== undefined && mvalue !== null) {
                                        arrayValue = JSON.parse(mvalue);

                                        arrayValue.splice(index,1);
                                    }

                                    multivalueField.val(JSON.stringify(arrayValue));
                                }
                            }
                        }
                    });
                    //end of logic
                    parentItem.find('tr:not(.no-records)').eq(index).remove();



                    let totalChildren = parentItem.find('tr:not(.no-records)').length;
                    if (totalChildren <= 0) {
                        //parentItem.parents('.summary-record-multirecord').addClass("hide");
                        parentItem.parents('.formBlock.blockContainer form').find('.submit-group a.button.submit-button').addClass('custom-disabled-opacity');
                        parentItem.find('tr.no-records').removeClass('hide');
                    }
                }
            } catch (error) {
                console.log(error);
            }
            
        });

        //Event to handle the action of adding a record
        $('.formBlock.blockContainer form .normal-fields .add-more-button').on('click', function () {
            try
            {
                let isValid = is_validate_form_builder_submit($(this));

                if (isValid) {
                    let parentForm = $(this).parents('.formBlock.blockContainer form');

                    if (parentForm !== undefined) {
                        let isMultiRecordForm = parentForm.find('[name="multivalueFeature"]').val();

                        if (isMultiRecordForm === "true") {
                            let formId = parentForm.prop("id");
                            let totalElements = parentForm.find("[name$='[value]']").length;
                            let tblBody = "<tr><td><a class='multi-record-remove'>" + window.translation.remove + "</a></td>";
                            let counterColumns = 1;
                            parentForm.find("[name$='[value]'], [name$='[value][]']").each(function () {

                                //console.log('*** ' + $(this).prop("name") + ' *type ' + $(this).prop("type") + ' *multiple ' + $(this).prop("multiple"))
                                let isMultiSelect = false;
                                let isCalculated = false;
                                let fieldType = $(this).prop("type");
                                if (fieldType == "select-multiple" && $(this).prop("multiple") == true)
                                    isMultiSelect = true;
                                else {
                                    let typeCustom = $(this).data("typeCustom");
                                    if (typeCustom !== undefined && typeCustom == "calculate")
                                        isCalculated = true;
                                }

                                let originalName = $(this).prop("name");

                                if (isMultiSelect)
                                    originalName = originalName.replace("[]", "");

                                let fieldNameParts = extract_form_field_name(originalName)
                                //console.log('fieldnamePart ' + JSON.stringify(fieldNameParts) + ' isMultiSelect ' + isMultiSelect + ' isCalculated ' + isCalculated)
                                if (fieldNameParts != null) { 
                                    let fieldId = fieldNameParts[0];

                                    if (!fieldId.startsWith('default-value-token-') && !fieldId.startsWith('populate_')) {

                                        let multivalueSelector = fieldId + "[multivalue]";
                                        let multivalueField = parentForm.find('[name="' + multivalueSelector + '"]');
                                        let fieldType = parentForm.find('[name="' + fieldId + '[type]"]').val();
                                        let fieldValue = $(this).val();

                                        //console.log('isMultiSelect ' + isMultiSelect + ' selector ' + multivalueSelector + ' fieldValue ' + fieldValue)

                                        if (multivalueField !== undefined) {
                                            let mvalue = multivalueField.val();
                                            let arrayValue = [];

                                            if (fieldType == "checkbox" && $(this).is(":checked") && fieldValue == '')
                                                fieldValue = "true";

                                            if (mvalue == '' || mvalue == undefined || mvalue == null) {
                                                arrayValue.push(fieldValue);
                                            } else {
                                                arrayValue = JSON.parse(mvalue);
                                                arrayValue.push(fieldValue);
                                            }

                                            multivalueField.val(JSON.stringify(arrayValue));

                                        }
                                        if (fieldType !== "hidden")
                                            tblBody += "<td>" + fieldValue + "</td>";

                                        counterColumns++;
                                        $(this).val("");

                                        if (isMultiSelect) {
                                            $(this).multiselect('reload');
                                        } else if (isCalculated) {
                                            $(this).closest('.fields-section').find('span.result_calculate').html('&nbsp;');
                                        }

                                        if (fieldType == "hidden") {
                                            let defaultValueType = $(this).data("defaultValue");
                                            if (defaultValueType !== null && defaultValueType !== undefined)
                                                $(this).val(defaultValueType);
                                        }
                                    }
                                }
                            });

                            tblBody += "</tr>";
                            $('#summary-records-' + formId + ' tbody').append(tblBody);
                            $('#summary-records-' + formId + ' tbody tr.no-records').addClass('hide');

                            $(this).parents('.normal-fields').find('a.submit-button.custom-button').removeClass('custom-disabled-opacity');
                        }
                    }
                }
            } catch (error) {
                console.log(error);
            }

        });

        //Event to build table that contains first 5 fields 
        $('.formBlock.blockContainer form.form-component').each(function () {
            let currentForm = $(this);
            let tableHeader = "<thead><tr><td>Actions</td>";
            let counterHeader = 1;
            currentForm.find('.row-fields.normal-fields .internal-field-content:not(is-hidden) .label-section label').each(function () {
                tableHeader += "<td>" + $(this).html() + "</td>";
                counterHeader++;

            });
            tableHeader += "</tr></thead>";

            let formId = $(this).prop("id");

            $(tableHeader).insertBefore('#summary-records-' + formId + ' tbody');

            let norRecordsStructure = "<td colspan='" + counterHeader + "'>" + window.translation.no_records_added + "</td>"
            $('#summary-records-' + formId + ' tbody tr.no-records').append(norRecordsStructure);
        });
    }
}

function extract_form_field_name(value) {
    // Define a regular expression pattern to match the format "1935[xyz]"
    var pattern = /^(.*?)\[([a-zA-Z_\-]+)\]$/;

    // Use the regular expression to extract the parts before and inside "[xyz]"
    var match = pattern.exec(value);

    // If a match is found, return an array containing both parts
    if (match && match.length > 2) {
        return [match[1], '['+ match[2] + ']'];
    } else {
        // If no match is found or the input doesn't match the pattern, return null
        return null;
    }
}


function is_validate_form_builder_submit(self) {
    var isDisabled = self.attr('disabled');
    
    if (isDisabled) {
        return false;
    }
    var _formId = self.closest('.formBlock').data('form-id');
    var _form = self.closest('.formBlock').find('form#form-custom-' + _formId);
    var select = self.closest('.formBlock').find('select[data-required="true"]');
    var textboxes = self.closest('.formBlock').find('input[type="text"][data-required="true"]');
    var signatures = self.closest('.formBlock').find('input.signature[data-required="true"]');
    var checkboxes = self.closest('.formBlock').find('input[type="checkbox"][data-required="true"]');
    var radioGroups = self.closest('.formBlock').find('.input-group-radiobutton');
    var textareaRichText = self.closest('.formBlock').find('textarea.rich_text');
    var hiddenFields = self.closest('.formBlock').find('input[type="hidden"]');
    var groupCheckbox = self.closest('.formBlock').find('.input-group-checkboxes');
    var dateFields = self.closest('.formBlock').find('input.date-picker-form-builder');
    var dateCustomFields = self.closest('.formBlock').find('.form-builder-date-container input.inclusive-dates__input');
    var requireTextarea = self.closest('.formBlock').find('textarea[data-required="true"]');
    var requestVerificationTokens = self.closest('.formBlock').find('input[name="__RequestVerificationToken"]');
    var scaleRatings = self.closest('.formBlock').find('.rating-class-section-scale');

    var calculatefields = self.closest('.formBlock').find('input[data-type-custom="calculate"]');
    var isMultiLanguage = self.closest('.formBlock').find('input#enable-multi-language').val();
    var datalist = [];
    if (isMultiLanguage === "true") {
        idsMultilanguage = self.closest('.formBlock').find('input#ids-fields-with-multi-language').val();
        datalist = JSON.parse(idsMultilanguage);
    }


    var phoneFields = self.closest('.formBlock').find('input[type="tel"]');
    //Fixing the dialcode
    phoneFields.each(function () {
        var nameField = $(this).attr('name');
        var fieldId = nameField.replace('[value]', '');
        var dialCode = retrieveDialPhoneFromTheForm(fieldId, self);
        if (dialCode !== null) {
            self.closest('.formBlock').find('input[name="' + fieldId + '[phoneDial]"]').val(dialCode);
        }
    });

    //Apply event to validate confirmed texts
    validateConfirmedText(self);
    if (calculatefields.length > 0) {
        calculate_items();
    }

    //Apply event to assign to fields current datetime
    EventPopulateCurrentDatetimeSubmit(_form);
    var formForm = _form.serializeJSON();
    var valid = _form.valid();
    formForm['formId'] = _formId;
    formForm['save_complete_later'] = false;

    // CSRF Token
    if (requestVerificationTokens !== null) {
        requestVerificationTokens.each(function () {
            formForm['__RequestVerificationToken'] = $(this).val();
        });
    }

    textboxes.each(function () {
        var value = $(this).val();
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            var fromConditional = ($(this).attr("data-conditional") != undefined && $(this).attr("data-conditional") != null && $(this).attr("data-conditional") == 'true' ? true : false);
            if (fromConditional && (value == undefined || value == null
                || (value != null && value != undefined && value.trim() == ''))) {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');
                var name = $(this).attr('name');
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".fields-section").append(label);
                }
                valid = false;
            }
            else {
                var field = $(this);
                var idField = field.data('field-id');

                var idFieldSelector = idField + '[value]';
                var originalValue = formForm[idField];
                if (isMultiLanguage === "true") {
                    datalist.forEach(function (valueL) {
                        if (valueL == idField) {
                            idFieldSelector = field.attr('id');
                            value = _form.find('input[id="' + idFieldSelector + '"]').val();
                            idFieldSelector = idFieldSelector.replace('[value]', '_');
                            formForm[idFieldSelector] = { sf_field: originalValue.sf_field, sf_object: originalValue.sf_object, type: originalValue.type, value: value };
                        }
                    });
                }

            }
        }
    });

    calculatefields.each(function () {
        var $this = $(this);
        var idRequired = $this.attr('data-required');
        var value = parseFloat($this.val());
        var name = $this.attr('name');

        var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
        if (isSectionHidden === false)
        {
            let is_maximum_value_of_another_field = $this.siblings('input.is_maximum_value_of_another_field').val();
            let is_minimum_value_of_another_field = $this.siblings('input.is_minimum_value_of_another_field').val();
            let field_maximum_value = $this.siblings('input.field_maximum_value').val();
            let field_minimum_value = $this.siblings('input.field_minimum_value').val();
            let maxValue = null;
            if (is_maximum_value_of_another_field == 'True') {
                maxValue = parseFloat($this.closest('form').find('input[name="' + field_maximum_value + '[value]"]').val());
            } else {
                maxValue = parseFloat($this.attr('data-max-value'));
            }
            let minValue = null;
            if (is_minimum_value_of_another_field == 'True') {
                minValue = parseFloat($this.closest('form').find('input[name="' + field_minimum_value + '[value]"]').val());
            } else {
                minValue = parseFloat($this.attr('data-min-value'));
            }

            if (idRequired == 'true' && !isValidValue(value)) {
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".fields-section").append(label);
                }
                valid = false;
            } else if ((isValidValue(maxValue) || isValidValue(minValue)) && isValidValue(value)) {
                let hasError = false;
                if (isValidValue(minValue) && value < minValue) {
                    const message = translation.form_number_field_min_value.replaceAll('{0}', minValue);
                    showError($this, name, message);
                    hasError = true;
                    valid = false;
                }
                if (isValidValue(maxValue) && value > maxValue) {
                    const message = translation.form_number_field_max_value.replaceAll('{0}', maxValue);
                    showError($this, name, message);
                    hasError = true;
                    valid = false;
                }
                if (!hasError) {
                    hideError($this, name);
                }
            }
        }
    });
    signatures.each(function () {
        var value = $(this).val();
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            var fromConditional = ($(this).attr("data-conditional") != undefined && $(this).attr("data-conditional") != null && $(this).attr("data-conditional") == 'true' ? true : false);
            if (fromConditional && (value == undefined || value == null || (value != null && value != undefined && value.trim() == ''))) {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');
                var name = $(this).attr('name');
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".fields-section").append(label);
                }
                valid = false;
            } else {
                if (value == undefined || value == null || (value != null && value != undefined && value.trim() == '')) {
                    $(this).addClass('error');
                    $(this).removeClass('valid');
                    $(this).attr('aria-invalid', 'true');
                    $(this).attr('aria-required', 'true');
                    var name = $(this).attr('name');
                    var fieldIdentifier = 'label[id="' + name + '-error"]';
                    var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                    if ($(this).parents('.fields-section').find(fieldIdentifier).length > 0) {
                        $(this).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                    } else {
                        $(this).parents(".fields-section").append(label);
                    }
                    valid = false;
                }
            }
        }
    });

    select.each(function () {
        var value = $(this).val();
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden select[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            var name = $(this).attr('name');
            var fieldIdentifier = 'label[id="' + name + '-error"]';
            var isMultiple = $(this).attr('multiple') === 'multiple';
            var fromConditional = ($(this).attr("data-conditional") != undefined && $(this).attr("data-conditional") != null && $(this).attr("data-conditional") == 'true' ? true : false);
            if (fromConditional && (value == undefined || value == null
                || (value != null && value != undefined && !isMultiple && value.trim() == ''))) {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');

                var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".input-group-select").append(label);
                }
                valid = false;
            } else {
                if ($(this).hasClass('autosuggest')) {
                    if ($(this).parents('.fields-section').find(fieldIdentifier).length > 0) {
                        let currentItem = $(this).parents('.fields-section').first().find(fieldIdentifier).clone();
                        $(this).parents('.fields-section').first().find(fieldIdentifier).remove();
                        $(this).parents('.fields-section').first().find('.input-group-select').append(currentItem);
                    }
                }
            }


        }
    });
    groupCheckbox.each(function () {
        var value = '';
        var isMissingValue = false;
        var isHidden = $(this).closest('.row').hasClass('is-hidden');
        if ($(this).find('input.input-group-checkbox:checked').length > 0) {
            value = 'selected';
        }
        var isRequired = $(this).data('required');
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden div[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            if (isRequired == true &&
                !isHidden &&
                (value == undefined || value == null
                    || (value != null && value != undefined && value.trim() == ''))) {
                $(this).find('input.input-group-checkbox').addClass('missing-required');

                var name = $(this).attr('data-id-name');
                var labelIdSelector = 'label[id="' + name + '-error"]';
                if ($(this).find(labelIdSelector).length > 0) {
                    $(this).find(labelIdSelector).remove();
                }
                var label = '<label id="' + name + '-error-required" class="error error-required" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                $(this).append(label);

                valid = false;
                isMissingValue = true;
                $('input.input-group-checkbox.missing-required').on('change', function () {
                    var name = $(this).parents(".input-group-checkboxes").attr('data-id-name');
                    var fieldIdentifier = 'label[id="' + name + '-error-required"]';
                    if ($(this).parents(".input-group-checkboxes").find(fieldIdentifier).length > 0) {
                        $(this).parents(".input-group-checkboxes").find(fieldIdentifier).remove();
                        $(this).parents(".input-group-checkboxes input.input-group-checkbox.missing-required").removeClass('missing-required');
                    }
                });
            }

            var minOptions = $(this).attr('data-min-options');
            var maxOptions = $(this).attr('data-max-options');
            if (!isHidden && !isMissingValue && minOptions && maxOptions) {
                //-- Min and max validation for Multiple Select displayed as checkbox
                var totalSelected = $(this).find('input.input-group-checkbox:checked').length;
                var errorMessage = "";

                if (minOptions && maxOptions && !(minOptions == 0 && maxOptions == 0)) {
                    if (totalSelected !== minOptions && +minOptions === +maxOptions) {
                        errorMessage = translation.multiselect_only_one_option.replaceAll('[minNumber]', minOptions);

                    } else if (totalSelected < minOptions && +minOptions && +maxOptions == 0) {
                        errorMessage = translation.multiselect_min_option.replaceAll('[minNumber]', minOptions);

                    } else if (totalSelected > maxOptions && +minOptions == 0 && +maxOptions) {
                        errorMessage = translation.multiselect_max_option.replaceAll('[maxNumber]', maxOptions);

                    } else if (+minOptions != 0 && +maxOptions != 0 && (totalSelected > maxOptions || totalSelected < minOptions)) {
                        errorMessage = translation.multiselect_between_option.replaceAll('[minNumber]', minOptions);
                        errorMessage = errorMessage.replaceAll('[maxNumber]', maxOptions);

                    }

                    if (errorMessage !== "") {
                        valid = false;
                        $(this).find('input.input-group-checkbox').addClass('min-max-missing');
                        var name = $(this).attr('data-id-name');
                        var labelIdentifier = 'label[id="' + name + '-error"]';
                        if ($(this).find(labelIdentifier).length > 0) {
                            $(this).find(labelIdentifier).remove();
                        }
                        var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + errorMessage + '</label>';
                        $(this).append(label);


                        $('input.input-group-checkbox.min-max-missing').on('change', function () {

                            var name = $(this).parents(".input-group-checkboxes").attr('data-id-name');
                            var minOptionsCheck = $(this).parents(".input-group-checkboxes").attr('data-min-options');
                            var maxOptionsCheck = $(this).parents(".input-group-checkboxes").attr('data-max-options');
                            var totalCheckSelected = $(this).parents(".input-group-checkboxes").find('input.input-group-checkbox:checked').length;
                            var labelCheckId = 'label[id="' + name + '-error"]';
                            if ($(this).parents(".input-group-checkboxes").find(labelCheckId).length > 0 &&
                                (totalCheckSelected >= minOptionsCheck && totalCheckSelected <= maxOptionsCheck
                                    || totalCheckSelected >= minOptionsCheck && maxOptionsCheck == 0
                                    || minOptionsCheck == 0 && totalCheckSelected <= maxOptionsCheck)
                            ) {

                                $(this).parents(".input-group-checkboxes").find(labelCheckId).remove();
                                $(this).parents(".input-group-checkboxes input.min-max-missing").removeClass('min-max-missing');
                            }
                        });

                    }
                }
            }
        }
    });

    checkboxes.each(function () {
        var nameField = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + nameField + '"]').length > 0;
        if (isSectionHidden === false) {
            if ($(this).prop('checked') === false) {
                var content = $(this).closest('div.content');
                content.find('label.error').remove();
                var validation = content.find('label.validation-message');
                validation.css('display', 'block');
                topPage = content.offset().top;
                valid = false;
            }
        }
    });


    dateFields.each(function () {
        var name = $(this).attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
        if (isSectionHidden === false) {
            if ($('input[name="' + name + '"]').length > 0) {
                $('input[name="' + name + '"]').trigger('changeDate');
            }
        }
    });


    dateCustomFields.each(function () {
        var field = $(this);
        var invalidDateMsg = translation.invalid_date_field;
        var dateSection = $(this).parents('.form-builder-date-container');
        var valueField = $(this).val();
        var name = field.attr('name');
        let selector = '.row.is-hidden [name="' + name + '"]';
        var isSectionHidden = (_form.find(selector).length > 0);
        var idField = name.replace("[value]", '');
        var ruleValidate = _form.find('input[name="' + idField + '[ruleToValidate]"]');
        var dataRequired = dateSection.attr('data-required');
        if (dataRequired === 'false' || dataRequired === false) {
            let label = _form.find('label[for="' + name + '"]');
            if (label !== null && label !== undefined && label !== '') {
                if (label.hasClass('required')) {
                    dataRequired = true;
                }
            }
        }

        let currentfield = $(this).parents('inclusive-dates');
        let currentSectionField = currentfield.parents('.fields-section');
        let currentDateFormat = currentSectionField.find('input[name="' + currentfield.attr('id').replace("[value]", "") + "[currentDateFormat]" + '"]').val();

        if (isSectionHidden === false) {
            var currentValueText = (valueField != '') ? valueField : null;
            let idRaw = name + "_Raw";
            if (_form.find('input[id="' + idRaw + '"]').length > 0) {
                let rawValue = _form.find('input[id="' + idRaw + '"]').val();
                if (rawValue !== null && rawValue !== undefined && rawValue !== '') {
                    currentValueText = rawValue;
                }
            }
            if (!validate_date_values_custom(currentValueText)) {
                if (!field.parents(".fields-section").find('.form-builder-date-container label.error').is(':visible')) {
                    var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + invalidDateMsg + '</label>';
                    field.parents(".fields-section .form-builder-date-container").append(label);
                    valid = valid && false;
                }
            }
            if (currentValueText !== undefined && currentValueText !== null && currentValueText !== '') {
                if (ruleValidate !== null && ruleValidate !== undefined) {
                    var isvalid = validateDatesWithCompareCustomDatePicker(ruleValidate, idField, _form, name);
                    valid = valid && isvalid;
                }

                var isValigAge = form_validate_min_age(currentfield, currentValueText);
                var isValigMinMax = form_validate_min_max_days(currentfield, currentValueText, currentDateFormat);
                valid = valid && isValigAge && isValigMinMax;
            }
            else if (dataRequired === true || dataRequired === 'true') {
                valid = valid && false;
                if (field.parents('.fields-section').find('.form-builder-date-container label.error').length === 0) {
                    var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + window.translation.field_required + '</label>';
                    field.parents(".fields-section").find(".form-builder-date-container").append(label);
                } else {
                    field.parents('.fields-section').find('.form-builder-date-container label.error').remove();
                    var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + window.translation.field_required + '</label>';
                    field.parents(".fields-section").find(".form-builder-date-container").append(label);
                }
            }
        }
        else {
            if (field.parents('.fields-section').find('.form-builder-date-container label.error').length > 0) {
                field.parents('.fields-section').find('.form-builder-date-container label.error').remove();
            }
        }
    });


    dateFields.each(function () {
        var field = $(this);
        var endDateMsg = field.data('end-date-msg');
        var startDateMsg = field.data('start-date-msg');
        var targetDateMsg = field.data('target-date-msg');
        var endDateValue = field.data('end-date');
        var startDateValue = field.data('start-date');
        var targetDateValue = field.data('target-date');
        var dataRequired = field.data('required');
        var invalidDateMsg = field.data('invalid-message');
        var name = field.attr('name');
        var idField = name.replace("[value]", '');

        var ruleValidate = _form.find('input[name="' + idField + '[ruleToValidate]"]');

        var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
        var valueField = $(this).val();


        if (isSectionHidden === false) {
            var currentValueText = (valueField != '')
                ? ($('input[name="' + name + '"]').length > 0)
                    ? $('input[name="' + name + '"]').fdatepicker().data('datepicker').date
                    : null
                : null;


            if (!validate_date_values(currentValueText)) {

                if (!field.parents(".fields-section").find('label.error').is(':visible')) {
                    var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + invalidDateMsg + '</label>';
                    field.parents(".fields-section").append(label);
                    valid = false;

                }
            }

            var currentValue = null;
            if (valueField != '') {
                if ($('input[name="' + name + '"]').length > 0) {
                    var value_dfate = $('input[name="' + name + '"]').val();
                    var dateformat = window.MomentDateFormat;
                    var momentDate = moment(value_dfate, dateformat);
                    currentValue = momentDate.valueOf();
                }
            }

            if (currentValue != null) {
                if (endDateValue != null && endDateValue != undefined && endDateMsg != null && endDateMsg != undefined) {


                    if (currentValue > endDateValue && !field.parents(".fields-section").find('label.error').is(':visible')) {
                        var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + endDateMsg + '</label>';
                        field.parents(".fields-section").append(label);
                        valid = false;
                    }
                }
                else if (startDateMsg != null && startDateMsg != undefined && startDateValue != null && startDateValue != undefined) {


                    if (currentValue < startDateValue && !field.parents(".fields-section").find('label.error').is(':visible')) {
                        var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + startDateMsg + '</label>';
                        field.parents(".fields-section").append(label);
                        valid = false;
                    }
                }
                else if (targetDateMsg != null && targetDateMsg != undefined && targetDateValue != null && targetDateValue != undefined) {
                    if (!(equalDates(new Date(currentValue), new Date(targetDateValue))) && !field.parents(".fields-section").find('label.error').is(':visible')) {
                        var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + targetDateMsg + '</label>';
                        field.parents(".fields-section").append(label);
                        valid = false;
                    }
                }
            }
            else {
                if (dataRequired == true) {
                    if (field.parents('.fields-section').find('label.error').length === 0) {
                        var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + window.translation.field_required + '</label>';
                        field.parents(".fields-section").append(label);
                    }
                }
            }

            if (ruleValidate !== null && ruleValidate !== undefined) {
                valid = valid && validateDatesWithCompare(ruleValidate, idField, _form);
            }
        }
    });


    scaleRatings.each(function () {
        var firstRadio = $(this).find('input[type="radio"][data-required="true"]').first();
        var name = firstRadio.attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
        if (isSectionHidden === false) {
            var radios = $(this).find('input[name="' + name + '"][data-required="true"]');
            if (radios.attr('data-required') == 'true' && radios.is(':checked') === false) {
                var content = $(this).parent('.box');
                var validation = content.find('label.validation-message');
                validation.css('display', 'block');
                topPage = firstRadio.offset().top;
                valid = false;
            }
        }

    });


    radioGroups.each(function () {
        var firstRadio = $(this).find('input[type="radio"][data-required="true"]').first();
        var name = firstRadio.attr('name');
        var isSectionHidden = _form.find('.row.is-hidden input[name="' + name + '"]').length > 0;
        if (isSectionHidden === false) {
            var radios = $(this).find('input[name="' + name + '"][data-required="true"]');
            if (radios.attr('data-required') == 'true' && radios.is(':checked') === false) {
                var content = $(this).closest('div');
                var validation = content.find('label.validation-message');
                validation.css('display', 'block');
                topPage = firstRadio.offset().top;
                valid = false;
            }
        }
    });

    textareaRichText.each(function () {
        var field = $(this);
        var parentDisplay = field.parents('.rich_text').css('display')

        if (parentDisplay !== 'none') {
            var idField = field.data('field-id');
            var foundML = false;
            var idFieldSelector = idField + '[value]';
            var originalValue = formForm[idField];
            if (isMultiLanguage === "true") {
                datalist.forEach(function (valueL) {
                    if (valueL == idField) {
                        idFieldSelector = field.attr('id');
                        foundML = true;
                    }
                });
            }

            var textRichText = CKEDITOR.instances[idFieldSelector].getData();
            if (foundML == true) {
                idFieldSelector = idFieldSelector.replace('[value]', '_');
            }
            else {
                idFieldSelector = idField;
            }
            formForm[idFieldSelector] = {
                sf_field: originalValue.sf_field,
                sf_object: originalValue.sf_object,
                type: originalValue.type,
                value: textRichText
            };
            var nameTextAtera = field.attr('name');
            if ($('select[name="mentions-' + nameTextAtera + '"]').length > 0) {
                var mentionList = '';
                var temporalDiv = $('<div></div>');
                temporalDiv.append(textRichText);
                if (temporalDiv.find('a[data-mention-id]').length > 0) {
                    temporalDiv.find('a[data-mention-id]').each(function () {
                        mentionList += (mentionList == '' ? '' : ',') + $(this).attr('data-mention-id');
                    });
                }
                formForm[idFieldSelector].mentions = mentionList;
                formForm[idFieldSelector].mentionsField = $('select[name="mentions-' + nameTextAtera + '"]').data('field-for-mentions');
            }



            var idTextArea = $(this).attr('id');
            if (CKEDITOR.instances[idTextArea]) {
                CKEDITOR.instances[idTextArea].fire('change');
            }
        }
    });


    requireTextarea.each(function () {
        var value = $(this).val();
        var name = $(this).attr('name')
        var isSectionHidden = _form.find('.row.is-hidden textarea[name="' + name + '"]').length > 0;
        if (isSectionHidden === false) {
            var fromConditional = ($(this).attr("data-conditional") != undefined && $(this).attr("data-conditional") != null && $(this).attr("data-conditional") == 'true' ? true : false);
            if (fromConditional && (value == undefined || value == null
                || (value != null && value != undefined && value.trim() == ''))) {
                $(this).addClass('error');
                $(this).removeClass('valid');
                $(this).attr('aria-invalid', 'true');
                $(this).attr('aria-required', 'true');
                var name = $(this).attr('name');
                var fieldIdentifier = 'label[id="' + name + '-error"]';
                var label = '<label id="' + name + '-error" class="error" for="' + name + '" style="display:block;">' + translation.field_required + '</label>';
                if ($(this).parents('.fields-section').find(fieldIdentifier).length > 0) {
                    $(this).parents('.fields-section').find(fieldIdentifier).replaceWith(label);
                } else {
                    $(this).parents(".fields-section").append(label);
                }
                valid = false;
            }
        }
    });



    //verify special validations 
    hiddenFields.each(function () {
        var field = $(this);
        var idField = field.attr('name');
        if (idField !== null && idField !== undefined && idField !== '')
            idField = idField.replace('[value]', '');
        var value = $(this).val();
        if (value.indexOf('validation-dates:') !== -1) {
            if (value.indexOf(':') !== -1) {
                var values = value.split(':');

                if (values.length > 1) {
                    var condition = values[1];
                    var items = condition.split(',');
                    if (items.length == 5) {
                        var valueField1 = self.closest('.formBlock').find('input[name="' + items[0] + '[value]"]').val();
                        var valueField2 = self.closest('.formBlock').find('input[name="' + items[1] + '[value]"]').val();
                        var criteria = items[2];
                        var positionValue = items[3]
                        var separator = items[4];
                        if (criteria == "sameyear" && valueField1.indexOf(separator) !== -1 && valueField2.indexOf(separator) !== -1) {
                            var valuesDate1 = valueField1.split(separator);
                            var valuesDate2 = valueField2.split(separator);
                            if (valuesDate1.length > positionValue && valuesDate2.length > positionValue) {
                                if (valuesDate1[positionValue] !== valuesDate2[positionValue]) {
                                    valid = false;
                                    Swal.fire({
                                        title: 'Error',
                                        icon: 'error',
                                        text: window.translation.should_have_same_year,
                                        confirmButtonText: 'Ok',
                                        closeOnConfirm: true
                                    });

                                }
                            }
                        }
                    }

                }
            }
        }
        else if (value === 's:currentManagingOrg') {
            var managingOrg = localStorage.getItem('llama-sp-current-org');
            if (managingOrg !== undefined && managingOrg !== null && managingOrg !== '') {
                var objMO = JSON.parse(managingOrg);
                value = objMO.id;
                $(this).val(value);
                formForm[idField].value = value;
            }

        }
    });

    //apply validation of address_suggestions
    if (verify_address_suggestion_enable(_form) == true) {
        // exists at least one address component with address verification

        //iterate over the address components present in the form and that has the feature activated and the address is pending to validate
        valid = valid && iterate_over_address_component_address_suggestions(_form, _formId);

    }

    return valid;
}

function checkForExpiredItemsSessionStorage() {
    const keys = Object.keys(sessionStorage);
    keys.forEach(function (key) {
        if (key.indexOf('picklistdata-') != -1) {
            removeExpiredItems(key);
        }
    });
}

function removeExpiredItems(key) {
    const itemStr = sessionStorage.getItem(key);
    if (!itemStr) {
        return; 
    }
    const item = JSON.parse(itemStr);
    const currentTime = new Date().getTime();
    if (currentTime - item.timestamp > window.expirationTime ) {
        sessionStorage.removeItem(key);
    }
}

/**
 * Filters an array of objects based on a given id and the conditions where the field property matches the id.
 * @param {Array} arr - The array of objects to filter.
 * @param {string|number} id - The id to match in the conditions' field property.
 * @returns {Array} - The filtered array of objects.
 */
function filter_By_Condition_Field(arr, id) {
    // Validate input array
    if (!Array.isArray(arr) || arr.length === 0) {
        console.warn("Input array is null, undefined, or empty.");
        return [];
    }

    // Validate id
    if (id === null || id === undefined) {
        console.warn("Provided id is null or undefined. Returning the default rules");
        return arr;
    }
    // Filter the array
    return arr.filter(item => {

        // Validate each item
        if (!item || typeof item !== "object" || !Array.isArray(item.conditions)) {
            return false;
        }

        // Check if any condition's field matches the id
        return item.conditions.some(condition => {
            return condition && condition.field == id; // Use loose equality to handle string/number mismatch
        });
    });
}

function custom_change_action_for_calculate_field(self) {
    let displayLogic = self.closest('form').find('input[name="fields_logic"]').val();
    if (displayLogic !== undefined && displayLogic !== null && displayLogic !== '') {
        jsonDataDisplay = JSON.parse(displayLogic);

        let fieldId = self.prop("id").replace("[value]", "");
        display_logic_events(self, jsonDataDisplay.logicDisplay, fieldId);
    }
};
/*
	Custom events and methods to form builder functionality
*/

$(document).ready(function () {
    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();

    open_parental_consent_form();
});

function after_translation_resource_load_parental_consent() {
    initiate_jquery_validate_reveal($("#parental-consent-form"), 'parental-consent-form');
    save_parental_consent_configuration();
}

function open_parental_consent_form() {
    $(document).on('click', 'a[data-element-reveal="parental-consent"]', function () {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        initialize_ckeditor_parental_consent();
        
        $("#parental-consent").foundation();
        $("#parental-consent").foundation("open");
        
        var parentalConsentId = $("#parental-consent input[name='parental_consent_id']").val();
        if (parentalConsentId != 0) {
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetParentalConsentConfiguration",
                data: { pcId: parentalConsentId },
                beforeSend: function () {
                    $('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.status === "ok") {
                    if (jsonResult.enabled == true) {
                        $('#parental-consent input[name="parental_consent_enabled"]').prop("checked", true);
                        $('#parental-consent input[name="pc_enabled"]').val(true);
                    } else {
                        $('#parental-consent input[name="parental_consent_enabled"]').prop("checked", false);
                        $('#parental-consent input[name="pc_enabled"]').val(false);
                    }
                    $('#parental-consent input[name="parental_minimum_age"]').val(jsonResult.minimum_age)
                    if (jsonResult.subject_parent != "") {
                        var subjetsp = JSON.parse(jsonResult.subject_parent);
                        
                        for (var item in subjetsp) {
                            var nameField = item;
                            $('#parental-consent input[name="' + nameField + '"]').val(subjetsp[item]);
                        }
                    }
                    if (jsonResult.subject_approved != "") {
                        var subjetsa = JSON.parse(jsonResult.subject_approved);

                        for (var itema in subjetsa) {
                            var nameField = itema;
                            $('#parental-consent input[name="' + nameField + '"]').val(subjetsa[itema]);
                        }
                    }
                    if (jsonResult.subject_rejected != "") {
                        var subjetsr = JSON.parse(jsonResult.subject_rejected);

                        for (var item in subjetsr) {
                            var nameField = item;
                            $('#parental-consent input[name="' + nameField + '"]').val(subjetsr[item]);
                        }
                    }
                    if (jsonResult.sent_to_parent != "") {
                        var mtoSend = JSON.parse(jsonResult.sent_to_parent);

                        for (var item in mtoSend) {
                            var nameField = item;
                            var placeholder = $('#parental-consent textarea[name="' + nameField + '"]').attr('placeholder');
                            if(mtoSend[item] == ''){
                                $('#parental-consent textarea[name="' + nameField + '"]').val(placeholder);

                                //Reinitialize and set data to ckeditor
                                $('#cke_' + nameField).remove();
                                CKEDITOR.instances[nameField].destroy(true);
                                replace_ckeditor(nameField);
                                CKEDITOR.instances[nameField].setData(placeholder);
                            }
                            else{
                                $('#parental-consent textarea[name="' + nameField + '"]').val(mtoSend[item]);
                                
                                //Reinitialize and set data to ckeditor
                                $('#cke_' + nameField).remove();
                                CKEDITOR.instances[nameField].destroy(true);
                                replace_ckeditor(nameField);
                                CKEDITOR.instances[nameField].setData(mtoSend[item]);
                            }
                        }
                    }
                    if (jsonResult.approved_message != "") {
                        var message = JSON.parse(jsonResult.approved_message);

                        for (var item in message) {
                            var nameField = item;
                            var placeholder = $('#parental-consent textarea[name="' + nameField + '"]').attr('placeholder');
                            if(message[item] == ''){
                                $('#parental-consent textarea[name="' + nameField + '"]').val(placeholder);
                                
                                //Reinitialize and set data to ckeditor
                                $('#cke_' + nameField).remove();
                                CKEDITOR.instances[nameField].destroy(true);
                                replace_ckeditor(nameField);
                                CKEDITOR.instances[nameField].setData(placeholder);
                            }
                            else{
                                $('#parental-consent textarea[name="' + nameField + '"]').val(message[item]);
                                
                                //Reinitialize and set data to ckeditor
                                $('#cke_' + nameField).remove();
                                CKEDITOR.instances[nameField].destroy(true);
                                replace_ckeditor(nameField);
                                CKEDITOR.instances[nameField].setData(message[item]);
                            }
                        }
                    }
                    if (jsonResult.reject_message != "") {
                        var message = JSON.parse(jsonResult.reject_message);

                        for (var item in message) {
                            var nameField = item;
                            var placeholder = $('#parental-consent textarea[name="' + nameField + '"]').attr('placeholder');
                            if(message[item] == ''){
                                $('#parental-consent textarea[name="' + nameField + '"]').val(placeholder);
                                
                                //Reinitialize and set data to ckeditor
                                $('#cke_' + nameField).remove();
                                CKEDITOR.instances[nameField].destroy(true);
                                replace_ckeditor(nameField);
                                CKEDITOR.instances[nameField].setData(placeholder);
                            }
                            else{
                                $('#parental-consent textarea[name="' + nameField + '"]').val(message[item]);
                                
                                //Reinitialize and set data to ckeditor
                                $('#cke_' + nameField).remove();
                                CKEDITOR.instances[nameField].destroy(true);
                                replace_ckeditor(nameField);
                                CKEDITOR.instances[nameField].setData(message[item]);
                            }
                        }
                    }
                }

                $('.processing_screen').hide();
            });
        } else {
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetParentalConsentConfiguration",
                data: { pcId: parentalConsentId },
                beforeSend: function () {
                    $('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                $('#parental-consent textarea').text("");

                if(jsonResult) {
                    if(jsonResult.subject_parent && jsonResult.subject_approved && jsonResult.subject_rejected) {
                        //Add placeholders to textareas with data saved in server 
                        var idSendToParent = $('textarea.sent-to-parent').first().attr('id');
                        var idConsentApproved = $('textarea.consent-approved').first().attr('id');
                        var idConsentRejected = $('textarea.consent-rejected').first().attr('id');

                        $('#cke_' + idSendToParent).remove();
                        $('#cke_' + idConsentApproved).remove();
                        $('#cke_' + idConsentRejected).remove();

                        CKEDITOR.instances[idSendToParent].destroy(true);
                        CKEDITOR.instances[idConsentApproved].destroy(true);
                        CKEDITOR.instances[idConsentRejected].destroy(true);

                        //Initialize CKEDITORS
                        CKEDITOR.replace(idSendToParent, {
                            height: 120,
                        });
                        CKEDITOR.replace(idConsentApproved, {
                            height: 120,
                        });
                        CKEDITOR.replace(idConsentRejected, {
                            height: 120,
                        });

                        //Delete content of textareas
                        $('textarea.sent-to-parent').first().text('');
                        $('textarea.consent-approved').first().text('');
                        $('textarea.consent-rejected').first().text('');

                        //Set values of textareas
                        $('textarea.sent-to-parent').first().text(jsonResult.subject_parent);
                        $('textarea.consent-approved').first().text(jsonResult.subject_approved);
                        $('textarea.consent-rejected').first().text(jsonResult.subject_rejected);
                    }
                    else {
                        $('#parental-consent textarea').each(function () {
                            var elementId = $(this).attr('id');
                            var placeholder = $(this).attr('placeholder');
                            $('#cke_' + elementId).remove();
                            CKEDITOR.instances[elementId].destroy(true);
                            replace_ckeditor(elementId);
                            if (placeholder != "") {
                                CKEDITOR.instances[elementId].setData(JSON.stringify(placeholder));
                            }
                            
                        });
                    }
                }
                else {
                    $('#parental-consent textarea').each(function () {
                        var elementId = $(this).attr('id');
                        var placeholder = $(this).attr('placeholder');
                        $('#cke_' + elementId).remove();
                        CKEDITOR.instances[elementId].destroy(true);
                        replace_ckeditor(elementId);
                        if (placeholder != "") {
                            CKEDITOR.instances[elementId].setData(JSON.stringify(placeholder));
                        }
                        
                    });
                }
                $('#parental-consent input[name="parental_consent_enabled"]').prop("checked", false);
                $('.processing_screen').hide();
            });
        }
    });
}

function initialize_ckeditor_parental_consent() {

    if (typeof CKEDITOR !== 'undefined') {
        if ($('#parental-consent textarea').length > 0) {
            $('#parental-consent textarea').each(function () {
                var elementId = $(this).attr('id');
                $('#cke_' + elementId).remove();
                replace_ckeditor(elementId);
            });
        }
    }
}

function save_parental_consent_configuration() {
    $(document).on('click', '#parental-consent .save', function () {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        if ($('#parental-consent-form').valid()) {
            if (parseInt($('#parental-consent-form input[name="parental_minimum_age"]').val()) > 13) {
                var parentalConsentId = $("#parental-consent input[name='parental_consent_id']").val();
                if($('#parental-consent input[name="parental_consent_enabled"]:checked').length > 0){
                    $('#parental-consent input[name="pc_enabled"]').val(true);
                }else{
                    $('#parental-consent input[name="pc_enabled"]').val(false);
                }
                $('#parental-consent textarea').each(function () {
                    var elementId = $(this).attr('id');
                    if (CKEDITOR.instances[elementId] != null && CKEDITOR.instances[elementId] != undefined) {
                        var text = CKEDITOR.instances[elementId].getData();
                        $("#" + elementId).val(text);
                        $("#" + elementId).text(text);
                        
                    }
                });
               $.ajax({
                    method: "POST",
                    url: urlSite + "admin/AddOrUpdateParentalConsent",
                    data:  $('#parental-consent-form').serialize(),
                    beforeSend: function () {
                        $('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult.status === "ok") {
                        location.reload();
                    }
                    else {
                        $('.processing_screen').hide();
                    }
                });
            } else {
                Swal.fire({
                    title: window.translation.warning,
                    icon: "warning",
                    text: window.translation.minimum_age_validation,
                    confirmButtonText: "Ok"
                });
            }
        } else {
            Swal.fire({
                title: window.translation.warning,
                icon: "warning",
                text: window.translation.parental_consent_error_form,
                confirmButtonText: "Ok"
            });
        }
        
    });
}

function replace_ckeditor(elementId) {
    var editor = CKEDITOR.replace(elementId, {
        //extraPlugins: 'uploadimage,image2',
        //removePlugins: 'image',
        filebrowserBrowseUrl: '/custom-ckfinder/connector',
        filebrowserImageBrowseUrl: '/custom-ckfinder/connector?type=Images',
        filebrowserUploadUrl: '/ckfinder/connector?command=QuickUpload',
        filebrowserImageUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Images',
        height: 120,
        customConfig: '/js/config/ckeditor_config.js'
    });
    CKFinder.setupCKEditor(editor);
};

/*
	Custom events and methods to implement on project
*/
$(document).ready(function () {
    
});


function cc_methods_after_translation() {
	if (window.translation) {
		//Set info of sharingPortal plus
		set_info_sharing_portal_plus_page();

		//Backend of custom compliance modal
		backend_custom_compliance();

		//Event to add branch logic conditions
		compliance_add_rule_condition();

		//Events to branch logic modal
		eventsBranchLogicModal();

		//Events validate when modal is closed
		eventsModalClosed();

		//Initialize Dragula to compliance form
		initiate_dragula_compliance();
	}
}

function initiate_dragula_compliance() {
	if (!is_backend_page()) return;
    if ($('#custom-compliance-settings').length !== 0) {
        dragula(
            [document.getElementById('compliance-rules-container')],
            {
                moves: function (el, container, handle) {
                    return handle.className === 'move';
                },
                direction: 'vertical'
            })
            .on('drag', function (el) {
            }).on('drop', function (el) {
                var rule = $(el).parents('.step-rules-container').find('div.rule');
                var dataLocalStorage = localStorage.getItem('compliance-module');
                var dataJson = JSON.parse(dataLocalStorage);
                var branchlogics = dataJson.branchLogics;

                var weightHTML = 0;
                weightHTML = $('#custom-compliance-settings .compliance-custom-steps .step-rules .rule').length;
                rule.each(function () {
                    var element = $(this);
                    var ruleElementId = element.attr('data-rule-id');
                    var tempRuleId = element.attr('data-rule-id-temporary');
                    
                    $(this).attr('data-rule-weight', weightHTML);
                    
                    if (branchlogics) {
                        branchlogics.forEach(function (branch) {
                            if (branch.ruleId != 0) {
                                if (branch.ruleId == ruleElementId) {
                                    branch.weight = weightHTML;
                                }
                            } else if (branch.ruleId == 0 && branch.uniqueID == tempRuleId) {
                                branch.weight = weightHTML;
                            }
                            
                        });
                        dataJson.branchLogics = branchlogics;
                        //Assign again value to localStorage
                        localStorage.setItem('compliance-module', JSON.stringify(dataJson));
                        
                    }
                    weightHTML = weightHTML - 1;

                });
            }).on('dragend', function (el) {
            });
    }
}
function load_compliance_pages_from_local_storage() {
    complianceJson = JSON.parse(localStorage.getItem('compliance-module'));
    if (complianceJson && complianceJson.compliancePages) {
        // cleaning region pages
        var pages = complianceJson.compliancePages;
        $("#custom-compliance-settings .compliance-list-pages").empty();

        pages.forEach(function (page) {
            var cpage = '<div class="step-page" data-page-id="' + page.PageId + '">' +
	            '<div class="row">'+
		            '<div class="medium-6 columns">'+
			            '<h3 class="step-title">'+page.PageName+'</h3>'+
		            '</div>'+
		            '<div class="medium-6 columns page-buttons">'+
			            '<a data-element-reveal="ars-page-conf" data-page-id="' + page.PageId + '" title="Configure Page" data-url="" data-type="2" data-is-compliance="true" class="button ars-secondary-btn">Configure Page</a>' +
			            '<a data-element-reveal="compliance-page-delete" data-page-id="' + page.PageId + '" title="Remove Page" data-url="" class="button remove_button">Remove Page</a>' +
		            '</div>'+
	            '</div>'+
            '</div>';
            $("#custom-compliance-settings .compliance-list-pages").append(cpage);
        });
        if (pages.length == 0) {
            var span = '<span class="not-compliance-pages"><i>' + window.translation.not_compliance_pages + '</i></span>';
            $("#custom-compliance-settings .compliance-list-pages").append(span)
        }
    }

}

function backend_custom_compliance() {
	//Get if site is sharingPortalPlus
	if (!is_backend_page()) return;

	var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

	$(document).on('click', 'a[data-element-reveal="custom-compliance-settings"]', function () {
		var self = $('#custom-compliance-settings');

		//Open Modal
		$('#custom-compliance-settings').foundation('open');

		//Reload elements inside modal
		$('#custom-compliance-settings').foundation();

		$.ajax({
			method: "GET",
			url: urlSite + "Compliance/GetComplianceSettingsInfo",
			beforeSend: function () {
				self.find('.processing_screen').show();
				self.find('.compliance-pages').addClass("is-hidden");
				self.find('.applyAllopp').addClass("is-hidden");
			}
		})
			.done(function (data) {
				var jsonResult = JSON.parse(data);

				if (jsonResult.status === 'ok') {

					localStorage.removeItem("compliance-module");
					var complianceJson = new Object();
					complianceJson.compliancePages = jsonResult['compliancePages'];
					complianceJson.branchLogics = jsonResult['branchLogics'];
					localStorage.setItem("compliance-module", JSON.stringify(complianceJson));
					load_compliance_pages_from_local_storage();
					displayBranchLogicRow(complianceJson.branchLogics);

					//Volunteer Type
					switch (jsonResult['verificationType']) {
						case 'VERIFIED_VOLUNTEERS':
							self.find('input#verification_type_0').prop('checked', true);
							self.find('.processing_screen').hide();
							break;
						case 'CUSTOM_COMPLIANCE':
							self.find('input#verification_type_1').prop('checked', true);
							self.find('.compliance-pages').removeClass("is-hidden");

							//Apply all volunteers
							if (jsonResult['applyAllVolunteers'] === true) {
								self.find('input[name="apply_all_opportunities"]').prop('checked', true);
							}
							else {
								self.find('input[name="apply_all_opportunities"]').prop('checked', false);
							}

							self.find('.applyAllopp').removeClass("is-hidden");
							self.find('.processing_screen').hide();
							initiate_dragula_compliance();
							break;
						case 'NONE':
							self.find('input#verification_type_2').prop('checked', true);
							self.find('.processing_screen').hide();
							break;
					}
				} else {
					Swal.fire({
						title: "Error",
						icon: "error",
						text: jsonResult.message,
						confirmButtonText: "Ok",
					});
				}
			});
	});

	$(document).on('click', '#custom-compliance-settings form input[type=submit]', function () {
		var formData = $('#custom-compliance-settings form').serializeObject();
		var self = $(this);
		var complianceModuleInfo = localStorage.getItem('compliance-module');

		$.ajax({
			method: "POST",
			url: urlSite + "Compliance/SaveComplianceSettings",
			data: { form: formData, complianceData: complianceModuleInfo },
			beforeSend: function () {
				self.closest('#custom-compliance-settings').find('.processing_screen').show();
			}
		})
			.done(function (data) {
				var jsonResult = JSON.parse(data);
				self.closest('#custom-compliance-settings').find('.processing_screen').hide();

				if (jsonResult.status === 'ok') {
					Swal.fire({
						title: window.translation.success,
						icon: "success",
						text: jsonResult.message,
						confirmButtonText: "Ok"
					});
				}
				else if (jsonResult.status === 'error') {
					Swal.fire({
						title: "Error",
						icon: "error",
						text: jsonResult.message,
						confirmButtonText: "Ok"
					});
				}
			});

		return false;
	});


	$(document).on('change', 'input[name="verification_type"]', function () {
		var valueSelected = $(this).val();

		if (valueSelected == 1) { //Custom Compliance
			$('.compliance-pages').removeClass('is-hidden');
			$('#custom-compliance-settings').find('.applyAllopp').removeClass("is-hidden");
		}
		else { //Volunteer Verified or None
			$('.compliance-pages').addClass('is-hidden');
			$('#custom-compliance-settings').find('.applyAllopp').addClass("is-hidden");
		}
	});

	$(document).on('click', 'a[data-element-reveal="compliance-page-delete"]', function () {
		var complianceModuleInfo = localStorage.getItem('compliance-module');
		var pageId = parseInt($(this).attr('data-page-id'));
		if (pageId !== 0) {

			Swal.fire({
				title: window.translation.are_you_sure,
				text: window.translation.do_you_want_delete_page,
				icon: "warning",
				showCancelButton: true,
				confirmButtonColor: "#ff0000",
				confirmButtonText: window.translation.yes_delete_it,
				cancelButtonText: window.translation.cancel,
				closeOnConfirm: true

			}).then(function (result) {
				if (result.isConfirmed) {
					var complianceModuleArray = JSON.parse(complianceModuleInfo);
					var compliancePages = complianceModuleArray.compliancePages;
					if (compliancePages) {
						var auxPages = [];
						compliancePages.forEach(function (page) {
							if (page.PageId == pageId) {
								page.deleted = true;
							}
						});
						complianceModuleArray.compliancePages = compliancePages;
						// remove page from list compliance pages.
						$('#custom-compliance-settings .compliance-list-pages .step-page[data-page-id=' + pageId + ']').remove();

						// Delete branchlogic asociated to pageID (if apply)
						var branchlogics = complianceModuleArray.branchLogics;

						branchlogics.forEach(function (branch) {
							var bpageId = parseInt(branch.gotoPageId);
							if (bpageId == pageId) {
								branch.deleted = true;
							}
						});
						complianceModuleArray.branchLogics = branchlogics;

						//update localstorage
						localStorage.setItem('compliance-module', JSON.stringify(complianceModuleArray));
						// Reload branch logics  
						displayBranchLogicRow(complianceModuleArray.branchLogics);
						if ($("#custom-compliance-settings .compliance-list-pages .step-page").length == 0) {
							var span = '<span class="not-compliance-pages"><i>' + window.translation.not_compliance_pages + '</i></span>';
							$("#custom-compliance-settings .compliance-list-pages").append(span);
						}

					}

				}
			});
		}

	});


	$(document).on('click', 'a[data-element-reveal="compliance-branch-logic"]', function () {
		
		var self = $('#compliance-branch-logic');
		var complianceModuleInfo = localStorage.getItem('compliance-module');
		var option = $(this).attr('data-from');
		var ruleId = parseInt($(this).attr('data-rule-id'));
		var ruleIdTemporary = $(this).attr('data-rule-id-temporary');

		//  Open Modal
		$('#compliance-branch-logic').foundation('open');

		//Reload elements inside modal
		$('#compliance-branch-logic').foundation();

		//Clean listing of current conditions
		$('#compliance-branch-logic').find('.conditions').empty();

		//Clean sufix of branch logics
		$('#compliance-branch-logic').find('input[name="compliance-sufix"]').val('0');

		//Load dropdown of pages to dropdown
		if (complianceModuleInfo) {
			var complianceModuleArray = JSON.parse(complianceModuleInfo);
			var compliancePage = complianceModuleArray.compliancePages;
			var cad = '<option data-page-id="0" value = \"\" >' + translation.select_one + ' </option >';

			compliancePage.forEach(function (page) {
				if (page.deleted == false) {
					cad += '<option data-page-id="' + page.PageId + '" value="' + page.RedirecTo + '" >' + page.PageName + ' </option >';
				}
			});

			$('#compliance-branch-logic').find('select[name="goto"]').empty();
			$('#compliance-branch-logic').find('select[name="goto"]').append(cad);

			//Load information of page rule in modal if exists
			if (option === 'edit') {
				var ruleToSearch = (ruleId && ruleId !== 0) ? ruleId : ruleIdTemporary;
				var ruleObject = {};

				if (complianceModuleArray.branchLogics) {
					complianceModuleArray.branchLogics.forEach(function (branchLogic) {
						if (branchLogic.uniqueID === ruleToSearch) {
							ruleObject = branchLogic;
						}
						else if (branchLogic.ruleId) {
							if (branchLogic.ruleId === ruleToSearch) {
								ruleObject = branchLogic;
							}
						}
					});

					//Populate modal of branch logic with info
					// 1- Page GOTO
					$('#compliance-branch-logic').find('select[name="goto"]').val(ruleObject.goto);

					// 2 - Conditions
					var sufix = parseInt($('#compliance-branch-logic').find('input[name="compliance-sufix"]').val());

					$.ajax({
						method: "POST",
						url: urlSite + "admin/GetSalesforceFields",
						data: { sfObject: 'Contact', typeField: '' },
						beforeSend: function () {
							self.find('.processing_screen').show();
						}
					}).done(function (data) {
						var jsonResult = JSON.parse(data);

						if (jsonResult) {
							if (jsonResult.status == 'ok') {
								localStorage.removeItem('compliance-salesforce-fields');
								localStorage.setItem('compliance-salesforce-fields', JSON.stringify(jsonResult.salesforceFields));

								//Include conditions by each branchLogic saved
								if (ruleObject.branchLogics) {
									ruleObject.branchLogics.forEach(function (branchLogic) {
										if (!branchLogic.deleted) {
											//Update sufix
											sufix++;
											self.find('input[name="compliance-sufix"]').val(sufix);

											//Call method to include row with fields select
											displayLogicConditionRow(jsonResult.salesforceFields, sufix, branchLogic.fieldSF, branchLogic.ruleOperator, branchLogic.valueFieldSF, self);
										}
									});
								}
							}
						}

						self.find('.processing_screen').hide();
					});

					//3 - All - Any field
					$('#compliance-branch-logic').find('select[name="and_or"]').val(ruleObject.allAny);

					//4 - Temporary and RuleId
					var objectRuleId = (ruleObject.ruleId) ? ruleObject.ruleId : 0;
					var objectTemporaryId = (ruleObject.uniqueID) ? ruleObject.uniqueID : 0;

					$('#compliance-branch-logic').find('input[name="compliance-rule-id"]').val(objectRuleId);
					$('#compliance-branch-logic').find('input[name="compliance-rule-temporary-id"]').val(objectTemporaryId);
				}
			} else {
				if (option === 'create') {
					//assigning default ruleId 
					$('#compliance-branch-logic').find('input[name="compliance-rule-id"]').val(0);
					$('#compliance-branch-logic').find('input[name="compliance-rule-temporary-id"]').val(0);
				}
			}
		}
	});
}

function compliance_add_rule_condition() {
	//Get if site is sharingPortalPlus
	if (!is_backend_page()) return;
	var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

	$(document).on('click', '#compliance-branch-logic a.compliance-add-condition', function () {
		var self = $('#compliance-branch-logic');
		var sufix = parseInt(self.find('input[name="compliance-sufix"]').val());
		var complianceSalesforceFields = localStorage.getItem('compliance-salesforce-fields');

		//Update sufix 
		sufix++;
		self.find('input[name="compliance-sufix"]').val(sufix);

		if (!complianceSalesforceFields) {
			$.ajax({
				method: "POST",
				url: urlSite + "admin/GetSalesforceFields",
				data: { sfObject: 'Contact', typeField: '' },
				beforeSend: function () {
					self.find('.processing_screen').show();
				}
			}).done(function (data) {
				var jsonResult = JSON.parse(data);

				if (jsonResult) {
					if (jsonResult.status == 'ok') {
						localStorage.removeItem('compliance-salesforce-fields');
						localStorage.setItem('compliance-salesforce-fields', JSON.stringify(jsonResult.salesforceFields));

						//Call method to include row with fields select
						displayLogicConditionRow(jsonResult.salesforceFields, sufix, null, null, null, self);
					}
				}

				self.find('.processing_screen').hide();
			});
		}
		else {
			//Call method to include row with fields select
			displayLogicConditionRow(JSON.parse(complianceSalesforceFields), sufix, null, null, null, self);
		}
	});
}

function displayLogicConditionRow(salesforceFields, sufix, salesforceField, ruleOperator, salesforceValue, selfExternal) {
	var self = $('#compliance-branch-logic');
	var item = '<div class="row condition">'
    	+ '<div class="small-11 columns">'
	        + '<div class="row">'
				+ '<div class="columns small-4">'
					+ '<div class="row">'
						+ '<select name="rule_fields_' + sufix + '" data-required="true" class="inline compliance_rule_fields" aria-invalid="false">'
							+ compliance_dynamyc_fields_option(salesforceFields)
						+ '</select>'
					+ '</div>'
				+ '</div>'
				+ '<div class="columns small-4">'
					+ '<div class="row">'
						+ '<select name="rule_operator_' + sufix + '" data-required="true" class="inline rule_operator" aria-invalid="false">'
							+ '<option value="==">' + translation.equals_to + '</option>'
							+ '<option value="!=">' + translation.not_equals_to + '</option>'
						+ '</select>'
					+ '</div>'
				+ '</div>'
				+ '<div class="columns small-4">'
					+ '<div class="row">'
						+ '<select name="rule_data_' + sufix + '" data-required="true" class="inline compliance_rule_data" aria-invalid="false">'
							+ '<option value="">' + translation.select_one + '</option>'
						+ '</select>'
					+ '</div>'
				+ '</div>'
			+ '</div>'
	    + '</div>'
	    + '<div class="small-1 columns">'
	        + '<a data-element-reveal="" title="Remove Condition" class="remove-condition"></a>'
	    + '</div>'
	+ '</div>';

	var object = $(item);
    self.find('.conditions').append(object);

    if(salesforceField) {
   		object.find('select.compliance_rule_fields').val(salesforceField);
    }
    if(ruleOperator) {
    	object.find('select.rule_operator').val(ruleOperator);
    }
    if(salesforceField && salesforceValue) {
    	assignValuesSalesforceValuesBranchLogic(salesforceField, object);

    	object.find('select.compliance_rule_data').val(salesforceValue);
    }
}

function displayBranchLogicRow(branchLogicRows) {
	if(branchLogicRows) {
		//Clean branch logic listing
		$('#custom-compliance-settings').find('.step-rules').find('.step-rules-container').empty();
	    // Sort branch logig by weight
		branchLogicRows.sort(function (a, b) {
		    return parseInt(b.weight) - parseInt(a.weight);
		});
		branchLogicRows.forEach(function (branchLogicRow) {
			var pageId = branchLogicRow.gotoPageId;
			var temporaryId = (branchLogicRow.uniqueID) ? branchLogicRow.uniqueID : 0;
			var ruleId = (branchLogicRow.ruleId) ? branchLogicRow.ruleId : 0;
			var conditions = '';
			var redirectTo = branchLogicRow.goto;
			var allAny = branchLogicRow.allAny;
			var deleted = branchLogicRow.deleted;
			var PageName = branchLogicRow.pageName;
			var weight = branchLogicRow.weight;
			if(!deleted) {
				//Generate conditions string
				var conditionsArray = [];

				branchLogicRow.branchLogics.forEach(function(branchLogic) {
					var branchLogicSFField = branchLogic.labelSF;
					var branchLogicSFValue = branchLogic.valueFieldSF;
					var branchLogicSFOperator = branchLogic.ruleOperator;
					var branchLogicOperatorString = (branchLogicSFOperator === '==') ? window.translation.equals_to : window.translation.not_equals_to;
					var conditionString = branchLogicSFField + branchLogicSFOperator + branchLogicSFValue;

					conditionsArray.push(conditionString);

					if(!conditions) {
						conditions = '<strong> ' + window.translation.any_all_prefix + ' </strong>' + branchLogicSFField + '<strong> ' + branchLogicOperatorString + ' </strong>' + branchLogicSFValue;
					}
				});

				var condClass = (conditionsArray.length > 1) ? ' multiple-rules' : '';
				var item = '<div class="small-12 columns rule" data-page-id="' + pageId + '" data-rule-id="' + ruleId + '" data-rule-id-temporary="' + temporaryId + '" data-rule-weight="' + weight + '" data-block-name="rule">'
							    + '<div class="large-5 medium-5 small-12 columns">'
							        + '<div class="row ' + condClass + '">' + conditions + '</div>'
							    + '</div>'
							    + '<div class="large-5 medium-5 small-12 columns">'
							        + '<div class="row redirect-to"><strong>' + translation.go_to + ': </strong><i>' + PageName + '</i></div>'
							    + '</div>'
							    + '<div class="large-2 medium-2 small-12 columns">'
									+ '<a data-element-reveal="compliance-branch-logic" title="' + translation.edit_rule + '" class="edit-rule" data-from="edit" data-page-id="' + pageId + '" data-rule-id="' + ruleId + '" data-rule-id-temporary="' + temporaryId + '"></a>'
									+ '<a data-element-reveal="" title="Remove Rule" class="compliance-remove-rule" data-page-id="' + pageId + '" data-rule-id="' + ruleId + '" data-rule-id-temporary="' + temporaryId + '"></a>'
                                    + '<span class="move"></span>'
                                + '</div>'
                                
							+ '</div>';

				$('#custom-compliance-settings').find('.step-rules').find('.step-rules-container').append(item);
			}
		});
	}
}

function compliance_dynamyc_fields_option(jsonFields){
	var cad = ' <option value = \"\" >' + translation.select_one + ' </option >';
	var sfFields = [];

	if(jsonFields.fields) {
		jsonFields.fields.forEach(function (item) {
			if(item.type === 'picklist' || item.type === 'boolean'){
				var itemField = {};
				itemField.label = item.label;
				itemField.value = item.apiName;

				sfFields.push(itemField);
			}
	    });

	    if(sfFields) {
	    	sfFields.sort(function(a, b) {
	    		if(a.label < b.label) return -1;
			    if(a.label > b.label) return 1;
			    return 0;
	    	});
	    	sfFields.forEach(function (itemSF) {
	    		cad += '<option value = \"' + itemSF.value + '\" >' + itemSF.label + ' </option >';
	    	});
	    }
	}

    return cad;
}

function eventsBranchLogicModal() {
	if (!is_backend_page()) return;
	$(document).on('change', 'select.compliance_rule_fields', function() {
		var fieldSF = $(this).val();
		var self = $(this).closest('.row.condition');
		
		assignValuesSalesforceValuesBranchLogic(fieldSF, self);
	});

	$(document).on('click', '#compliance-branch-logic .custom-button.save', function() {
		var self = $('#compliance-branch-logic');
		var branchLogicRuleId = self.find('input[name="compliance-rule-id"]').val();
		var branchLogicTemporaryId = self.find('input[name="compliance-rule-temporary-id"]').val();
		var gotoSelected = self.find('select[name="goto"]').val();
		var branchLogicFirstRow = $('#compliance-branch-logic').find('.row.condition').first();
		var allAny = self.find('select[name="and_or"]').val();
		var complianceModuleInfo = JSON.parse(localStorage.getItem('compliance-module'));

		if(branchLogicFirstRow) {
			if(gotoSelected) {
				var fieldSF = branchLogicFirstRow.find('select.compliance_rule_fields').val();
				var valueFieldSF = branchLogicFirstRow.find('select.compliance_rule_data').val();
				var isNewItem = true;

				if(fieldSF && valueFieldSF) {
					var branchLogicObject = {};

				    //Search current branch logic if exists in DB
					if (complianceModuleInfo.branchLogics) {
						complianceModuleInfo.branchLogics.forEach(function(branchLogic) {
							var ruleId = branchLogic.ruleId;
							var temporaryId = branchLogic.uniqueID;
							if (ruleId || temporaryId) {
							    branchLogicRuleId = parseInt(branchLogicRuleId);
							    if ((branchLogicRuleId === ruleId && branchLogicRuleId !== 0) || (branchLogicTemporaryId === temporaryId && branchLogicTemporaryId !== 0)) {
							        
								    branchLogicObject = branchLogic;
								    isNewItem = false;
								}
							}
						});
					}

					var gotoPageId = self.find('select[name="goto"]').find('option[value="' + gotoSelected + '"]').attr('data-page-id');
					var pageName = self.find('select[name="goto"]').find('option[value="' + gotoSelected + '"]').text();
					var branchLogicArray = [];
					var branchLogicObjectArray = [];
					//Update object to save in localStorage BranchLogics
					if (!branchLogicObject.ruleId) {
						branchLogicObject.uniqueID = generateGuid(3);
						branchLogicObject.ruleId = 0;
					}
					branchLogicObject.goto = gotoSelected;
					branchLogicObject.allAny = allAny;
					branchLogicObject.gotoPageId = gotoPageId;
					branchLogicObject.pageName = pageName;

					//Iterate all branch logic conditions
					$('#compliance-branch-logic').find('.row.condition').each(function() {
						var fieldSFItem = $(this).find('select.compliance_rule_fields').val();
						var valueFieldSFItem = $(this).find('select.compliance_rule_data').val();
						var ruleOperator = $(this).find('select.rule_operator').val();
						var labelSFItem = $(this).find('select.compliance_rule_fields').find('option[value="' + fieldSFItem + '"]').text();

						if(fieldSFItem && valueFieldSFItem) {
							var logicField = {};
							logicField.labelSF = labelSFItem;
							logicField.fieldSF = fieldSFItem;
							logicField.valueFieldSF = valueFieldSFItem;
							logicField.ruleOperator = ruleOperator;

							branchLogicArray.push(logicField);
						}
					});

					branchLogicObject.branchLogics = branchLogicArray;
					branchLogicObjectArray.push(branchLogicObject);
					
					if (isNewItem) {
					    branchLogicObject.deleted = false;
					    // Calculate weight to new rule
					    var weight = 0;
					    weight = complianceModuleInfo.branchLogics.length;
					    branchLogicObject.weight = weight + 1;
					    complianceModuleInfo.branchLogics.push(branchLogicObject);
					}

					if (!complianceModuleInfo.branchLogics) {
						complianceModuleInfo.branchLogics = branchLogicObjectArray;
					}
					
				    //Update local storage 'Compliance Modules'
					localStorage.removeItem('compliance-module');
					localStorage.setItem('compliance-module', JSON.stringify(complianceModuleInfo));
					displayBranchLogicRow(complianceModuleInfo.branchLogics);
					
        			self.foundation('close');

				}
				else {
					Swal.fire({
		                title: 'Missing Values',
		                icon: 'error',
		                text: 'Please add a branch logic valid',
		                confirmButtonText: "Ok"
		            });
				}
			}
			else {
				Swal.fire({
	                title: 'Missing Values',
	                icon: 'error',
	                text: 'Please select a page to redirect branch logic',
	                confirmButtonText: "Ok"
	            });
			}
		}
		else {
			Swal.fire({
                title: 'Missing Values',
                icon: 'error',
                text: 'Please add a branch logic before of save',
                confirmButtonText: "Ok"
            });
		}
	});

	$(document).on('click', '#custom-compliance-settings .compliance-remove-rule', function() {
		var branchLogicTemporaryId = $(this).attr('data-rule-id-temporary');
		var branchLogicRuleId = $(this).attr('data-rule-id');
		var complianceSalesforceFields = localStorage.getItem('compliance-module');

		if(complianceSalesforceFields) {
			var complianceModuleInfo = JSON.parse(complianceSalesforceFields);

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_rule,
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true

            }).then(function (result) {
                if (result.isConfirmed) {
                    if (complianceModuleInfo.branchLogics) {
                        complianceModuleInfo.branchLogics.forEach(function (branchLogic) {
                            var ruleId = branchLogic.ruleId;
                            var temporaryId = branchLogic.uniqueID;

                            if (ruleId || temporaryId) {
                                branchLogicRuleId = parseInt(branchLogicRuleId);
                                if ((branchLogicRuleId === ruleId && branchLogicRuleId !== 0) || (branchLogicTemporaryId === temporaryId && branchLogicTemporaryId !== 0)) {

                                    branchLogic.deleted = true;
                                }
                            }
                        });

                        localStorage.removeItem('compliance-module');
                        localStorage.setItem('compliance-module', JSON.stringify(complianceModuleInfo));

                        displayBranchLogicRow(complianceModuleInfo.branchLogics);
                    }
                    else {
                        console.log('Not exists branchLogic in localStorage');
                    }

                }
            });

		}
		else {
			console.log('Not exists localStorage saved');
		}
	});
}

function eventsModalClosed() {
	if (!is_backend_page()) return;
	$(document).on('closed.zf.reveal', '[data-reveal]', function () {
		if($(this).attr('id') === 'compliance-branch-logic'){
			localStorage.removeItem('compliance-salesforce-fields');
		}
	});
}

function assignValuesSalesforceValuesBranchLogic (SFValue, selfCondition) {
	var fieldSF = SFValue;
	var self = selfCondition;
	var complianceSalesforceFields = localStorage.getItem('compliance-salesforce-fields');
	var cad = ' <option value = \"\" >' + translation.select_one + ' </option >';

	if (fieldSF && complianceSalesforceFields) {
		var complianceSFFields = JSON.parse(complianceSalesforceFields);

		if(complianceSFFields.fields) {
			self.find('select.compliance_rule_data').empty();

			complianceSFFields.fields.forEach(function (item) {
				if(item.type === 'picklist') {
					if(item.apiName === fieldSF) {
						//Iterate all values
						item.picklistValues.forEach(function (pvalue) {
							cad += '<option value = \"' + pvalue.value + '\" >' + pvalue.label + ' </option >';
						});

						self.find('select.compliance_rule_data').append(cad);
					}
				}

				if(item.type === 'boolean') {
					if(item.apiName === fieldSF) {
						cad += '<option value ="true" >' +  window.translation.text_true + ' </option >';
						cad += '<option value ="false" >' + window.translation.text_false + ' </option >';
						self.find('select.compliance_rule_data').append(cad);
					}
				}
			});
		}
	}
}

function generateGuid(length) {

	if(!length) {
		length = 1;
	}
	else {
		length = parseInt(length);
	}

	function s4() {
		return Math.floor((1 + Math.random()) * 0x1000)
			.toString(16)
			.substring(1);
	}

	var result = '';
	for (var i = 0; i < length; i++) {
		result += s4();
	}
	return result;
}
;
var IS_LLAMAPI_ENABLED = false;
var autoRefreshBlocks = {}
var calendarAutoRefreshBlocks = {};
var autoSaveBlocks = {}
var counterAutoSaveBlocks = {}
var isUserIdle = false;
var MAX_AUTO_REFRESH_CALLS = 100;
var currentChartObjects = {}
var lastSavedChanges = -1;
var selectDynamiFilterModal = null;

$(document).ready(function () {

    if (window.MomentDateTimeFormat !== undefined && window.MomentDateTimeFormat !== null) {
        if ($.fn.dataTable.moment == undefined) {
            $.getScript("/js/vendors/datetime-moment/datetime-moment.min.js", function () {
                $.fn.dataTable.moment(window.MomentDateTimeFormat, 'en');
            });
        }
        else {
            $.fn.dataTable.moment(window.MomentDateTimeFormat);
        }
    }

    IS_LLAMAPI_ENABLED = (window.is_llamapi !== undefined && window.is_llamapi !== null ? window.is_llamapi : false);


    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();

    //Apply custom styles to listingcms blocks
    listingcmsblock_applycustomstyles();
    pathBehavior();
});

//Load methods after load translations
function after_translation_resource_load_listingcms() {
    //Backend Listing CMS Block
    listingcmsblock_backend();

    //Backend Page Categories
    listingcmsblock_backend_pagecategories();

    //Behaviors listingcms
    listingcms_behaviors();

    //Load records if listing block source is 'Salesforce Views'
    listingcmsblock_load_records_sfview();

    // If the page has autoRefreshBlocks then idel timeout is handled
    configuring_idle_event();


    listingcmsblock_special_buttons();

    listingcmsblock_special_buttons_precontent();

    fix_trim_section();
}

function listingcmsblock_get_fields_settings_class_name(displayFormat, isSecondView) {
    console.log(`listingcmsblock_get_fields_settings_class_name displayFormat ${displayFormat}  isSecondView ${isSecondView}`)
    if (isSecondView !== true)
        return (displayFormat === '4' || displayFormat == '4') ? '.field-configuration' : '.calendar-data-configuration';
    return (displayFormat === '4' || displayFormat == '4') ? '.second-field-configuration' : '.calendar-data-configuration';
}

function listingcmsblock_get_fields_settings_storage_name(className) {
    return className === '.field-configuration' ? 'column-settings-listing' : (className === '.second-field-configuration' ? 'second-view-column-settings-listing' : 'calendar-listing-data-settings');
}

function populateTableNoValue(tableId) {
    $('table#' + tableId + ' td').each(function () {
        var cellContent = $(this).clone();
        $(cellContent).find('.show-for-small-only').remove();
        $(cellContent).find('.filter-value').remove()
        $(cellContent).find('span.cell-value').each(function () {
            if (!$(this).attr('data-default-value')) {
                $(this).remove();
            }
        });
        $(cellContent).find('input[type="hidden"]').remove();
        if ($(cellContent).html().trim() == '') {
            $(this).attr('aria-label', window.translation.no_value);
        }
    });
}

function listingcmsblock_load_color_picker(self, customColorsObj) {

    self.find('input[name="type-color"]').val(customColorsObj.typeColor);
    self.find('input[name="date-color"]').val(customColorsObj.dateColor);
    self.find('input[name="author-color"]').val(customColorsObj.authorColor);
    self.find('input[name="back-a-color"]').val(customColorsObj.backAColor);
    self.find('input[name="back-b-color"]').val(customColorsObj.backBColor);
    self.find('input[name="comment-color"]').val(customColorsObj.commentColor);

    $('.listing-cms-block .input-color').each(function () {
        var self = $(this);
        var name = self.attr('data-item-preview');
        var itemPreview = '.' + name + ' span.item-preview';
        var fieldName = $(this).attr('name');
        createColorPickerFieldListing(self, itemPreview);
    });
}


function createColorPickerFieldListing(element, itemPreview) {
    if (element !== null && element !== undefined) {
        var legend = element.attr('name') + "-legend";
        var fields = element.attr("data-field-depending");
        var options = generateOptionsColorPicker(itemPreview, legend, fields);
        var nameElement = element.attr('name');

        //var idTag = "clear-" + nameElement.replace('.', '_');
        //var new_link = generateClearLink(nameElement, idTag);
        //if (element.parent().find("a.color-picker-clear").length === 0) {
        //    element.parent().append(new_link);
        //    element.parent().css("text-align", "right");
        //}

        element.colorPicker(options);
        element.css("margin-bottom", "0px");

    }
}

function is_valid_rgb_or_hex_color(value) {
    value = value.toLowerCase();
    var rxValidRgb = /([r][g][b][a]?[(]\s*([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\s*,\s*([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\s*,\s*([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])(\s*,\s*((0\.[0-9]{1})|(1\.0)|(1)))?[)])/i
    var isRGBColor = rxValidRgb.test(value);

    var rxValidHEX = /^#([0-9A-F]{3}){1,2}$/i
    var isHExColor = rxValidHEX.test(value);

    return isRGBColor || isHExColor;
}


function generateOptionsColorPicker(itemPreview, legend, fields) {
    'use strict';
    var options = {
        buildCallback: function ($elm) {

            $elm.css('color', 'rgba(0,0,0,1)');
            var that = this;
            var currentRGB = '';
            var $currentSlider = $();
            var currentOffset = {};
            var $window = $(window);
            var mouseMove = function (e) { // don't render sliders here. Just setColor;
                var color = {}; // new calculated color

                color[currentRGB] = (e.pageX - currentOffset.left) / that.currentWidth * 255;
                that.color.setColor(color, 'rgb'); // set calculated value
                that.render(); // tell colorPicker to render
            };

            $elm.append( // render extra sliders and patch
                '<div class="cp-rgb-r"><div class="cp-rgb-r-cursor"></div></div>' +
                '<div class="cp-rgb-g"><div class="cp-rgb-g-cursor"></div></div>' +
                '<div class="cp-rgb-b"><div class="cp-rgb-b-cursor"></div></div>' +
                '<div class="cp-patch"><div></div></div><div class="cp-disp cp-listing"></div>' +
                '<div class="cp-custom"><input class="cp-custom-val" name="cp-custom-val" type="text"></div>');

            this.$sliders = $elm.find('.cp-rgb-r, .cp-rgb-g, .cp-rgb-b');
            this.cursorRStyle = this.$sliders.find('.cp-rgb-r-cursor')[0].style; // caching for faster render renderCallback
            this.cursorGStyle = this.$sliders.find('.cp-rgb-g-cursor')[0].style;
            this.cursorBStyle = this.$sliders.find('.cp-rgb-b-cursor')[0].style;

            this.patchStyle = $('.cp-patch div')[0].style;
            this.$display = $('.cp-disp');
            this.$alpha = $elm.find('.cp-alpha');

            $elm.on('mousedown', '.cp-rgb-r, .cp-rgb-g, .cp-rgb-b', function (e) { // event delegation
                $currentSlider = $(this); // well ;o)
                currentRGB = this.className.replace(/cp-rgb-(\D){1}/, "$1"); // cp-rgb-r -> r
                currentOffset = $currentSlider.offset(); // for later calculations
                that.currentWidth = $currentSlider.width(); // ... also here
                $window.on('mousemove.rgb', mouseMove); // install mousemove listener
                e.preventDefault && e.preventDefault(); // prevent selecting text
                mouseMove(e); // render color picker the first time
                return false; // for IE
            });

            $window.on('mouseup', function (e) {
                $window.off('mousemove.rgb'); // turn off mousemove event handler
            });

            $('#colorPickerMod').appendTo('head');


            $('.cp-custom-val').on('change', function (e) {
                var value = $(this).val();
                if (is_valid_rgb_or_hex_color(value)) {
                    $('input.current-selected-color-picker').val(value);
                    $('input.current-selected-color-picker').css('background-color', value);
                }
                else {
                    $('input.current-selected-color-picker').val('#000000');
                    $('input.current-selected-color-picker').css('background-color', '#000000');
                }

                $('.cp-color-picker').toggle(false);
                $('input.current-selected-color-picker').trigger('click');
            });

        },
        positionCallback: function ($elm) {

            var _$UI = this.$UI, // this is the instance; this.$UI is the colorPicker DOMElement
                position = $elm.offset(), // $elm is the current trigger / element that opened the colorPicker
                $window = $(window),
                gap = this.color.options.gap; // this.color.options stores all options

            // _$UI.appendTo($elm.closest('.wrapper').eq(0)); // demonstration only

            return { // this demo is a copy of the internal usage (to show how it works);
                'left': (_$UI._left = position.left) -
                    ((_$UI._left += _$UI._width -
                        ($window.scrollLeft() + $window.width())) + gap > 0 ?
                        _$UI._left + gap : 0),
                'top': (_$UI._top = position.top + $elm.outerHeight()) -
                    ((_$UI._top += _$UI._height -
                        ($window.scrollTop() + $window.height())) + gap > 0 ?
                        _$UI._top + gap : 0)
            }

        },
        renderCallback: function ($elm, toggled) {
            var colors = this.color.colors;
            var text = this.color.toString();
            var rgb2 = '#' + colors.HEX;
            var rgb = colors.RND.rgb;
            var oldValue = '';
            var currentValue = '';
            $('input.current-selected-color-picker').removeClass('current-selected-color-picker');
            $elm.addClass('current-selected-color-picker');
            $elm.css('color', 'rgba(0,0,0,1)');
            if (toggled === true) {

                $(".cp-color-picker").css("z-index", "1500");
            }
            else if (toggled === false) {

                if (itemPreview !== null && itemPreview !== undefined && itemPreview !== "")
                    $(itemPreview).css('color', rgb2);
                if (legend !== null && legend !== undefined && legend !== "") {
                    if ($('#' + legend).length > 0)
                        $('#' + legend).text(rgb2);
                }
                var colorSelected = "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")";
                var newColor = colorSelected;
                if (newColor !== "") {
                    var newColorRgb = 'rgb(';
                    if (newColor == '#ffffff')
                        newColorRgb += '255, 255, 255)';
                    else
                        newColorRgb += '0, 0, 0)';
                    $elm.css('color', 'rgba(0,0,0,1)');

                }
                //$('#listing-cms-form').find('input[name=""]')
                $elm.trigger('change');
            }
            this.patchStyle.backgroundColor = this.color.toString(); // no DOM access
            this.$display.text(rgb2); // ...and text aside
            $('input[name="cp-custom-val"]').val(rgb2);

            this.currentWidth = this.currentWidth || this.$UI.find('.cp-rgb-r')[0].clientWidth; // first time
            this.cursorRStyle.left = (rgb.r / 255 * this.currentWidth) + 'px'; // render sliders
            this.cursorGStyle.left = (rgb.g / 255 * this.currentWidth) + 'px'; // faster than with $().css
            this.cursorBStyle.left = (rgb.b / 255 * this.currentWidth) + 'px';


        }

    };

    return options;
}


function listingcmsblock_load_column_label_second_view(field, className) {
    let storage = listingcmsblock_get_fields_settings_storage_name(className);
    var columnSettings = sessionStorage.getItem(storage);

    $('.listing-cms-block .second-field-configuration .title-tabs-content input.label-custom').each(function () {
        var input = $(this);
        var languageId = input.data('language-id');
        $(".second-field-configuration .title-tabs-content .tabs-panel #label-second-" + languageId).val('');
    });

    var jsonSettings = JSON.parse(columnSettings);
    if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {

        jsonSettings.columns.forEach(function (item) {

            if (item.name === field) {

                $("#second_colum_name_settings").text(item.name);
                $("#second_name_settings").val(item.name);
                if (item.label && item.label.length > 0) {

                    item.label.forEach(function (label) {
                        if ($(".second-field-configuration .title-tabs-content .tabs-panel #label-second-" + label.language).length > 0) {
                            $(".second-field-configuration .title-tabs-content .tabs-panel #label-second-" + label.language).val(label.value);
                        }
                    });
                }

                if (item.type === "custom") {
                    $(".second-field-configuration .custom-column-content").removeClass('hide-custom');
                    $(".row_second_view_custom_column_settings .remove-button-section").removeClass('hide-custom');
                    $("textarea#second-custom-column-content").val(item.content);
                } else {
                    $(".second-field-configuration .custom-column-content").addClass('hide-custom');
                    $(".row_second_view_custom_column_settings .remove-button-section").addClass('hide-custom');
                    $("textarea#second-custom-column-content").val('');
                }

                if (item.sortValue !== null && item.sortValue !== undefined && item.defaultSort === true) {
                    $('select[name="sort_order_second"]').val(item.sortValue);
                }
                else if (item.defaultSort === true) {
                    $('select[name="sort_order_second"]').val(0);
                }
                else if (item.defaultSort === false) {
                    $('select[name="sort_order_second"]').val(0);
                }

                if (item.defaultSort === true) {
                    //show display
                    $('.second-field-configuration .sort_order_field').removeClass('is-hidden');
                }
                else if (item.defaultSort === false) {
                    //hide
                    $('.second-field-configuration .sort_order_field').addClass('is-hidden');
                }
            }
        });
    }
}

function ShowHideSpecialColumnSettings(mainSectionSelector, typeData, isCustom) {
    $('.' + mainSectionSelector).find('.additional-setting-columns').addClass('hide-custom');
    if ($('select[name="display-format"]').val() != '4') {
        return;
    }
    $('.' + mainSectionSelector).find('.column_width_field').removeClass('hide-custom');
    $('.' + mainSectionSelector).find('.add_column_filter').removeClass('hide-custom');
    switch (typeData) {
        case 'string':
            $('.' + mainSectionSelector).find('.truncate_chars_field').removeClass('hide-custom');
            break;
        case 'textarea':
            $('.' + mainSectionSelector).find('.truncate_chars_field').removeClass('hide-custom');
            $('.' + mainSectionSelector).find('.format_text_field').removeClass('hide-custom');
            break;
        case 'email':
            $('.' + mainSectionSelector).find('.clickable_mailto_field').removeClass('hide-custom');
            break;
        case 'phone':
            $('.' + mainSectionSelector).find('.clickable_phone_field').removeClass('hide-custom');
            break;
        case 'double':
        case 'percent':
            $('.' + mainSectionSelector).find('.format_number_field').removeClass('hide-custom');
            $('.' + mainSectionSelector).find('.decimals_field').removeClass('hide-custom');
            $('.' + mainSectionSelector).find('.percent_field').removeClass('hide-custom');
            break;
        case 'currency':
            $('.' + mainSectionSelector).find('.format_number_field').removeClass('hide-custom');
            $('.' + mainSectionSelector).find('.decimals_field').removeClass('hide-custom');
            $('.' + mainSectionSelector).find('.show_currency_field').removeClass('hide-custom');
            break;
        case 'date':
            $('.' + mainSectionSelector).find('.format_date').removeClass('hide-custom');
            break;
        case 'datetime':
            $('.' + mainSectionSelector).find('.format_date').removeClass('hide-custom');
            $('.' + mainSectionSelector).find('.format_time').removeClass('hide-custom');
            break;
        case 'time':
            $('.' + mainSectionSelector).find('.format_time').removeClass('hide-custom');
            break;
        case 'formula':
            break;
        case 'picklist':
            break;
        case 'multipicklist':
            break;
        case 'lookup':
            break;
        case 'boolean':
            $('.' + mainSectionSelector).find('.boolean_field').removeClass('hide-custom');
            break;
        case 'url':
            $('.' + mainSectionSelector).find('.clickable_field').removeClass('hide-custom');
            break;
        case 'custom':
            $('.' + mainSectionSelector).find('.display_as_format').removeClass('hide-custom');
            break
        case 'button':
            $('.' + mainSectionSelector).find('.button_field').removeClass('hide-custom');
            if ($('.' + mainSectionSelector).find('.button_field input[name="button-color-true"]').val() === '') {
                $('.' + mainSectionSelector).find('.button_field input[name="button-color-true"]').val('#A4B000');
            }
            if ($('.' + mainSectionSelector).find('.button_field input[name="button-color-false"]').val() === '') {
                $('.' + mainSectionSelector).find('.button_field input[name="button-color-false"]').val('#CACACA');
            }
            break;
        default:
            break;
    }

    var tableEditable = $('.listing-cms-block input[name="is-editable"]:checked').length > 0;

    $('.' + mainSectionSelector).find('.write-to-salesforce-section').addClass('hide-custom');
    if (isCustom) {
        $('.' + mainSectionSelector).find('.display_as_format').removeClass('hide-custom');
        if (tableEditable) {
            $('.' + mainSectionSelector).find('.write-to-salesforce-section').removeClass('hide-custom');
        }
    }
}

function LoadSpecialColumnSettings(mainSectionSelector, itemData) {
    var settingList = GetConfigurationSettings();
    var settingListValues = settingList.settingListValues;
    $.each(settingListValues, function (index, item) {

        var currentItem = settingList[item];

        var selector = currentItem['selector'];
        var type = currentItem['type'];
        if (type == 'multilabel') {
            if (itemData[item] && itemData[item].length > 0) {

                itemData[item].forEach(function (label) {
                    if ($('.' + mainSectionSelector + ' input[name="' + selector + '-' + label.language + '"]').length > 0) {
                        $('.' + mainSectionSelector + ' input[name="' + selector + '-' + label.language + '"]').val(label.value);
                    }
                });
            }

        } else if (type == 'checkbox') {
            $('.' + mainSectionSelector + ' input[name="' + selector + '"]').prop('checked', itemData[item]);
            if (selector == 'show-currency') {
                ShowHideCurrencySelector(itemData[item]);
            }
            if (selector == 'clickable-link') {
                ShowHideCustomLabel(itemData[item]);
            }
            if (selector == 'header-check-link') {
                ShowHideShowItemsSelected(itemData[item]);
            }
        }
        else {
            $('.' + mainSectionSelector + ' ' + type + '[name="' + selector + '"]').val(itemData[item]);
            if ($('.' + mainSectionSelector + ' ' + type + '[name="' + selector + '"]').hasClass('input-color-setting')
                && itemData[item] !== '' && itemData[item] !== null && itemData[item] !== undefined) {
                $('.' + mainSectionSelector + ' ' + type + '[name="' + selector + '"]').css('background-color', itemData[item]);
            }
            if (selector == 'format-number' && (itemData.type == 'double' || itemData.type == 'percent' || itemData.type == 'currency')) {
                ShowHideDecimalSection(itemData[item]);
            }

        }


        ShowHidePresetFilterValue(itemData.columnFilter);
    });
}

function listingcmsblock_load_column_label(field, className) {
    let storage = listingcmsblock_get_fields_settings_storage_name(className);
    var columnSettings = sessionStorage.getItem(storage);
    var editableTable = $('.listing-cms-block input[name="is-editable"]:checked').length > 0;

    $('.listing-cms-block .field-configuration .title-tabs-content  input.label-custom').each(function () {
        var input = $(this);
        var languageId = input.data('language-id');
        $(".field-configuration .title-tabs-content .tabs-panel #label-" + languageId).val('');
    });
    $('input[name="write-to-salesforce"]').prop('checked', false);
    $('select[name="field-to-write"]').val('');
    $('.additional-setting-columns input:not([type="checkbox"])').val('');
    $('.additional-setting-columns select').val('');
    $('.additional-setting-columns input[type="checkbox"]').prop('checked', false);

    //-- Load data of fields

    var jsonSettings = JSON.parse(columnSettings);
    if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {
        jsonSettings.columns.forEach(function (item) {

            if (item.name === field) {
                $('.write-to-salesforce-section').addClass('hide-custom');
                $("#colum_name_settings").text(item.name);
                $("#name_settings").val(item.name);
                if (item.label && item.label.length > 0) {

                    item.label.forEach(function (label) {
                        if ($(".field-configuration .title-tabs-content .tabs-panel #label-" + label.language).length > 0) {
                            $(".field-configuration .title-tabs-content .tabs-panel #label-" + label.language).val(label.value);
                        }
                    });
                }
                $(".field-configuration").removeClass('hide-custom');
                if (item.type === "custom") {
                    $(".field-configuration .custom-column-content").removeClass('hide-custom');
                    $(".row_custom_column_settings .remove-button-section").removeClass('hide-custom');
                    $("textarea#custom-column-content").val(item.content);

                    if (editableTable) {
                        $('.write-to-salesforce-section').removeClass('hide-custom');
                        $('input[name="write-to-salesforce"]').prop('checked', item['writeToSF']);
                        var columnisVisible = $('#table-columns-fields tbody tr.selected .switch-visible:checked').length > 0;
                        ShowHideWriteToSection(item['writeToSF'], columnisVisible);
                        $('select[name="field-to-write"]').val(item['fieldToWrite']);
                    }

                } else {
                    $(".field-configuration .custom-column-content").addClass('hide-custom');
                    $(".row_custom_column_settings .remove-button-section").addClass('hide-custom');
                    $("textarea#custom-column-content").val('');
                }

                if (item.sortValue !== null && item.sortValue !== undefined && item.defaultSort === true) {
                    $('select[name="sort_order"]').val(item.sortValue);
                }
                else if (item.defaultSort === true) {
                    $('select[name="sort_order"]').val(0);
                }
                else if (item.defaultSort === false) {
                    $('select[name="sort_order"]').val(0);
                }

                if (item.defaultSort === true) {
                    //show display
                    $('.field-configuration .sort_order_field').removeClass('is-hidden');
                }
                else if (item.defaultSort === false) {
                    //hide
                    $('.field-configuration .sort_order_field').addClass('is-hidden');
                }
                ShowHideSpecialColumnSettings('row_custom_column_settings', (item.type == 'custom' ? (item.displayAs != '' && item.displayAs != null ? item.displayAs : item.type) : item.type), item.type == 'custom');
                LoadSpecialColumnSettings('additional-setting-columns', item);
            }
        });
    }
}

function merge_current_fields_with_retrieved_data(retrievedData, currentData) {
    // Create a map of names from JSON2 for quick lookup
    const currentFieldsNames = new Set(currentData.columns.map(col => col.name));

    // Add elements from JSON1 to JSON2 if they are not present in JSON2
    retrievedData.columns.forEach(col1 => {
        if (!currentFieldsNames.has(col1.name)) {
            // Clone the column and set visible to false
            const newCol = { ...col1, visible: false };
            currentData.columns.push(newCol);
        }
    });

    // Filter out non-custom elements in JSON2 that are not present in JSON1
    const retrievedFieldsName = new Set(retrievedData.columns.map(col => col.name));
    currentData.columns = currentData.columns.filter(col2 => {
        return col2.type === "custom" || retrievedFieldsName.has(col2.name);
    });

    // Set the sort property consecutively starting from 1
    currentData.columns.forEach((col, index) => {
        col.sort = index;
    });

    // Return the modified columns array
    return currentData.columns;
}

function listingcmsblock_load_column_settings(columnSettings, className, fromRefresh, tableId, container) {
    var source = $('#listing-cms-form select[name="source"]').val();
    var displayFormat = $('#listing-cms-form select[name="display-format"]').val();
    var tableSelector = '#' + tableId;
    var containerSelector = '.' + container;
    var isEditable = false;
    var isdisplayExportCsv = $('#listing-cms-form input[name="display-export-csv"]').is(':checked');

    if ($(tableSelector + " tbody tr td.dataTables_empty").length > 0) {
        // Workaround to handle known issue of datatable widget  (Cannot set property '_DT_CellIndex')
        $(tableSelector + " tbody tr td.dataTables_empty").remove('colspan');
        $(tableSelector + " tbody tr").html('<td></td><td></td><td></td><td></td><td></td><td></td><td></td>');
    }
    $(tableSelector).DataTable().destroy();

    $(tableSelector + " tbody").empty();
    if ((source == '1' || source == '2') && displayFormat == '4') {
        isEditable = $('#listing-cms-form input[name="is-editable"]').is(':checked');
    }

    if ((columnSettings === null || columnSettings === undefined || columnSettings === '') && source == '2') {
        columnSettings = [];
        columnSettings = JSON.stringify(columnSettings);
    }
    else if (columnSettings === null || columnSettings === undefined || columnSettings === '') {
        return false;
    }

    if (isEditable === true) {
        $(tableSelector).find('thead tr th.cell-editable').removeClass('hide');
    }
    else
        $(tableSelector).find('thead tr th.cell-editable').addClass('hide');

    var jsonSettings = JSON.parse(columnSettings);
    var columns = jsonSettings.columns;

    $(className).addClass('hide-custom');
    if (columns && columns.length >= 0) {
        let storage = listingcmsblock_get_fields_settings_storage_name(className);
        var columnSettingsCurrent = sessionStorage.getItem(storage);
        var dataColumns = JSON.parse(columnSettingsCurrent);
        $(className).addClass('hide-custom');
        $(containerSelector).find(".remove-button-section").addClass('hide-custom');
        if (fromRefresh === true && dataColumns.columns.length > 0) {
            
            let mergeFields = merge_current_fields_with_retrieved_data(jsonSettings, dataColumns);
            columns = mergeFields;
            jsonSettings.columns = columns;
            sessionStorage.setItem(storage, JSON.stringify(jsonSettings));
            
        } else {
            jsonSettings.columns = sortResults(jsonSettings.columns, "sort", true);
            sessionStorage.setItem(storage, JSON.stringify(jsonSettings));
        }


        var i = 1;
        columns.forEach(function (column) {
            customcolumClass = (column.type === 'custom') ? "class='custom-colum'" : "";
            // Add to HTML
            var htmlRow = "<tr data-field='" + column.name + "' data-orderRow='" + i + "' " + customcolumClass + " >";
            htmlRow += "<td class='cell-order'>" + i + "</td>";
            var columnName = column.name;
            if (column.writeToSF && column.fieldToWrite) {
                columnName += " [Writes to: " + column.fieldToWrite + "]";
            }
            htmlRow += "<td class='cell-name'>" + columnName + "</td>";
            var defaultLabel = column.defaultLabel, firstValueLabel = '';
            if (column.defaultLabel == '-') {
                var firstValue = true;
                for (var j = 0; j < column.label.length; j++) {
                    if (firstValue) {
                        firstValueLabel = column.label[j].value;
                        firstValue = false;
                    }
                    if (column.label[j].language == window.translation['language']) {
                        defaultLabel = column.label[j].value;
                        break;
                    }
                }
            }
            htmlRow += "<td class='cell-label'>" + (defaultLabel != '' ? defaultLabel : firstValueLabel) + "</td>";
            var checkField = '<div class="switch small"> <input class="switch-input switch-visible"  data-field="' + column.name + '"  id="visible-' + column.name + '" name="visible-' + column.name + '" type="checkbox"> <label class="switch-paddle" for="visible-' + column.name + '"> <span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span> <span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span> </label> </div>';
            htmlRow += "<td class='cell-visible'>" + checkField + "</td>";
            //Updatable
            var updatableField = (column.updatable !== null && column.updatable !== undefined) ? column.updatable : false;
            var editableField = (column.editable !== null && column.editable !== undefined) ? column.editable : false;
            var classSelectable = "";
            if (updatableField !== true)
                classSelectable = "not-selectable";
            checkField = '<div class="switch small"><input class="switch-input switch-editable ' + classSelectable + '" data-field="' + column.name + '" id="update-' + column.name + '" name="update-' + column.name + '" type="checkbox" /><label class="switch-paddle" for="update-' + column.name + '"><span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span> <span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span></label></div>';
            htmlRow += '<td class="cell-editable">' + checkField + '</td>';
            checkField = '<div class="switch small"> <input class="switch-input switch-column-sorteable" data-field="' + column.name + '" id="sort-' + column.name + '" name="sort-' + column.name + '" type="checkbox"> <label class="switch-paddle" for="sort-' + column.name + '"> <span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span> <span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span> </label> </div>';
            htmlRow += "<td class='cell-sort'>" + ((className == '.calendar-data-configuration') ? '' : checkField) + "</td>";
            checkField = '<div class="switch small"> <input class="switch-input switch-column-exportable" data-field="' + column.name + '" id="exportable-' + column.name + '" name="exportable-' + column.name + '" type="checkbox"> <label class="switch-paddle" for="exportable-' + column.name + '"> <span class="switch-active" aria-hidden="true">' + window.translation.yes + '</span> <span class="switch-inactive" aria-hidden="true">' + window.translation.no + '</span> </label> </div>';
            htmlRow += "<td class='cell-exportable'>" + checkField + "</td>";
            htmlRow += "<td class='cell-reorder'><span></span></td>";
            htmlRow += "</tr>";
            $(tableSelector).append(htmlRow);
            i = i + 1;
            //Load boolean values
            $(tableSelector).find('input[name="visible-' + column.name + '"]').prop('checked', column.visible);
            if(column.exportable == null){
                if (column.visible) {
                    $(tableSelector).find('input[name="exportable-' + column.name + '"]').prop('checked', true);
                }else{
                    $(tableSelector).find('input[name="exportable-' + column.name + '"]').prop('checked', false);
                }
            }else{
                $(tableSelector).find('input[name="exportable-' + column.name + '"]').prop('checked', column.exportable);
            }
            $(tableSelector).find('input[name="sort-' + column.name + '"]').prop('checked', column.defaultSort);
            if (column.visible === false && editableField === true)
                editableField = false;
            $(tableSelector).find('input[name="update-' + column.name + '"]').prop('checked', editableField);
            if (classSelectable == 'not-selectable')
                $(tableSelector).find('input[name="update-' + column.name + '"]').attr('disabled', 'disabled');
            else
                $(tableSelector).find('input[name="update-' + column.name + '"]').removeAttr('disabled');
            if (className === '.calendar-data-configuration') {
                $(tableSelector).find('.cell-sort').addClass('hide-custom');
                $(tableSelector).find('.cell-visible').addClass('extra-width');
            }
        });

        if (isEditable === true)
            $(tableSelector).find('tbody tr td.cell-editable').removeClass('hide');
        else
            $(tableSelector).find('tbody tr td.cell-editable').addClass('hide');


        if(isdisplayExportCsv === true){
            $(tableSelector).find('thead tr th.cell-exportable').removeClass('hide');
            $(tableSelector).find('tbody tr td.cell-exportable').removeClass('hide');
        }else{
            $(tableSelector).find('thead tr th.cell-exportable').addClass('hide');
            $(tableSelector).find('tbody tr td.cell-exportable').addClass('hide');
        }

        var datatable = $(tableSelector).DataTable({
            "bFilter": false,
            "bPaginate": false,
            "bLengthChange": false,
            "bProcessing": false,
            "orderFixed": [0, 'asc'],
            rowReorder: {
                selector: 'td:last-child'
            },
            "oLanguage": {
                "oPaginate": {
                    "sPrevious": window.translation.sPrevious,
                    "sNext": window.translation.sNext
                },
                "sZeroRecords": window.translation.sZeroRecords,
                "sInfoFiltered": window.translation.sInfoFiltered,
                "sInfo": window.translation.sInfo,
                "sLoadingRecords": window.translation.sLoadingRecords,
                "sSearch": window.translation.search
            }
        });

        datatable.on('row-reorder', function (e, diff, edit) {
            for (var i = 0, ien = diff.length; i < ien; i++) {
                var rowData = datatable.row(diff[i].node).data();
                var fieldName = '';
                if (rowData !== null && rowData !== undefined) {
                    fieldName = rowData[1];
                } else {
                    fieldName = $(diff[i].node).attr('data-field');
                }
                var newOrder = diff[i].newData;
                listingcmsblock_update_sort(fieldName, newOrder, className);
                $('#listing-cms-form input[name="pending-changes"]').val(true);
            }
        });

        $(className).addClass('hide-custom');

    } else {
        $(className).addClass('hide-custom');
    }
}

function listingcmsblock_load_custom_columns_to_append(className) {

    var optionsToAppend = '';

    let storage = listingcmsblock_get_fields_settings_storage_name(className);
    var columnSettings = sessionStorage.getItem(storage);
    if (columnSettings === null || columnSettings === undefined || columnSettings === '') {
        return false;
    }

    var jsonSettings = JSON.parse(columnSettings);
    var columns = jsonSettings.columns;


    if (columns && columns.length > 0) {
        columns.forEach(function (column) {
            if (column.type === 'custom') {
                optionsToAppend += '<option value="' + column.name + '">' + column.name + '</option>'
            }
        });

    }

    return optionsToAppend;
}

function addRuleFilter(fieldToFilter, fieldType, friendlyFieldName, operator, filter_value) {
    $('#listing-cms-form .rule_filter span.error').remove();
    var ruleQuantity = $('#listing-cms-form .custom_filtering .filter_rules .rule').length;
    var operatorText = $('#listing-cms-form select[name="filter_operator"] option[value="' + operator + '"]').text();
    var value_rule = filter_value === '' ? '<span class="empty">Empty</span>' : filter_value;
    if (operatorText === "") {
        operatorText = operator;
    }
    var andText = $('#listing-cms-form .custom_filtering input[type="checkbox"].activator').is(":checked");
    var rule = '<div class="rule columns" data-field="' + fieldToFilter + '" data-operator="' + operator + '" data-value="' + filter_value + '" data-type="' + fieldType + '">'
        + '<div class="field_order columns small-1">' + (ruleQuantity + 1) + '.' + '</div>'
        + '<div class="field_rule columns small-3">' + friendlyFieldName + '</div>'
        + '<div class="operator_rule columns small-3">' + operatorText + '</div>'
        + '<div class="value_rule columns small-3">' + value_rule + '</div>'
        + '<div class="columns small-1 operation">' + (andText ? '&nbsp;' : 'AND') + '</div>'
        + '<div class="delete_rule  columns small-1"><a href="#" aria-label="delete rule"></a></div>'
        + '<div/>';

    // adding new rule    
    $('#listing-cms-form .without_rules').addClass('hide-custom');
    $('#listing-cms-form .filter_rules').append(rule);
    $('#listing-cms-form input[name="filter_value"]').val('');
}

function addRuleFilterSecond(fieldToFilter, fieldType, friendlyFieldName, operator, filter_value) {
    $('#listing-cms-form .second_rule_filter span.error').remove();
    var ruleQuantity = $('#listing-cms-form .second_filter_rules .rule').length;
    var operatorText = $('#listing-cms-form select[name="second_filter_operator"] option[value="' + operator + '"]').text();
    var value_rule = filter_value === '' ? '<span class="empty">Empty</span>' : filter_value;
    if (operatorText === "") {
        operatorText = operator;
    }
    var rule = '<div class="rule columns" data-field="' + fieldToFilter + '" data-operator="' + operator + '" data-value="' + filter_value + '" data-type="' + fieldType + '">'
        + '<div class="field_order columns small-1">' + (ruleQuantity + 1) + '.' + '</div>'
        + '<div class="field_rule columns small-3">' + friendlyFieldName + '</div>'
        + '<div class="operator_rule columns small-3">' + operatorText + '</div>'
        + '<div class="value_rule columns small-3">' + value_rule + '</div>'
        + '<div class="columns small-1 operation">AND</div>'
        + '<div class="second_delete_rule  columns small-1"><a href="#" aria-label="delete rule"></a></div>'
        + '<div/>';

    // adding new rule    
    $('#listing-cms-form .second_without_rules').addClass('hide-custom');
    $('#listing-cms-form .second_filter_rules').append(rule);
    $('#listing-cms-form input[name="second_field_to_filter"]').val('');
}

function HideShowSections() {
    var not_visible_source = [];
    not_visible_source[0] = ['display-dynamic-filter-section', 'colum-search-auto-suggest-fields', 'field-configuration', 'chart_settings', 'custom_filtering', 'datatable-editable', 'enforce_filtering', 'local_metadata', 'map_fields', 'row_auto_refresh_settings', 'row_custom_card_template', 'row_custom_column_settings', 'row_date_to_group_results', 'row_salesforce_source', 'soql_query_section', 'row_refresh_object', 'row_max_items_first_load'];
    not_visible_source[1] = ['field-configuration', 'row_hide_created_title', 'row_read_more_summary', 'soql_query_section', 'row_order_sort', 'column-display-round-image', 'page_categories', 'include_subcategories', 'hide_created_date'];
    not_visible_source[2] = ['colum-search-auto-suggest-fields', 'field-configuration', 'row_hide_created_title', 'local_metadata', 'row_read_more_summary', 'row_salesforce_source', 'custom_filtering', 'row_order_sort', 'row_auto_refresh_settings', 'column-display-round-image', 'page_categories', 'include_subcategories', 'row_refresh_object', 'hide_created_date', 'row_number_of_items', 'row_max_items_first_load'];

    var not_visible_by_format = [];

    //List
    not_visible_by_format[0] = ['display-dynamic-filter-section', 'display-export-csv-section', 'chart_settings', 'datatable-editable', 'enforce_filtering', 'map_fields', 'row_custom_card_template', 'row_custom_column_settings', 'row_date_to_group_results', 'row_hide_created_title', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'color-text-custom-card'];
    //Grid
    not_visible_by_format[1] = ['display-export-csv-section', 'chart_settings', 'datatable-editable', 'map_fields', 'row_custom_column_settings', 'row_date_to_group_results', 'row_hide_created_title', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'color-text-custom-card'];
    //Slider
    not_visible_by_format[2] = ['display-dynamic-filter-section', 'display-export-csv-section', 'chart_settings', 'datatable-editable', 'map_fields', 'row_custom_column_settings', 'row_date_to_group_results', 'row_hide_created_title', 'row_read_more_summary', 'commentsTimeline', 'color-text-custom-card'];
    //Custom Card Template
    not_visible_by_format[3] = ['display-export-csv-section', 'chart_settings', 'datatable-editable', 'map_fields', 'row_custom_column_settings', 'row_date_to_group_results', 'row_hide_created_title', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'color-text-custom-card'];
    //Data Table
    not_visible_by_format[4] = ['chart_settings', 'enforce_filtering', 'map_fields', 'row_auto_refresh_settings', 'row_custom_card_template', 'row_date_to_group_results', 'row_hide_created_title', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'customOrder', 'color-text-custom-card', 'number-results-search'];
    //Calendar
    not_visible_by_format[5] = ['display-dynamic-filter-section', 'display-export-csv-section', 'chart_settings', 'datatable-editable', 'map_fields', 'row_custom_card_template', 'row_display_search_section', 'row_hide_created_title', 'row_items_per_page', 'row_number_of_items', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'color-text-custom-card', 'display-export-csv-section'];
    //Map
    not_visible_by_format[6] = ['display-dynamic-filter-section', 'display-export-csv-section', 'chart_settings', 'datatable-editable', 'enforce_filtering', 'row_custom_card_template', 'row_custom_column_settings', 'row_date_to_group_results', 'row_display_search_section', 'row_hide_created_title', 'row_items_per_page', 'row_number_of_items', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'customOrder', 'color-text-custom-card'];
    //Comments Timeline
    not_visible_by_format[7] = ['display-dynamic-filter-section', 'display-export-csv-section', 'chart_settings', 'datatable-editable', 'map_fields', 'row_auto_refresh_settings', 'row_custom_column_settings', 'row_date_to_group_results', 'row_hide_created_title', 'row_read_more_summary', 'slider-settings', 'customOrder', 'enforce_filtering'];
    //Bar Chart
    not_visible_by_format[8] = ['display-dynamic-filter-section', 'display-export-csv-section', 'datatable-editable', 'map_fields', 'row_auto_refresh_settings', 'row_custom_card_template', 'row_custom_column_settings', 'row_date_to_group_results', 'row_display_search_section', 'row_hide_created_title', 'row_items_per_page', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'color-text-custom-card', 'column-chart-image', 'pie-chart-image', 'donut-chart-image'];
    //Column Chart
    not_visible_by_format[9] = ['display-dynamic-filter-section', 'display-export-csv-section', 'datatable-editable', 'map_fields', 'row_auto_refresh_settings', 'row_custom_card_template', 'row_custom_column_settings', 'row_date_to_group_results', 'row_display_search_section', 'row_hide_created_title', 'row_items_per_page', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'color-text-custom-card', 'bar-chart-image', 'pie-chart-image', 'donut-chart-image'];
    //Pie Chart
    not_visible_by_format[10] = ['display-dynamic-filter-section', 'display-export-csv-section', 'datatable-editable', 'map_fields', 'row_auto_refresh_settings', 'row_custom_card_template', 'row_custom_column_settings', 'row_date_to_group_results', 'row_display_search_section', 'row_hide_created_title', 'row_items_per_page', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'color-text-custom-card', 'bar-chart-image', 'column-chart-image', 'donut-chart-image', 'title-axis-x', 'title-axis-y', 'alias-value'];
    //Donut Chart
    not_visible_by_format[11] = ['display-dynamic-filter-section', 'display-export-csv-section', 'datatable-editable', 'map_fields', 'row_auto_refresh_settings', 'row_custom_card_template', 'row_custom_column_settings', 'row_date_to_group_results', 'row_display_search_section', 'row_hide_created_title', 'row_items_per_page', 'row_read_more_summary', 'slider-settings', 'commentsTimeline', 'color-text-custom-card', 'bar-chart-image', 'column-chart-image', 'pie-chart-image', 'title-axis-x', 'title-axis-y', 'alias-value'];
    //RSS Feed
    not_visible_by_format[12] = ['display-dynamic-filter-section', 'display-export-csv-section', 'chart_settings', 'datatable-editable', 'map_fields', 'row_custom_column_settings', 'row_date_to_group_results', 'row_hide_created_title', 'row_read_more_summary', 'commentsTimeline', 'color-text-custom-card'];

    var self = $('#listing-cms-block-conf');
    self.find('.hide-custom:not(.body-section)').removeClass('hide-custom');

    var displayFormat = self.find("select[name='display-format']").val();
    $.each(not_visible_by_format[displayFormat], function (index, item) {
        self.find('.' + item).addClass('hide-custom');
    });

    var source = self.find("select[name='source']").val();
    $.each(not_visible_source[source], function (index, item) {
        self.find('.' + item).addClass('hide-custom');
    });
}

function listingcmsblock_facet_template_item() {
    var itemTemplate = '<div class="row body-section" data-id="@id@" data-field="@field@" data-label="@label@" data-type="@type@" data-items-to-display="@items@" data-include-results-number="@counts@" data-default-from="@default-from@" data-default-to="@default-to@" data-facets-show-records="@facets-show-records@" data-facets-position="@facets-position@" >';
    itemTemplate += '    <div class="columns small-3">@label-default@</div>';
    itemTemplate += '    <div class="columns small-3">@field@</div>';
    itemTemplate += '    <div class="columns small-2">@items-display@</div>';
    itemTemplate += '    <div class="columns small-2">';
    itemTemplate += '        @count-content@';
    itemTemplate += '    </div>';
    itemTemplate += '    <div class="columns small-2 @admin-class@">';
    itemTemplate += '        <a title="Edit Facets" class="edit-item" data-element-reveal="facet-configuration-detail"></a>';
    itemTemplate += '        <a title="Remove Facet" class="remove-item"></a>';
    itemTemplate += '    </div>';
    itemTemplate += '</div>';
    return itemTemplate;
}

function listingcmsblock_facet_template_item_show_content() {
    return '<a title="Show Counts Enabled" class="enabled-count"></a>';
}

function listingcmsblock_load_and_set_facets_filter(self, facetsConfigurationString) {
    self.find('.body-detail-facets').empty();
    if (facetsConfigurationString) {
        var facetsConfiguration = JSON.parse(facetsConfigurationString);
        if (facetsConfiguration.length > 0) {
            var itemTemplate = listingcmsblock_facet_template_item();
            var htmlToAdd = '';
            var isGlobaluser = $('#is-global-user').val() === 'true';
            self.find('.body-section.not-facets').addClass('hide-custom');
            facetsConfiguration.forEach(function (item) {
                var itemHtml = itemTemplate;
                itemHtml = itemHtml.replaceAll('@counts@', item.IncludeResultsNumber);
                itemHtml = itemHtml.replaceAll('@facets-show-records@', item.ShowOnlyWithRecords ? item.ShowOnlyWithRecords : false)
                itemHtml = itemHtml.replaceAll('@facets-position@', item.FacetLocation ? item.FacetLocation : null)
                var contentToAdd = '&nbsp;';
                if (item.IncludeResultsNumber) {
                    contentToAdd = listingcmsblock_facet_template_item_show_content();

                }
                itemHtml = itemHtml.replaceAll('@field@', item.Field);
                itemHtml = itemHtml.replaceAll('@id@', item.Id);
                itemHtml = itemHtml.replaceAll('@items@', item.ItemsToDisplay);
                var default_from = '';
                var default_to = '';
                if (item.Type == 'date-range') {
                    var splitIme = item.PredefinedValue && item.PredefinedValue != '' ? item.PredefinedValue.split('%') : [];
                    if (splitIme && splitIme.length == 2) {
                        default_from = splitIme[0];
                        default_to = splitIme[1];
                    }
                    itemHtml = itemHtml.replaceAll('@items-display@', "-");
                    itemHtml = itemHtml.replaceAll('@count-content@', "-");
                    itemHtml = itemHtml.replaceAll('@default-from@', default_from);
                    itemHtml = itemHtml.replaceAll('@default-to@', default_to);
                    itemHtml = itemHtml.replaceAll('@admin-class@', '');
                }
                else {
                    itemHtml = itemHtml.replaceAll('@items-display@', item.ItemsToDisplay);
                    itemHtml = itemHtml.replaceAll('@count-content@', contentToAdd);
                    itemHtml = itemHtml.replaceAll('@admin-class@', ''); 
                    itemHtml = itemHtml.replaceAll('@default-from@', '');
                    itemHtml = itemHtml.replaceAll('@default-to@', '');
                }                
                itemHtml = itemHtml.replaceAll('@label-default@', item.Label[window.translation['language_iso']]);
                itemHtml = itemHtml.replaceAll('@label@', JSON.stringify(item.Label).replaceAll('"', '~'));
                itemHtml = itemHtml.replaceAll('@type@', item.Type);
                htmlToAdd += itemHtml;
            });

            self.find('.body-detail-facets').empty().append(htmlToAdd);
        }
        else {
            self.find('.body-section.not-facets').removeClass('hide-custom');
        }
    }
    else {
        self.find('.body-section.not-facets').removeClass('hide-custom');
    }
}

function listingcmsblock_load_and_set_dynamic_filter(self, options, optionsFiltersWithDates) {
    var currentValue = self.find('input[name="display-dynamic-filter-val"]').val();
    if (options) {
        self.find('select[name="display-dynamic-filter"]').empty().append(options);        
    }
    if (optionsFiltersWithDates) {
        $('#facet-configuration-detail').find('select[name="facets-fields"]').empty().append(optionsFiltersWithDates);
    }

    if (selectDynamiFilterModal != undefined && selectDynamiFilterModal != null) {
        selectDynamiFilterModal.destroy();
        selectDynamiFilterModal = null;
    }

    try {
        selectDynamiFilterModal = new SlimSelect({
            select: 'select[name="display-dynamic-filter"]',
            placeholder: 'Picklist to Display',
            showSearch: false
        });
        if (currentValue && currentValue != '') {
            selectDynamiFilterModal.set(currentValue.split(','));
            self.find('.show-counts-per-filter-section').removeClass('hide-custom');
        }
        else {
            self.find('.show-counts-per-filter-section').addClass('hide-custom');

        }
    } catch (error) {
        try {
            if (self.find('.ss-main.no-custom-multiple').length > 0) {
                self.find('.ss-main.no-custom-multiple').remove();
                self.find('select#display-dynamic-filter').removeAttr('data-ssid');
                self.find('select#display-dynamic-filter').removeAttr('aria-hidden');
                self.find('select#display-dynamic-filter').removeAttr('style');
                selectDynamiFilterModal = new SlimSelect({
                    select: 'select[name="display-dynamic-filter"]',
                    placeholder: 'Picklist to Display',
                    showSearch: false
                });
                if (currentValue && currentValue != '') {
                    $('select[name = "display-dynamic-filter"]').val(currentValue.split(','));
                    self.find('.show-counts-per-filter-section').removeClass('hide-custom');
                }
            }
        } catch (errorInner) {
            console.log('Initialization Slim Select: ' + errorInner)
        }
    }

}


function listingcmsblock_load_slimselect(self, options, valInput, selectInput, placeholder) {
    
    var currentValue = self.find('input[name="' + valInput + '"]').val();
    if (options) {
        self.find('select[name="' + selectInput +'"]').empty().append(options);
    }

    if (selectDynamiFilterModal != undefined && selectDynamiFilterModal != null) {
        selectDynamiFilterModal.destroy();
        selectDynamiFilterModal = null;
    }

    try {
        selectDynamiFilterModal = new SlimSelect({
            select: 'select[name="' + selectInput +'"]',
            placeholder: placeholder,
            closeOnSelect: false, // Keep the dropdown open for multiple selections
            allowDeselect: true,  // Allow deselecting options
        });
        if (currentValue && currentValue != '') {
            selectDynamiFilterModal.set(currentValue.split(','));
            self.find('.show-counts-per-filter-section').removeClass('hide-custom');
        }
        else {
            self.find('.show-counts-per-filter-section').addClass('hide-custom');

        }
    } catch (error) {
        try {
            if (self.find('.ss-main.no-custom-multiple').length > 0) {
                self.find('.ss-main.no-custom-multiple').remove();
                self.find('select#' + selectInput +'').removeAttr('data-ssid');
                self.find('select#' + selectInput +'').removeAttr('aria-hidden');
                self.find('select#' + selectInput +'').removeAttr('style');
                selectDynamiFilterModal = new SlimSelect({
                    select: 'select[name="' + selectInput +'"]',
                    placeholder: placeholder,
                    showSearch: false
                });
                if (currentValue && currentValue != '') {
                    selectDynamiFilterModal.set(currentValue.split(','));
                    //$('select[name = "' + selectInput +'"]').val(currentValue.split(','));
                }
            }
        } catch (errorInner) {
            console.log('Initialization Slim Select: ' + errorInner)
        }
    }

}

function listingcmsblock_backend() {
    if (!is_backend_page()) return;
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var editor;

    $(document).on('click', 'a[data-element-reveal="listing-cms-block-conf"]', function () {
        RemoveModalConfigurationForRSS();
        std_visibility_per_role_block('#listing-cms-block-conf');

        var self = $('#listing-cms-block-conf');
        var formSelector = '#listing-cms-block-conf';
        var blockId = $(this).attr('data-block-id');
        var sourceInvoked = $(this).attr('source-invoked');

        date_picker_input_inner();

        self.find('form').removeClass('soql-selected');
        self.find('input[name="is-for-sharing-portal"]').prop('checked', false);
        //Open modal
        self.foundation('open');
        self.find('#commentsTimeline').addClass('hide-custom');
        self.find('.soql_query_section').addClass('hide-custom');
        self.find('.not-result-text').removeClass('hide-custom');
        self.find('input[name="hide-if-no-results"]').prop('checked', false);
        self.find('.listing-multi-area').removeClass('is-hidden');
        self.find('textarea[name="soql-query"]').text('');
        self.find('textarea[name="second_soql_query"]').text('');
        self.find('input[name="display-dynamic-filter-val"]').val('');
        self.find('select[name="display-dynamic-filter"] option').remove();
        self.find('input[name="show-counts-per-filter"]').prop('checked', false);
        self.find('.row_date_to_group_results input[name="default-date"]').val('');//remove any other value
        listingcmsblock_actions_local_listview(false);
        //Reinitialize methods inside modal
        self.foundation();
        var sfObjAux = self.find('select[name="salesforce_object"]').val();
        var sfViewAux = self.find('select[name="salesforce_view"]').val();
        if ((sfObjAux !== null || sfObjAux !== undefined) && (sfViewAux !== null || sfViewAux !== undefined)) {
            self.find('select[name="salesforce_object"]').val('');
            self.find('select[name="salesforce_view"]').val('');
        }
        self.find('.body-detail-facets .row.body-section').remove();
        self.find('.body-section.not-facets').addClass('hide-custom');
        //Initiate jquery validate
        initiate_jquery_validate_reveal($('#listing-cms-form'), 'listing-cms-form');

        //Load pageCategories stored in DB
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetPageCategories",
            data: {},
            beforeSend: function () {
                self.find('.processing_screen').show();
                self.find('select[name="page-categories"]').empty();
                self.find('input[name="customColors"]').val('');
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            var hideProcessingScreen = true;
            var pageCategories = jsonResult.pageCategories;
            if (pageCategories.length > 0) {
                var info_options = '';

                for (var i = 0; i < pageCategories.length; i++) {
                    var info_option_row = '<option value="' + pageCategories[i].ID + '">' + pageCategories[i].Name + '</option>';
                    info_options += info_option_row;

                    if (pageCategories[i].PageCategories.length) {
                        info_options = listingcmsblock_displayoptionpagecategorieslisting(pageCategories[i].PageCategories, info_options, 1);
                    }
                }

                self.find('select[name="page-categories"]').append('<option value="">' + window.translation.select_content_type + '</option>');
                self.find('select[name="page-categories"]').append(info_options);
            }
            else {
                self.find('select[name="page-categories"]').append('<option value="">' + window.translation.select_content_type + '</option>');
            }

            //Processing CustomSessionVar
            var customSessionVar = jsonResult.customSessionVar;

            //Remove previous codeMirror
            self.find('.CodeMirror').remove();

            //Load codemirror library in modal
            editor = CodeMirror.fromTextArea(document.getElementById("codemirror-listingcms"), {
                extraKeys: { "Ctrl-Space": "autocomplete" },
                autoRefresh: true,
                lineNumbers: true,
                styleActiveLine: true,
                matchBrackets: true
            });

            if ($('#special-section-for-second-view').length > 0) {
                var specialSection = $('#special-section-for-second-view');
                specialSection.find('input[name="enable-secondary-listview"]').prop('checked', false);
                specialSection.find('.special-settings-second-view').hide();
                specialSection.find('select[name="second_salesforce_object"]').val('');
                specialSection.find('select[name="second_salesforce_view"]').val('');
                specialSection.find('input[name="second-field-to-compare"]').val('');
                specialSection.find('textarea[name="second-filter-view"]').val('');
                specialSection.find('input[name="second-filter-criteria"]').val('');
                specialSection.find('input[name="second-field-to-group"]').val('');
                specialSection.find('select[name="second_view_source"]').val(1);
                specialSection.find('.special-settings-second-from-sf-view').hide();
                specialSection.find('.special-settings-second-from-soql').hide();
                //specialSection.find('.second-field-configuration').addClass('hide-custom');
                specialSection.find('.second-field-configuration').hide();
                specialSection.hide();
            }


            if (blockId && blockId !== '0') {
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetListingCMSBlockInfo",
                    data: { blockId: blockId }
                }).done(function (data2) {

                    var jsonResultDetail = JSON.parse(data2);
                    //Assign values to modal
                    if (jsonResultDetail && jsonResultDetail.code === 200) {
                        self.find('input[name="review-filters-loaded"]').val('true');
                        self.find('.number-results-search').removeClass('hide-custom');
                        $('#listing-cms-block-conf .listingCMSckeditor').each(function () {
                            var languageId = $(this).data('language-id');
                            initialize_ckeditor_listingCMS('no-results-', languageId);
                            $('#no-results-' + languageId).text('');
                            add_event_for_ckeditor('no-results-' + languageId, "#listing-cms-form");

                            initialize_ckeditor_listingCMS('pre-content-', languageId);
                            $('#pre-content-' + languageId).text('');
                            add_event_for_ckeditor('pre-content-' + languageId, '#listing-cms-form');
                        });

                        hideVisibleOptions(jsonResultDetail.uniqueRegion, '#listingcmsblock-advanced-settings');

                        if (jsonResultDetail.blockInfo) {
                            //Assign block info
                            self.find('input[name="system_name"]').val(jsonResultDetail.blockInfo.SystemName);
                            self.find('input[name="listing-cms-parent-id"]').val(jsonResultDetail.blockInfo.ID);
                            self.find('input[name="css_class"]').val(jsonResultDetail.blockInfo.CssClass);
                            self.find('select[name="region"]').val(jsonResultDetail.blockInfo.Region);
                            self.find('input[name="sort_weight"]').val(jsonResultDetail.blockInfo.Weight);

                            if (jsonResultDetail.blockInfo.subsiteId !== '0' && jsonResultDetail.blockInfo.subsiteId !== 0) {
                                if (self.find('select[name="subsite_id"]').length > 0) {
                                    self.find('select[name="subsite_id"]').val(jsonResultDetail.blockInfo.subsiteId);
                                } else {
                                    self.find('input[name="subsite_id"]').val(jsonResultDetail.blockInfo.subsiteId);
                                }
                            }

                            if (jsonResultDetail.blockInfo.ShowTitle) {
                                self.find('input[name="listingcms_show_title"]').val(jsonResultDetail.blockInfo.ShowTitle);
                                self.find('input.listingcms-show-title').prop('checked', true);
                            }
                            else {
                                self.find('input[name="listingcms_show_title"]').val(null);
                                self.find('input.listingcms-show-title').prop('checked', false);
                            }

                            if (jsonResultDetail.blockInfo.Enabled) {
                                self.find('input[name="listingcms-enabled"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="listingcms-enabled"]').prop('checked', false);
                            }


                            if (jsonResultDetail.blockInfo.IsForSharingPortal) {
                                self.find('input[name="is-for-sharing-portal"]').prop('checked', true);
                                self.find('.listing-multi-area').addClass('is-hidden');
                            }
                            else {
                                self.find('input[name="is-for-sharing-portal"]').prop('checked', false);
                                self.find('.listing-multi-area').removeClass('is-hidden');
                            }

                            self.find('input#listingcms_visibility_' + jsonResultDetail.blockInfo.Visibility).prop('checked', true);
                            self.find('textarea[name="visibility_urls"]').val(jsonResultDetail.blockInfo.VisibilityUrls);

                            if (jsonResultDetail.blockInfo.Visibility != 0) {
                                self.find('#listingcms_exception_url_container').removeClass('is-hidden');
                            }
                            else {
                                self.find('#listingcms_exception_url_container').addClass('is-hidden');
                            }
                            if (jsonResultDetail.authorization_settings) {
                                loadAuthorizedForBlock('#listing-cms-block-conf', JSON.parse(jsonResultDetail.authorization_settings));
                            }
                        }
                        if (jsonResultDetail.cmsBlock) {
                            //Assign listingcmsblock info
                            self.find('input[name="listing-cms-block-id"]').val(jsonResultDetail.cmsBlock.Id);
                            self.find('select[name="order-option"]').val(jsonResultDetail.cmsBlock.Order);
                            self.find('select[name="order-direction"]').val(jsonResultDetail.cmsBlock.OrderDirection);
                            self.find('input[name="number-items"]').val(jsonResultDetail.cmsBlock.NumberOfItems);

                            self.find('input[name="feed-id-code"]').val(jsonResultDetail.cmsBlock.FeedId);
                            self.find('input[name="feed-title"]').val(jsonResultDetail.cmsBlock.FeedTitle);
                            self.find('input[name="feed-description"]').val(jsonResultDetail.cmsBlock.FeedDescription);
                            self.find('input[name="feed-link"]').val(jsonResultDetail.cmsBlock.FeedLink);
                            self.find('textarea[name="other-channel-settings"]').text(jsonResultDetail.cmsBlock.FeedHeaderDescription);
                            if (jsonResultDetail.RSSFeedURL) {
                                self.find("#feed-url").text(jsonResultDetail.RSSFeedURL);
                            }
                            else {
                                self.find("#feed-url").text('');
                            }


                            self.find('input[name="items-per-page"]').val(jsonResultDetail.cmsBlock.ItemsPerPage);
                            self.find('input[name="max-items-first-load"]').val(jsonResultDetail.cmsBlock.MaxItemsAtFirstLoad);
                            self.find('select[name="page-categories"]').val(jsonResultDetail.cmsBlock.PageCategories);
                            if (jsonResultDetail.cmsBlock.Source != '2' && !self.find('form').hasClass('global-user')) {
                                self.find('form').removeClass('soql-selected');
                                self.find('select[name="source"] option.soql-selected').remove();
                            }
                            else if (!self.find('form').hasClass('global-user') && self.find('select[name="source"] option.soql-selected').length == 0) {
                                self.find('form').removeClass('soql-selected');
                                var optionCalendar = '<option value="2" class="soql-selected">' + window.translation.soql_query_advanced + '</option>';
                                self.find('select[name="source"]').append(optionCalendar);
                            }
                            self.find('select[name="source"]').val(jsonResultDetail.cmsBlock.Source);
                            if (jsonResultDetail.cmsBlock.Source == "1") {
                                self.find('.row_max_items_first_load').removeClass('hide-custom');
                            }
                            else {
                                self.find('.row_max_items_first_load').addClass('hide-custom');
                            }
                            self.find('textarea[name="custom_card_template"]').val(jsonResultDetail.cmsBlock.CardTemplate);
                            self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                            if (jsonResultDetail.cmsBlock.Format == 12) {
                                ApplyModalConfigurationForRSS();
                            }
                            else {
                                RemoveModalConfigurationForRSS(jsonResultDetail.cmsBlock.Format);
                            }
                            SetClassForSettingTable(jsonResultDetail.cmsBlock.Format, self);
                            self.find('select[name="open-url-in"]').val(jsonResultDetail.cmsBlock.OpenUrlIn);
                            if (jsonResultDetail.cmsBlock.Format == '6') {
                                self.find('textarea[name="map-marker-url"]').text(jsonResultDetail.cmsBlock.CalendarEventUrl);
                            }
                            else {
                                self.find('textarea[name="calendar-event-url"]').text(jsonResultDetail.cmsBlock.CalendarEventUrl);
                                self.find('select[name="open-calendar-as"]').val(jsonResultDetail.cmsBlock.CalendarOpenAs);
                                self.find('.row_date_to_group_results input[name="default-date"]').val(jsonResultDetail.cmsBlock.InitialDateForCalendar);

                            }
                            self.find('input[name="disable-summary-result"]').prop('checked', jsonResultDetail.cmsBlock.HideFooterSummaryInTable);
                            self.find('input[name="hide-if-no-results"]').prop('checked', jsonResultDetail.cmsBlock.HideIfNotResults);
                            if (jsonResultDetail.cmsBlock.HideIfNotResults) {
                                self.find('.not-result-text').addClass('hide-custom');
                            }
                            else {
                                self.find('.not-result-text').removeClass('hide-custom');
                            }
                            if (jsonResultDetail.cmsBlock.Format === 2) {
                                self.find('.slider-settings').removeClass('hide-custom');
                            } else {
                                self.find('.slider-settings').addClass('hide-custom');
                            }
                            if (jsonResultDetail.cmsBlock.DisableAutoPlay) {
                                self.find('input[name="slider-block-disabled-autoplay"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="slider-block-disabled-autoplay"]').prop('checked', false);
                            }
                            if (jsonResultDetail.cmsBlock.ShowNavigation) {
                                self.find('input[name="slider-block-show-navigation"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="slider-block-show-navigation"]').prop('checked', false);
                            }
                            self.find('select[name="slider_effect"]').val(jsonResultDetail.cmsBlock.Effect);
                            self.find('input[name="item_per_slider"]').val(jsonResultDetail.cmsBlock.ItemPerSlider);
                            self.find('input[name="slider_auto_play_timeout"]').val(jsonResultDetail.cmsBlock.AutoplayTimeout);

                            self.find('input[name="OrderField-hidden"]').val(jsonResultDetail.cmsBlock.OrderFieldCT);
                            self.find('input[name="OrderFieldCT-text"]').val(jsonResultDetail.cmsBlock.OrderFieldCT);
                            self.find('input[name="display-dynamic-filter-val"]').val(jsonResultDetail.cmsBlock.DynamicFilters);
                            listingcmsblock_load_and_set_dynamic_filter(self);

                            listingcmsblock_load_and_set_facets_filter(self, jsonResultDetail.cmsBlock.FacetsConfiguration);

                            self.find('select[name="OrderDirectionCT"]').val(jsonResultDetail.cmsBlock.OrderDirectionCT);
                            self.find('input[name="DateDisplay-hidden"]').val(jsonResultDetail.cmsBlock.DateDisplay);
                            self.find('input[name="DateDisplay-text"]').val(jsonResultDetail.cmsBlock.DateDisplay);
                            self.find('input[name="FieldAuthor-hidden"]').val(jsonResultDetail.cmsBlock.FieldAuthor);
                            self.find('input[name="FieldAuthor-text"]').val(jsonResultDetail.cmsBlock.FieldAuthor);
                            self.find('input[name="FieldAttached-hidden"]').val(jsonResultDetail.cmsBlock.FieldAttached);
                            self.find('input[name="FieldPosition-hidden"]').val(jsonResultDetail.cmsBlock.FieldPosition);
                            self.find('input[name="FieldPosition-text"]').val(jsonResultDetail.cmsBlock.FieldPosition);
                            self.find('input[name="RightAlignments"]').val(jsonResultDetail.cmsBlock.RightAlignments);
                            self.find('input[name="FieldIcon-hidden"]').val(jsonResultDetail.cmsBlock.FieldIcon);

                            if (jsonResultDetail.cmsBlock.CustomColors) {
                                self.find('input[name="customColors"]').val(jsonResultDetail.cmsBlock.CustomColors);
                                var customColorsObj = JSON.parse(jsonResultDetail.cmsBlock.CustomColors);
                                listingcmsblock_load_color_picker(self, customColorsObj);
                            }

                            if (jsonResultDetail.cmsBlock.IncludeSubCategories) {
                                self.find('input[name="include-subcategories"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="include-subcategories"]').prop('checked', false);
                            }

                            if (jsonResultDetail.cmsBlock.HideTitle) {
                                self.find('input[name="hide-title"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="hide-title"]').prop('checked', false);
                            }

                            if (jsonResultDetail.cmsBlock.HideCreatedDate) {
                                self.find('input[name="hide-created-date"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="hide-created-date"]').prop('checked', false);
                            }

                            if (jsonResultDetail.cmsBlock.DisplayPaging) {
                                self.find('input[name="display-paging"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-paging"]').prop('checked', false);
                            }

                            if (jsonResultDetail.cmsBlock.DisplayRoundImage) {
                                self.find('input[name="display-round-image"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-round-image"]').prop('checked', false);
                            }


                            if (jsonResultDetail.cmsBlock.DisplayReadMore) {
                                self.find('input[name="display-read-more"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-read-more"]').prop('checked', false);
                            }

                            if (jsonResultDetail.cmsBlock.DisplaySearchSection) {
                                self.find('input[name="display-search-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-search-section"]').prop('checked', false);
                            }

                            if (jsonResultDetail.cmsBlock.isAllowDisplayMoreThan15Columns) {
                                self.find('input[name="is-allow-display-more-than-15-columns"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="is-allow-display-more-than-15-columns"]').prop('checked', false);
                            }
                            if (jsonResultDetail.cmsBlock.SearchAutoSuggest) {
                                self.find('input[name="search-auto-suggest"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="search-auto-suggest"]').prop('checked', false);
                            }
                            if (jsonResultDetail.cmsBlock.DisplayNumberResults) {
                                self.find('input[name="display-number-result"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-number-result"]').prop('checked', false);
                            }

                            if (jsonResultDetail.cmsBlock.DisplaySummary) {
                                self.find('input[name="display-summary"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-summary"]').prop('checked', false);
                            }

                            if (jsonResultDetail.cmsBlock.StylesCustom) {
                                editor.setValue(jsonResultDetail.cmsBlock.StylesCustom);
                            }
                            else {
                                editor.setValue('');
                            }

                            if (jsonResultDetail.cmsBlock.DisplayExportCSV) {
                                self.find('input[name="display-export-csv"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-export-csv"]').prop('checked', false);
                            }

                            if (jsonResultDetail.cmsBlock.UseLocalListViewData) {
                                self.find('input[name="use-local-list-view-data"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="use-local-list-view-data"]').prop('checked', false);
                            }
                            listingcmsblock_actions_local_listview(jsonResultDetail.cmsBlock.UseLocalListViewData);

                            if (jsonResultDetail.cmsBlock.CacheResults) {
                                self.find('input[name="cache-results"]').prop('checked', true);
                                self.find('select[name="cache_refresh_rate"]').val(jsonResultDetail.cmsBlock.CacheRefreshRate != null ? jsonResultDetail.cmsBlock.CacheRefreshRate : '60');
                            }
                            else {
                                self.find('input[name="cache-results"]').prop('checked', false);
                                self.find('select[name="cache_refresh_rate"]').val('60');
                            }
                            listingcmsblock_actions_cache_results_listview(jsonResultDetail.cmsBlock.CacheResults)

                            if (jsonResultDetail.cmsBlock.ShowCountsPerFilter) {
                                self.find('input[name="show-counts-per-filter"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="show-counts-per-filter"]').prop('checked', false);
                            }
                            let formatToDisplay = jsonResultDetail.cmsBlock.Format;
                            if (formatToDisplay === 4 || formatToDisplay === 1 || formatToDisplay === 3) {
                                if (jsonResultDetail.cmsBlock.KeepUserFilters !== undefined)
                                    self.find('input[name="store-user-selection"]').prop('checked', jsonResultDetail.cmsBlock.KeepUserFilters);
                                else
                                    self.find('input[name="store-user-selection"]').prop('checked', false);

                                self.find('div.keep-user-settings').removeClass('hide-custom')
                            }

                            if (jsonResultDetail.cmsBlock.Editable) {
                                self.find('input[name="is-editable"]').prop('checked', true);
                                self.find('.datatable-allow-auto-save').removeClass('hide');
                                self.find('.auto-save-settings').removeClass('hide');
                                self.find('.show-buttons-footer').removeClass('hide');
                                self.find('table#table-columns-fields').find('thead').addClass('with-editable');
                                self.find('table#table-columns-fields').find('tbody').addClass('with-editable');

                                if (jsonResultDetail.cmsBlock.AllowAutoSave) {
                                    self.find('input[name="auto-save"]').prop('checked', true);
                                    self.find('select[name="auto-save-timer"]').val(jsonResultDetail.cmsBlock.AutoSaveAfter);
                                    self.find('.datatable-save-button').removeClass('hide');
                                    self.find('.datatable-auto-save-timer').removeClass('hide');
                                    if (jsonResultDetail.cmsBlock.DisplaySaveButton) {
                                        self.find('input[name="display-save-button"]').prop('checked', true);
                                    } else {
                                        self.find('input[name="display-save-button"]').prop('checked', false);
                                    }
                                } else {
                                    self.find('input[name="auto-save"]').prop('checked', false);
                                    self.find('input[name="display-save-button"]').prop('checked', false);
                                    self.find('select[name="auto-save-timer"]').val(1);
                                    self.find('.datatable-save-button').addClass('hide');
                                    self.find('.datatable-auto-save-timer').addClass('hide');
                                }
                            }
                            else {
                                self.find('table#table-columns-fields').find('thead').removeClass('with-editable');
                                self.find('table#table-columns-fields').find('tbody').removeClass('with-editable');
                                self.find('input[name="is-editable"]').prop('checked', false);
                                self.find('.auto-save-settings').addClass('hide');
                                self.find('.show-buttons-footer').addClass('hide');
                                self.find('input[name="auto-save"]').prop('checked', false);
                                self.find('input[name="display-save-button"]').prop('checked', false);
                                self.find('select[name="auto-save-timer"]').val(1);
                                self.find('.datatable-allow-auto-save').addClass('hide');
                                self.find('.datatable-save-button').addClass('hide');
                                self.find('.datatable-auto-save-timer').addClass('hide');
                            }


                            if (jsonResultDetail.cmsBlock.CommentsInTwoColumns) {
                                self.find('input[name="comments-in-two-columns"]').prop('checked', true);
                                $('label.value-right-alignment').text(window.translation.value_used_right);
                                self.find('.help-text-two-columns').removeClass('hide-custom');
                            }
                            else {
                                self.find('input[name="comments-in-two-columns"]').prop('checked', false);
                                $('label.value-right-alignment').text(window.translation.value_second_author);
                                self.find('.help-text-two-columns').addClass('hide-custom');
                            }

                            if (jsonResultDetail.cmsBlock.CustomFilters) {
                                var customFilters = JSON.parse(jsonResultDetail.cmsBlock.CustomFilters);

                                $('#listing-cms-form .filter_rules .rule').remove();
                                
                                if (customFilters.filters && customFilters.filters.length > 0) {
                                    $('#listing-cms-form .without_rules').addClass('hide-custom');
                                    customFilters.filters.forEach(function (item) {
                                        addRuleFilter(item.field, item.typeField, item.friendlyFieldName, item.operator, item.comparisonValue);
                                    });                                    
                                }

                                if (customFilters.criteria && customFilters.criteria != '') {
                                    self.find(".custom_filtering input.activator").prop("checked", true);
                                    self.find('.custom_filtering input[name="advanced-criteria-input"]').val(customFilters.criteria);
                                    $('#menu-item-configuration-backend input.activator').prop("checked", true)
                                    stdEnableCustomLogic(true, self.find(".custom_filtering input.activator"));
                                }
                                else {                                    
                                    self.find(".custom_filtering input.activator").prop("checked", false);
                                    self.find('.custom_filtering input[name="advanced-criteria-input"]').val('');
                                    $('#menu-item-configuration-backend input.activator').prop("checked", false)
                                    stdEnableCustomLogic(false, self.find(".custom_filtering input.activator"));
                                }
                            } else {
                                $('#listing-cms-form .filter_rules .rule').remove();
                                $('#listing-cms-form .without_rules').removeClass('hide-custom');
                                self.find('input[name="advanced-criteria-input"]').val('');
                            }

                            //here to populate the preset filters
                            if (jsonResultDetail.cmsBlock.PresetFilterConfiguration) {
                                $('#listing-cms-form [name="preset-filter-configuration"]').val(jsonResultDetail.cmsBlock.PresetFilterConfiguration);
                                var presetFilters = JSON.parse(jsonResultDetail.cmsBlock.PresetFilterConfiguration);

                                $('#listing-cms-form .preset_filter_rules .rule').remove();

                                if (presetFilters !== undefined && presetFilters !== null && presetFilters.length > 0) {
                                    presetFilters.forEach(function (item) {
                                        addRulePresetFilter(item.field, item.field, item.comparisonValue);
                                    });
                                    $('#listing-cms-form .preset-filters-section').show();
                                }
                            } else {
                                $('#listing-cms-form .preset_filter_rules .rule').remove();
                                $('#listing-cms-form .preset-filters-section').hide();
                            }

                            //Load salesforce object select
                            if (jsonResultDetail.cmsBlock.SalesforceObject && jsonResultDetail.cmsBlock.Source === 1 || jsonResultDetail.cmsBlock.Source === 2) {

                                self.find('select[name="title_field_map"]').val(jsonResultDetail.cmsBlock.TitleMapField);
                                self.find('input[name="title_field_map-text"]').val(jsonResultDetail.cmsBlock.TitleMapField);
                                self.find('select[name="description_field_view"]').val(jsonResultDetail.cmsBlock.DescriptionMapField);
                                self.find('input[name="description_field_view-text"]').val(jsonResultDetail.cmsBlock.DescriptionMapField);
                                self.find('select[name="latitude_field_view"]').val(jsonResultDetail.cmsBlock.LatitudeMapField);
                                self.find('select[name="longitude_field_view"]').val(jsonResultDetail.cmsBlock.LongitudeMapfield);
                                self.find('input[name="latitude_field_view-text"]').val(jsonResultDetail.cmsBlock.LatitudeMapField);
                                self.find('input[name="longitude_field_view-text"]').val(jsonResultDetail.cmsBlock.LongitudeMapfield);
                                self.find(".parameter-rewrite-section").show();
                                var blockValues = {
                                    EnforceFilterAccountIdField: jsonResultDetail.cmsBlock.EnforceFilterAccountIdField,
                                    EnforceFilterContactIdField: jsonResultDetail.cmsBlock.EnforceFilterContactIdField,
                                    RequireURLParameters: jsonResultDetail.cmsBlock.RequireURLParameters,
                                    TitleMapField: jsonResultDetail.cmsBlock.TitleMapField,
                                    DescriptionMapField: jsonResultDetail.cmsBlock.DescriptionMapField,
                                    LatitudeMapField: jsonResultDetail.cmsBlock.LatitudeMapField,
                                    LongitudeMapfield: jsonResultDetail.cmsBlock.LongitudeMapfield
                                };
                                //Show rows of Salesforce Object
                                self.find('.row_salesforce_source').removeClass('hide-custom');
                                self.find('.column-display-round-image').addClass('hide-custom');
                                self.find('.local_metadata').removeClass('hide-custom');

                                //Show by default
                                self.find('.row_refresh_object').removeClass('hide-custom');

                                //Show rows of enforcing filtering by
                                self.find('.row.enforce_filtering').removeClass('hide-custom');
                                //Disable select for enforcing filter if checkbox associated is not checked
                                if (jsonResultDetail.cmsBlock.EnforceFilteringByContactId) {
                                    self.find('input[name="enforce_contact_id"]').prop('checked', true);
                                    self.find('select[name="enforce_contact_id_field_sf"]').removeAttr('disabled');
                                } else {
                                    self.find('input[name="enforce_contact_id"]').prop('checked', false);
                                    self.find('select[name="enforce_contact_id_field_sf"]').attr('disabled', 'disabled');
                                }
                                if (jsonResultDetail.cmsBlock.EnforceFilteringByAccountId) {
                                    self.find('input[name="enforce_account_id"]').prop('checked', true);
                                    self.find('select[name="enforce_account_id_field_sf"]').removeAttr('disabled');
                                } else {
                                    self.find('input[name="enforce_account_id"]').prop('checked', false);
                                    self.find('select[name="enforce_account_id_field_sf"]').attr('disabled', 'disabled');
                                }
                                if (jsonResultDetail.cmsBlock.EnforceFilteringByAccountId && jsonResultDetail.cmsBlock.EnforceFilteringByContactId) {
                                    $('.enforcedOR-space').addClass('hide-custom');
                                    $('.enforcedOR-section').removeClass('hide-custom');
                                }
                                else {
                                    $('.enforcedOR-space').removeClass('hide-custom');
                                    $('.enforcedOR-section').addClass('hide-custom');
                                }

                                if (jsonResultDetail.cmsBlock.EnforcedbyContactOrAccount) {
                                    self.find('select[name="EnforcedbyContactOrAccount"]').val('1');
                                }
                                else {
                                    self.find('select[name="EnforcedbyContactOrAccount"]').val('0');
                                }

                                //Hide row with read more and summary fields
                                self.find('.row_read_more_summary').addClass('hide-custom');

                                //Hide rows of sorting options
                                self.find('.row_order_sort').addClass('hide-custom');

                                self.find('input[name="use-auto-refresh"]').prop('checked', jsonResultDetail.cmsBlock.AutoRefresh);
                                self.find('select[name="autoRefreshFrequency"]').val(jsonResultDetail.cmsBlock.AutoRefreshFrequency);
                                self.find('input[name="channel-name"]').val(jsonResultDetail.cmsBlock.StreamAPIChannelName);

                                review_auto_refresh_frequency_setting(jsonResultDetail.cmsBlock.AutoRefresh, self);

                                if (jsonResultDetail.cmsBlock.Format == '1' || jsonResultDetail.cmsBlock.Format == '3' || jsonResultDetail.cmsBlock.Format == '4') {

                                    self.find('.display-dynamic-filter-section').removeClass('hide-custom');
                                }
                                else {
                                    self.find('.display-dynamic-filter-section').addClass('hide-custom');
                                }

                                if (jsonResultDetail.cmsBlock.Format !== 0 && jsonResultDetail.cmsBlock.Format !== 4) {
                                    self.find('.row_custom_card_template').removeClass('hide-custom');
                                    self.find('.row_custom_card_template .old-card-template').hide();
                                    self.find('.available-fields-salesforce-view ul').empty();
                                    self.find('.row_custom_column_settings').addClass('hide-custom');
                                    self.find('.datatable-editable').addClass('hide-custom');
                                    self.find('.auto-save-settings').addClass('hide');
                                    self.find('.show-buttons-footer').addClass('hide');
                                    self.find('.display-export-csv-section').addClass('hide-custom');

                                    //This line is due to now the auto-refrehs is enabled for custom card template too
                                    if ((jsonResultDetail.cmsBlock.Format !== 3 && jsonResultDetail.cmsBlock.Format !== 2 && jsonResultDetail.cmsBlock.Format !== 1 && jsonResultDetail.cmsBlock.Format !== 6 && jsonResultDetail.cmsBlock.Format !== 7 && jsonResultDetail.cmsBlock.Format !== 5)
                                        && jsonResultDetail.cmsBlock.Format < 8) {
                                        review_auto_refresh_visibility_settings(false, self);
                                    }

                                    if (jsonResultDetail.cmsBlock.Format === 6) {
                                        self.find('.row_display_search_section').addClass('hide-custom');
                                        self.find('.display-dynamic-filter-section').addClass('hide-custom');
                                        self.find('.row_number_of_items').addClass('hide-custom');
                                        self.find('.row_items_per_page').addClass('hide-custom');
                                        self.find('.map_fields').removeClass('hide-custom');
                                        self.find('.row_custom_card_template').addClass('hide-custom');
                                    }
                                }
                                else if (jsonResultDetail.cmsBlock.Format == 4) {
                                    self.find('.row_custom_column_settings').removeClass('hide-custom');
                                    self.find('.datatable-editable').removeClass('hide-custom');
                                    self.find('.row_custom_card_template').addClass('hide-custom');
                                    self.find('.display-export-csv-section').removeClass('hide-custom');
                                    self.find('.number-results-search').addClass('hide-custom');
                                    review_auto_refresh_visibility_settings(true, self);
                                }
                                else {
                                    self.find('.row_custom_card_template').addClass('hide-custom');
                                    self.find('.row_custom_column_settings').addClass('hide-custom');
                                    self.find('.datatable-editable').addClass('hide-custom');
                                    self.find('.auto-save-settings').addClass('hide');
                                    self.find('.show-buttons-footer').addClass('hide');
                                    self.find('.display-export-csv-section').addClass('hide-custom');
                                    if (jsonResultDetail.cmsBlock.Format !== 0 && jsonResultDetail.cmsBlock.Format !== 6 && jsonResultDetail.cmsBlock.Format !== 7 && jsonResultDetail.cmsBlock.Format !== 5) {
                                        review_auto_refresh_visibility_settings(false, self);
                                    }

                                }
                                var isGlobaluser = $('#is-global-user').val() === 'true';

                                if (jsonResultDetail.cmsBlock.Format === 4 || jsonResultDetail.cmsBlock.Format === 5) {
                                    self.find('#customOrder').addClass('hide-custom');
                                } else {
                                    self.find('#customOrder').removeClass('hide-custom');
                                }
                                //sort field in listining (not apply in datatable or calendar)
                                if (isGlobaluser || IS_LLAMAPI_ENABLED) {
                                    //listining comment timeline
                                    if (jsonResultDetail.cmsBlock.Format === 7) {
                                        self.find('#commentsTimeline').removeClass('hide-custom');
                                        self.find('.color-text-custom-card').removeClass('hide-custom');
                                        self.find('.row_custom_card_template label.card-title').text('Comment Format:');
                                    } else {
                                        self.find('#commentsTimeline').addClass('hide-custom');
                                        self.find('.color-text-custom-card').addClass('hide-custom');
                                    }
                                } else {
                                    self.find('#commentsTimeline').addClass('hide-custom');
                                    self.find('.color-text-custom-card').addClass('hide-custom');
                                }

                                //Add option card custom to select 'display-format' if not have the option
                                if (self.find('select[name="display-format"]').find('option[value="3"]').length === 0) {
                                    var optionCardCustom = '<option value="3">' + window.translation.custom_card_template + '</option>';
                                    self.find('select[name="display-format"]').append(optionCardCustom);
                                    self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                                }

                                //Add option datatable to select 'display-format' if not have the option
                                if (self.find('select[name="display-format"]').find('option[value="4"]').length === 0) {
                                    var optionDatatable = '<option value="4">' + window.translation.datatable + '</option>';
                                    self.find('select[name="display-format"]').append(optionDatatable);
                                    self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                                }

                                //Add option calendar to select 'display-format' if not have the option
                                if (self.find('select[name="display-format"]').find('option[value="5"]').length === 0) {
                                    var optionCalendar = '<option value="5">' + window.translation.calendar  + '</option>';
                                    self.find('select[name="display-format"]').append(optionCalendar);
                                    self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                                }

                                //Add option "Map" to select 'display-format' if not have the option
                                if (self.find('select[name="display-format"]').find('option[value="6"]').length === 0) {
                                    var optionMap = '<option value="6">' + window.translation.only_map  + '</option>';
                                    self.find('select[name="display-format"]').append(optionMap);
                                    self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                                }

                                //Add option "Comments Timeline" to select 'display-format' if not have the option
                                if (self.find('select[name="display-format"]').find('option[value="7"]').length === 0 && (isGlobaluser || IS_LLAMAPI_ENABLED)) {
                                    var optionComment = '<option value="7">' + window.translation.comments + (!IS_LLAMAPI_ENABLED ? ' ' + getGlobalRestrictedText() : '') + '</option>';
                                    self.find('select[name="display-format"]').append(optionComment);
                                    self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                                }
                                SetClassForSettingTable(jsonResultDetail.cmsBlock.Format, self);

                                var chartIds = [8, 9, 10, 11];
                                // cleaning chart options 
                                chartIds.forEach(function (chartId) {
                                    self.find('select[name="display-format"]').find('option[value="' + chartId + '"]').remove();
                                });
                                //Add char options  to select 'display-format' if not have the option
                                var triggerDisplayFormatEvent = false;
                                chartIds.forEach(function (chartId) {
                                    var labelOption = '';
                                    if (chartId === 8) labelOption = window.translation.bar_chart;
                                    if (chartId === 9) labelOption = window.translation.column_chart;
                                    if (chartId === 10) labelOption = window.translation.pie_chart;
                                    if (chartId === 11) labelOption = window.translation.donut_chart;
                                    if (self.find('select[name="display-format"]').find('option[value="' + chartId + '"]').length === 0) {
                                        var chartOption = '<option value="' + chartId + '">' + labelOption + '</option>';
                                        self.find('select[name="display-format"]').append(chartOption);

                                    }
                                });

                                if (chartIds.includes(jsonResultDetail.cmsBlock.Format)) {
                                    triggerDisplayFormatEvent = true;
                                }

                                if (triggerDisplayFormatEvent === true) {
                                    self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                                    self.find('select[name="display-format"]').trigger('change');
                                }
                                // Loading chart settings
                                if (jsonResultDetail.chartSettings && chartIds.includes(jsonResultDetail.cmsBlock.Format)) {
                                    self.find('.chart_settings').removeClass('hide-custom');
                                    var chartSettings = jsonResultDetail.chartSettings;
                                    if (chartSettings.configLabels && chartSettings.configLabels.length > 0) {
                                        // Getting sf field name configured
                                        var sfChartLabelField = chartSettings.configLabels[0].sfFieldName;
                                        if (sfChartLabelField) {
                                            /* Assigning value in blockValues object  to pass it via listingcmsblock_loadsalesforceobjects 
                                            and then populate value field after sf fields loading. */
                                            blockValues.sfChartLabelField = sfChartLabelField;
                                        }
                                    }
                                    // Getting sf value field configured for hte chart
                                    if (chartSettings.configValues && chartSettings.configValues.length > 0) {
                                        var sfChartValueField = chartSettings.configValues[0].sfFieldName;
                                        var aliasValueField = chartSettings.configValues[0].aliasValue;
                                        if (sfChartValueField) {
                                            blockValues.sfChartValueField = sfChartValueField;
                                        }
                                        if (aliasValueField) {
                                            self.find('input[name="chart_alias_value"]').val(aliasValueField);
                                        }
                                    }
                                    if (chartSettings.titleAxisX) {
                                        self.find('input[name="title_x_axis"]').val(chartSettings.titleAxisX);
                                    }
                                    if (chartSettings.titleAxisY) {
                                        self.find('input[name="title_y_axis"]').val(chartSettings.titleAxisY)
                                    }
                                } else {
                                    // Hide chart settings section
                                    self.find('.chart_settings').addClass('hide-custom');
                                }

                                if (self.find('select[name="display-format"]').find('option[value="12"]').length === 0) {
                                    var optionRssFeed = '<option value="12">' + window.translation.rss_feed + '</option>';
                                    self.find('select[name="display-format"]').append(optionRssFeed);
                                    self.find('select[name="display-format"]').val(jsonResultDetail.cmsBlock.Format);
                                }

                                if (jsonResultDetail.cmsBlock.Format == 12) {
                                    ApplyModalConfigurationForRSS();
                                }
                                else {
                                    RemoveModalConfigurationForRSS(jsonResultDetail.cmsBlock.Format);
                                }

                                //Hide rows of "content types" and "include sub-types"
                                self.find('select[name="page-categories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
                                self.find('input[name="include-subcategories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');

                                //Hide rows of "content types" and "include hide title and hide created date"
                                self.find('.row_hide_created_title').addClass('hide-custom');



                                //Load salesforce objects
                                hideProcessingScreen = false;

                                var listviewIdStored = null;
                                var listviewLabelStored = null;
                                var listviewColumnsStored = null;
                                if (jsonResultDetail.cmsBlock.UseLocalListViewData) {
                                    dataStored = jsonResultDetail.listingCMSListViewData;
                                    if (dataStored.ListViewId != undefined) {
                                        listviewIdStored = dataStored.ListViewId;
                                        self.find('input[name="listing-view-id-stored"]').val(listviewIdStored);
                                    }
                                    if (dataStored.ListViewLabel) {
                                        listviewLabelStored = dataStored.ListViewLabel;
                                    }

                                    if (dataStored.ColumnsDefinition) {
                                        listviewColumnsStored = JSON.parse(dataStored.ColumnsDefinition);
                                    }
                                }



                                listingcmsblock_loadsalesforceobjects(self, jsonResultDetail.cmsBlock.SalesforceObject, jsonResultDetail.cmsBlock.SalesforceView, 'salesforce_object', 'salesforce_view', jsonResultDetail.columnSettings && jsonResultDetail.cmsBlock.Format == '4', blockValues, false, false, listviewIdStored, listviewLabelStored, listviewColumnsStored, jsonResultDetail.cmsBlock.SearchAutoSuggestField, jsonResultDetail.cmsBlock.SalesforceViewName);
                                if ($('#special-section-for-second-view').length > 0 && (jsonResultDetail.cmsBlock.Format === '3' || jsonResultDetail.cmsBlock.Format === 3)) {
                                    var specialSection = $('#special-section-for-second-view');
                                    var hasComposeResponse = (jsonResultDetail.cmsBlock.HasComposeResponse === true || jsonResultDetail.cmsBlock.HasComposeResponse === 'true' || jsonResultDetail.cmsBlock.HasComposeResponse === 1 || jsonResultDetail.cmsBlock.HasComposeResponse === '1') ? true : false;
                                    self.find('input[name="enable-secondary-listview"]').prop('checked', hasComposeResponse);
                                    if (hasComposeResponse === true) {
                                        specialSection.find('select[name="second_view_source"]').val(jsonResultDetail.cmsBlock.SecondarySource);
                                        specialSection.find('input[name="second-field-to-compare"]').val(jsonResultDetail.cmsBlock.FieldToCompare);
                                        specialSection.find('input[name="second-field-to-group"]').val(jsonResultDetail.cmsBlock.SecondViewGroupBy);
                                        specialSection.find('select[name="second-display-format"').val(jsonResultDetail.cmsBlock.SecondaryDisplayFormat);
                                        specialSection.find('input[name="second-filter-criteria"]').val(jsonResultDetail.cmsBlock.SecondaryFilterCriteria);
                                        listingcmsblock_loadsalesforceobjects_for_second_filter(self, jsonResultDetail.cmsBlock.SecondaryObjectName, jsonResultDetail.cmsBlock.SecondaryListViewID, 'second_salesforce_object', 'second_salesforce_view', false, false, false);
                                        specialSection.find('.special-settings-second-view').hide();
                                        specialSection.find('.special-settings-second-from-soql').hide();
                                        specialSection.find('.special-settings-second-view').show();

                                        if (jsonResultDetail.cmsBlock.SecondarySource == 1 || jsonResultDetail.cmsBlock.SecondarySource == '1') {
                                            specialSection.find('.special-settings-second-from-sf-view').show();
                                            specialSection.find('.special-settings-second-from-soql').hide();
                                            specialSection.find('table#table-columns-fields-second-view').addClass('table-for-listview');
                                            specialSection.find('table#table-columns-fields-second-view').removeClass('table-for-soql');
                                        } else {
                                            specialSection.find('.special-settings-second-from-sf-view').hide();
                                            specialSection.find('.special-settings-second-from-soql').show();
                                            specialSection.find('table#table-columns-fields-second-view').removeClass('table-for-listview');
                                            specialSection.find('table#table-columns-fields-second-view').addClass('table-for-soql');
                                            if (jsonResultDetail.cmsBlock.SecondSoqlQuery != null) {
                                                specialSection.find('textarea[name="second_soql_query"]').text(jsonResultDetail.cmsBlock.SecondSoqlQuery);
                                            }
                                            
                                        }

                                        if (jsonResultDetail.cmsBlock.SecondaryFilters) {
                                            var customFilters = JSON.parse(jsonResultDetail.cmsBlock.SecondaryFilters);
                                            $('#listing-cms-form .second_filter_rules .rule').remove();
                                            if (customFilters.filters && customFilters.filters.length > 0) {
                                                $('#listing-cms-form .second_without_rules').addClass('hide-custom');
                                                customFilters.filters.forEach(function (item) {
                                                    addRuleFilterSecond(item.field, item.typeField, item.friendlyFieldName, item.operator, item.comparisonValue);
                                                });
                                            }
                                        } else {
                                            $('#listing-cms-form .second_filter_rules .rule').remove();
                                            $('#listing-cms-form .second_without_rules').removeClass('hide-custom');

                                        }


                                        if (jsonResultDetail.secondColumnSettings && jsonResultDetail.cmsBlock.SecondaryDisplayFormat == '4') {
                                            let className = listingcmsblock_get_fields_settings_class_name(jsonResultDetail.cmsBlock.SecondaryDisplayFormat, true);
                                            listingcmsblock_load_column_settings(jsonResultDetail.secondColumnSettings, className, false, 'table-columns-fields-second-view', 'row_second_view_custom_column_settings');
                                        }
                                        specialSection.find('.second-field-configuration').addClass('hide-custom');

                                    } else {
                                        listingcmsblock_loadsalesforceobjects_for_second_filter(self, null, null, 'second_salesforce_object', 'second_salesforce_view', false, false, true);
                                    }

                                    if (jsonResultDetail.cmsBlock.Format === '3' || jsonResultDetail.cmsBlock.Format === 3)
                                        specialSection.show();
                                    else
                                        specialSection.hide();
                                }
                                load_table_for_rewrite_parameters(jsonResultDetail.cmsBlock.RewriteFilterNames);
                                if (jsonResultDetail.cmsBlock.Source === 2) {
                                    handleSettingsForSoql(self, jsonResultDetail.cmsBlock.Format);
                                    self.find('textarea#soql-query').text(jsonResultDetail.cmsBlock.SoqlQuery);
                                    var valueAutoSuggest = '';
                                    if (jsonResultDetail.cmsBlock.SearchAutoSuggestField)
                                        valueAutoSuggest = jsonResultDetail.cmsBlock.SearchAutoSuggestField;
                                    setObjectFromSOQLQuery(jsonResultDetail.cmsBlock.SoqlQuery, valueAutoSuggest, self);

                                    self.find('a.view_preliminar_query').hide();
                                }
                                else {
                                    self.find('select[name="source"]').removeClass('soql-selected');
                                }
                                if (jsonResultDetail.cmsBlock.SearchAutoSuggestField) {
                                    self.find('select[name="search-auto-suggest-field"]').val(jsonResultDetail.cmsBlock.SearchAutoSuggestField);
                                } else {
                                    self.find('select[name="search-auto-suggest-field"]').val('');
                                }
                            }
                            else if (jsonResultDetail.cmsBlock.Source === 0) {
                                //Hide rows of Salesforce Object
                                self.find('.row_salesforce_source').addClass('hide-custom');
                                self.find('.column-display-round-image').removeClass('hide-custom');
                                self.find('.local_metadata').addClass('hide-custom');
                                self.find('.row_custom_card_template').addClass('hide-custom');

                                //Hide rows of enforcing filtering by
                                self.find('.row.enforce_filtering').addClass('hide-custom');

                                //Hide rows for Column Settings
                                self.find('.row_custom_column_settings').addClass('hide-custom');

                                //Hide rows for Editable table
                                self.find('.datatable-editable').addClass('hide-custom');
                                self.find('.auto-save-settings').addClass('hide');
                                self.find('.show-buttons-footer').addClass('hide');

                                // Hide Export CSV
                                self.find('.display-export-csv-section').addClass('hide-custom');

                                //Show row with read more and summary fields
                                self.find('.row_read_more_summary').removeClass('hide-custom');

                                //Show rows of sorting options
                                self.find('.row_order_sort').removeClass('hide-custom');

                                //Hide option card custom of format select
                                self.find('select[name="display-format"]').find('option[value="3"]').remove();

                                //Hide option datatable of format select
                                self.find('select[name="display-format"]').find('option[value="4"]').remove();

                                //Hide option datatable of format select
                                self.find('select[name="display-format"]').find('option[value="5"]').remove();

                                //Hide option map of format select
                                self.find('select[name="display-format"]').find('option[value="6"]').remove();

                                //Hiding chart formats
                                var chartIds = [8, 9, 10, 11];
                                chartIds.forEach(function (chartId) {
                                    if (self.find('select[name="display-format"] option[value="' + chartId + '"]').length > 0) {
                                        self.find('select[name="display-format"] option[value="' + chartId + '"]').remove();
                                    }
                                });


                                //Hide option RSS of format select
                                self.find('select[name="display-format"]').find('option[value="12"]').remove();

                                //Display fields "content types" and "include sub-types"
                                self.find('select[name="page-categories"]').parents('.small-6').first().find('.columns').removeClass('hide-custom');
                                self.find('input[name="include-subcategories"]').parents('.small-6').first().find('.columns').removeClass('hide-custom');
                                self.find(".parameter-rewrite-section").hide();
                                self.find('.row_hide_created_title').removeClass('hide-custom');
                            } else if (jsonResultDetail.cmsBlock.Source === 3) {
                                //Hide option grid of format select
                                self.find('select[name="display-format"]').find('option[value="1"]').remove();
                                //Hide option slider of format select
                                self.find('select[name="display-format"]').find('option[value="2"]').remove();
                                //Hidden fields "content types" and "include sub-types"
                                self.find('select[name="page-categories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
                                self.find('input[name="include-subcategories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
                                self.find('input[name="display-search-section"]').prop('checked', true);
                                self.find('input[name="display-search-section"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
                                // Hide custom filtering
                                self.find('.custom_filtering').addClass('hide-custom');
                            }

                        }
                        if (jsonResultDetail.languagesInfo) {
                            jsonResultDetail.languagesInfo.forEach(function (languageInfo) {
                                var languageId = languageInfo.languageId;

                                var valCustomCardTemplate = (languageInfo.valCustomCardTemplate != '' && languageInfo.valCustomCardTemplate != null)?languageInfo.valCustomCardTemplate:jsonResultDetail.cmsBlock.CardTemplate;
                                self.find('input[name="title-' + languageId + '"]').val(languageInfo.title);
                                self.find('input[name="read-more-' + languageId + '"]').val(languageInfo.readMoreText);
                                self.find('input[name="no-results-' + languageId + '"]').val(languageInfo.noResultsText);
                                self.find('textarea[name="custom_card_template-' + languageId + '"]').val(valCustomCardTemplate);
                                self.find("#no-results-" + languageId).text(languageInfo.noResultsText);

                                self.find('input[name="pre-content-' + languageId + '"]').val(languageInfo.textPreContent);
                                self.find("#pre-content-" + languageId).text(languageInfo.textPreContent);
                            });
                            if(jsonResultDetail.languagesInfo.length == 1){
                                if(self.find('textarea.language-default').val() == '' && jsonResultDetail.cmsBlock.CardTemplate != ''){
                                    self.find('textarea.language-default').val(jsonResultDetail.cmsBlock.CardTemplate);
                                }
                            }
                        }
                        self.find('input[name="date-original-to-group-results"]').val(jsonResultDetail.cmsBlock.DateToGroupResults);
                        self.find('input[name="calendar-original-event-title"]').val(jsonResultDetail.cmsBlock.CalendarEventTitle);

                        self.find('select[name="date-to-group-results"]').val(jsonResultDetail.cmsBlock.DateToGroupResults);
                        self.find('input[name="date-to-group-results-text"]').val(jsonResultDetail.cmsBlock.DateToGroupResults);
                        self.find('select[name="calendar-event-title"]').val(jsonResultDetail.cmsBlock.CalendarEventTitle);
                        self.find('input[name="calendar-event-title-text"]').val(jsonResultDetail.cmsBlock.CalendarEventTitle);

                        //Manage multiregions
                        if (jsonResultDetail.regionsMultiple) {
                            //Apply multiselect widget to region select
                            apply_backend_multiselect_group(formSelector + ' select[name="region_multiple"]', false, jsonResultDetail.regionsMultiple, true);
                        }

                        if (jsonResultDetail.columnSettings && jsonResultDetail.cmsBlock.Format == '4') {
                            let className = listingcmsblock_get_fields_settings_class_name(jsonResultDetail.cmsBlock.Format, false);
                            listingcmsblock_load_column_settings(jsonResultDetail.columnSettings, className, false, 'table-columns-fields', 'row_custom_column_settings');
                        }

                        if (jsonResultDetail.calendarSettings && jsonResultDetail.cmsBlock.Format == '5') {
                            let className = listingcmsblock_get_fields_settings_class_name(jsonResultDetail.cmsBlock.Format, false);
                            listingcmsblock_load_column_settings(jsonResultDetail.calendarSettings, className, false, 'table-columns-fields', 'row_custom_column_settings');
                        }
                        //Set id of version in link rollback
                        self.find('.rollback-link').attr('data-block-id', blockId);
                        self.find('.rollback-link').show();
                        self.find('a.delete_block').show();

                        add_event_for_fields_in_modal('#listing-cms-form');
                    } else {
                        Swal.fire({
                            title: "Error",
                            icon: "error",
                            text: jsonResultDetail.message,
                            confirmButtonText: "Ok"
                        });
                    }
                    ShowHideAutoSuggetsField();
                    LoadColorPickers();
                    if (hideProcessingScreen) self.find('.processing_screen').hide();
                });
            }
            else {

                //Hide remove link
                self.find('input[name="review-filters-loaded"]').val('false');
                self.find('a.delete_block').hide();
                self.find('.rollback-link').hide();
                //Hide by default
                self.find('.row_refresh_object').addClass('hide-custom');
                self.find('input[name="css_class"]').val('');

                self.find('select[name="subsite_id"]').val('0');
                self.find('input[name="subsite_id"]').val('0');
                //if (CKEDITOR != null && CKEDITOR!=undefined && CKEDITOR.instances != null && CKEDITOR.instances != undefined)
                //    for (var i in CKEDITOR.instances) { CKEDITOR.instances[i].destroy() }
                $('#listing-cms-block-conf .listingCMSckeditor').each(function () {
                    var languageId = $(this).data('language-id');
                    initialize_ckeditor_listingCMS('no-results-', languageId);
                    $('#no-results-' + languageId).text('');
                    add_event_for_ckeditor('no-results-' + languageId, '#listing-cms-form');


                    initialize_ckeditor_listingCMS('pre-content-', languageId);
                    $('#pre-content-' + languageId).text('');
                    add_event_for_ckeditor('pre-content-' + languageId, '#listing-cms-form');
                });


                self.find('.input-group-button.submit-button').css({
                    display: 'block',
                    width: '100%'
                });
                hideVisibleOptions(false, '#listingcmsblock-advanced-settings');
                review_auto_refresh_visibility_settings(false, self);

                //Clean form
                self.find('input[name*="title-"]').val('');
                self.find('input[name*="read-more-"]').val('');
                self.find('input[name="listing-cms-parent-id"]').val('');

                //self.find('input[name*="no-results-"]').val('');

                //self.find("#no-results-").val('');
                self.find(".listingCMSckeditor").text('');

                self.find('input[name="system_name"]').val('');
                self.find('input[name="sort_weight"]').val(0);
                self.find('input[name="listingcms_show_title"]').val(null);
                self.find('input.listingcms-show-title').prop('checked', false);
                self.find('input[name="listingcms-enabled"]').prop('checked', true);
                self.find('input[name="listingcms_visible_to"]').prop('checked', false);
                self.find('input#listingcms_visibility_0').prop('checked', true);
                self.find('textarea[name="visibility_urls"]').val('');
                self.find('#listingcms_exception_url_container').removeClass('is-hidden');
                self.find('input[name="listingcms_visible_to"][value="2"]').prop('checked', true);
                self.find('input[name="listing-cms-block-id"]').val(0);
                self.find('select[name="display-format"]').val(0);
                self.find('select[name="order-option"]').val(0);
                self.find('input[name="number-items"]').val(0);

                self.find("#feed-url").text('');
                self.find('input[name="feed-id-code"]').val('');
                self.find('input[name="feed-title"]').val('');
                self.find('input[name="feed-description"]').val('');
                self.find('input[name="feed-link"]').val('');
                self.find('textarea[name="other-channel-settings"]').text('');
                RemoveModalConfigurationForRSS();

                self.find('input[name="items-per-page"]').val(0);
                self.find('select[name="page-categories"]').val('');
                self.find('select[name="enforce_contact_id_field_sf"]').val('');
                self.find('select[name="enforce_account_id_field_sf"]').val('');
                self.find('select[name="enforce_contact_id_field_sf"]').empty();
                self.find('select[name="enforce_account_id_field_sf"]').empty();
                //self.find('select[name="require_url_parameters"]').empty();
                self.find('input[name="include-subcategories"]').prop('checked', false);
                self.find('input[name="hide-title"]').prop('checked', false);
                self.find('input[name="hide-created-date"]').prop('checked', false);
                self.find('input[name="display-paging"]').prop('checked', false);
                self.find('input[name="display-round-image"]').prop('checked', false);
                self.find('input[name="display-read-more"]').prop('checked', false);
                self.find('input[name="display-search-section"]').prop('checked', false);
                self.find('input[name="is-allow-display-more-than-15-columns"]').prop('checked', false);
                self.find('input[name="search-auto-suggest"]').prop('checked', false);
                self.find('input[name="display-number-result"]').prop('checked', false);
                self.find('input[name="display-summary"]').prop('checked', false);
                self.find('input[name="display-export-csv"]').prop('checked', false);
                self.find('input[name="enforce_contact_id"]').prop('checked', false);
                self.find('input[name="enforce_account_id"]').prop('checked', false);
                $('#listing-cms-form button.submit-button').removeAttr('disabled');
                self.find('select[name="OrderFieldCT"]').val(0);
                self.find('select[name="OrderDirectionCT"]').val(0);
                self.find('input[name="use-local-list-view-data"]').prop('checked', false);
                self.find('input[name="cache-results"]').prop('checked', false);
                self.find('select[name="cache_refresh_rate"]').val('60');
                listingcmsblock_actions_local_listview(false);

                self.find('input.restricted-for-soql').val('');
                self.find('textarea[name="soql-query"]').text('');
                self.find('textarea[name="second_soql_query"]').text('');
                self.find('form').removeClass('soql-selected');
                if (!self.find('form').hasClass('global-user')) {
                    self.find('select[name="source"] option.soql-selected').remove();
                }
                self.find('.soql_query_section').addClass('hide-custom');
                editor.setValue('');

                self.find('.processing_screen').hide();

                //Manage multiregions field
                apply_backend_multiselect_group(formSelector + ' select[name="region_multiple"]', false, '', true);

                //Manage require url fields
                //apply_backend_multiselect_group(formSelector + ' select[name="require_url_parameters"]', false, '', true);

                //Hide rows of Salesforce Object
                self.find('.row_salesforce_source').addClass('hide-custom');
                self.find('.column-display-round-image').removeClass('hide-custom');
                self.find('.local_metadata').addClass('hide-custom');
                self.find('.row_custom_card_template').addClass('hide-custom');

                //Hide rows of "Enforce filtering by"
                self.find('.enforce_filtering').addClass('hide-custom');

                //Hide rows of Column Settings
                self.find('.row_custom_column_settings').addClass('hide-custom');
                self.find('.datatable-editable').addClass('hide-custom');
                self.find('.field-configuration').addClass('hide-custom');
                self.find('.field-configuration input.label-custom').val('');
                self.find('.field-configuration #colum_name_settings').text('');
                self.find('.auto-save-settings').addClass('hide');
                self.find('.show-buttons-footer').addClass('hide');

                //Hide DateToGroupResults
                self.find('.row_date_to_group_results').addClass('hide-custom');

                //Hide CSV Export
                self.find('.display-export-csv-section').addClass('hide-custom');

                //Hide option card custom of format select
                self.find('select[name="display-format"]').find('option[value="3"]').remove();

                //Hide option data table of format select
                self.find('select[name="display-format"]').find('option[value="4"]').remove();

                //Hide option map of format select
                self.find('select[name="display-format"]').find('option[value="6"]').remove();


                //Show rows of sorting options
                self.find('.row_order_sort').removeClass('hide-custom');

                //Display fields "content types" and "include sub-types"
                self.find('select[name="page-categories"]').parents('.small-6').first().find('.columns').removeClass('hide-custom');
                self.find('input[name="include-subcategories"]').parents('.small-6').first().find('.columns').removeClass('hide-custom');

                //Display fields "content types" and "hide title and hide created date"
                self.find('input[name="hide-title"]').parents('.small-6').first().find('.columns').removeClass('hide-custom');
                self.find('input[name="hide-created-date"]').parents('.small-6').first().find('.columns').removeClass('hide-custom');

                //Show row with read more and summary fields
                self.find('.row_read_more_summary').removeClass('hide-custom');

                //Restart settings for columns settings
                self.find("#table-columns-fields").DataTable().destroy();
                self.find("#table-columns-fields tbody").empty();
                add_event_for_fields_in_modal('#listing-cms-form');

                // Hide custom filtering
                self.find('.custom_filtering').addClass('hide-custom');
                // Hide map_fields section
                self.find('.map_fields').addClass('hide-custom');
                self.find('select[name="title_field_map"] option').remove();
                self.find('select[name="description_field_view"] option').remove();
                self.find('select[name="latitude_field_view"] option').remove();
                self.find('select[name="longitude_field_view"] option').remove();

                // Removing Chart options and reinitiate default values for field of chart section
                self.find('select[name="sf_chart_label_field"]').val('');
                self.find('input[name="sf_chart_label_field-text"]').val('');
                self.find('select[name="sf_chart_value_field"]').val('');
                self.find('input[name="sf_chart_value_field-text"]').val('');
                self.find('select[name="sf_chart_label_field"]').empty();
                self.find('select[name="sf_chart_value_field"]').empty();
                self.find('input[name="title_x_axis"]').val('');
                self.find('input[name="title_y_axis"]').val('');
                self.find('input[name="chart_alias_value"]').val('');
                var chartIds = [8, 9, 10, 11];
                chartIds.forEach(function (chartId) {
                    if (self.find('select[name="display-format"] option[value="' + chartId + '"]').length > 0) {
                        self.find('select[name="display-format"] option[value="' + chartId + '"]').remove();
                    }
                });
                self.find('.chart_settings').addClass('hide-custom');
                self.find('.chart-instructions img').addClass('hide-custom');
                self.find('input[name="auto-save"]').prop('checked', false);
                self.find('input[name="display-save-button"]').prop('checked', false);
                self.find('select[name="auto-save-timer"]').val(1);
                self.find('.datatable-allow-auto-save').addClass('hide');
                self.find('.datatable-save-button').addClass('hide');
                self.find('.datatable-auto-save-timer').addClass('hide');
                ShowHideAutoSuggetsField();
                LoadColorPickers();
                self.find('.filterAndFacets').addClass('hide-custom');
                self.find('.rule_preset-dynamic_filter select[name="dynamic_filter"]').children().remove();
                self.find('.preset-filters-section .preset_filter_rules .rule').remove();
                self.find('.preset-filters-section').hide();
                self.find('.row_date_to_group_results input[name="default-date"]').val('');

            }



            self.find('input[name="is-editable"]').on('change', function () {
                if ($(this).is(':checked')) {
                    ////
                    if (self.find('#table-columns-fields tr.custom-colum.selected').length > 0) {
                        self.find('#table-columns-fields tr.custom-colum.selected').trigger('click');
                    }
                    self.find('.datatable-allow-auto-save').removeClass('hide');
                    self.find('.auto-save-settings').removeClass('hide');
                    self.find('.show-buttons-footer').removeClass('hide');
                    self.find('table#table-columns-fields').find('thead tr th.cell-editable').removeClass('hide');
                    self.find('table#table-columns-fields').find('tbody tr td.cell-editable').removeClass('hide');
                    self.find('table#table-columns-fields').find('thead').addClass('with-editable');
                    self.find('table#table-columns-fields').find('tbody').addClass('with-editable');
                } else {
                    self.find('.auto-save-settings').addClass('hide');
                    self.find('.show-buttons-footer').addClass('hide');
                    self.find('.datatable-allow-auto-save').addClass('hide');
                    self.find('.datatable-auto-save-timer').addClass('hide');
                    self.find('.datatable-save-button').addClass('hide');
                    self.find('input[name="auto-save"]').prop('checked', false);
                    self.find('input[name="display-save-button"]').prop('checked', true);
                    self.find('table#table-columns-fields').find('thead tr th.cell-editable').addClass('hide');
                    self.find('table#table-columns-fields').find('tbody tr td.cell-editable').addClass('hide');
                    self.find('table#table-columns-fields').find('thead').removeClass('with-editable');
                    self.find('table#table-columns-fields').find('tbody').removeClass('with-editable');

                }
            });
            self.find('input[name="display-export-csv"]').on('change', function () {
                if ($(this).is(':checked')) {
                    self.find('table#table-columns-fields').find('thead tr th.cell-exportable').removeClass('hide');
                    self.find('table#table-columns-fields').find('tbody tr td.cell-exportable').removeClass('hide');
                } else {
                    self.find('table#table-columns-fields').find('thead tr th.cell-exportable').addClass('hide');
                    self.find('table#table-columns-fields').find('tbody tr td.cell-exportable').addClass('hide');
                }
            });
            self.find('input[name="hide-if-no-results"]').on('change', function () {
                if ($(this).is(':checked')) {
                    self.find('.not-result-text').addClass('hide-custom');
                }
                else {
                    self.find('.not-result-text').removeClass('hide-custom');
                }
            });
            self.find('input[name="auto-save"]').on('change', function () {
                if ($(this).is(':checked')) {
                    self.find('.datatable-auto-save-timer').removeClass('hide');
                    self.find('.datatable-save-button').removeClass('hide');
                } else {
                    self.find('.datatable-auto-save-timer').addClass('hide');
                    self.find('.datatable-save-button').addClass('hide');
                    self.find('input[name="display-save-button"]').prop('checked', true);
                }
            });
            autocomplete_field_for_filter_field(self, customSessionVar);
            autocomplete_field_for_preset_filter_field(self, customSessionVar);
            include_suggestions_for_range('#facet-configuration-detail input[name="facets-default-from"]', customSessionVar);
            include_suggestions_for_range('#facet-configuration-detail input[name="facets-default-to"]', customSessionVar);

            if (sourceInvoked != null && sourceInvoked != undefined && sourceInvoked == 'gallery') {
                $(formSelector + " .settings-builder-form-clone").hide();
                $(formSelector + " .region").hide();
            } else {
                $(formSelector + " .settings-builder-form-clone").show();
                $(formSelector + " .region").show();
            }

            var specialSection = $('#special-section-for-second-view');
            specialSection.hide();

        });

    });

    $(document).on('click', '#listing-cms-form a.submit-button', function () {
        ProcessSubmitModal(editor, true);
    });

    $(document).on('click', '#listing-cms-form a.view_preliminar_query', function () {
        ProcessSubmitModal(editor, false);
    });
    $(document).on('click', '.closeSwalCustom', function () {
        swal.clickConfirm();
    });
    $(document).on('click', '.copySwalCustom', function () {
        copyDivToClipboard();
        swal.clickConfirm();
        Swal.fire({
            icon: 'success',
            title: "",
            text: window.translation.copied,
            confirmButtonText: "Ok"
        }).then(function (result) {


        });
    });
    $(document).on('click', '.copy-feed-url', function () {
        copyDivToClipboardFeedURL();
        Swal.fire({
            icon: 'success',
            title: "",
            text: window.translation.copied,
            confirmButtonText: "Ok"
        }).then(function (result) {


        });
    });

    $(document).on('click', '#listing-cms-block-conf .special-settings-second-view .second_rule_filter button.add_rule_second', function () {
        var fieldToFilter = $('#listing-cms-form select[name="second_field_to_filter"]').val();
        var friendlyFieldName = $('#listing-cms-form select[name="second_field_to_filter"] option:selected').text();
        var fieldType = $('#listing-cms-form select[name="second_field_to_filter"] option:selected').data('type');
        var operator = $('#listing-cms-form select[name="second_filter_operator"]').val();
        var filter_value = $('#listing-cms-form input[name="second_filter_value"]').val();
        if (fieldToFilter === null || fieldToFilter === '') {
            var textError = window.translation.please_choose_at_least_a_field;
            var error = '<span class="error">' + textError + '</span>';
            if ($('#listing-cms-form .second_rule_filter span.error').length > 0) {
                $('#listing-cms-form .second_rule_filter span.error').first().text(textError);
            } else {
                $('#listing-cms-form .second_rule_filter').append(error);
            }
        } else {
            addRuleFilterSecond(fieldToFilter, fieldType, friendlyFieldName, operator, filter_value);
        }
        return false;
    });

    $(document).on('click', '#listing-cms-block-conf button.add_rule', function () {

        var fieldToFilter = $('#listing-cms-form select[name="field_to_filter"]').val();
        var friendlyFieldName = $('#listing-cms-form select[name="field_to_filter"] option:selected').text();
        var fieldType = $('#listing-cms-form select[name="field_to_filter"] option:selected').data('type');
        var operator = $('#listing-cms-form select[name="filter_operator"]').val();
        var filter_value = $('#listing-cms-form input[name="filter_value"]').val();
        if (fieldToFilter === null || fieldToFilter === '') {
            var textError = window.translation.please_choose_at_least_a_field;
            var error = '<span class="error">' + textError + '</span>';
            if ($('#listing-cms-form .rule_filter span.error').length > 0) {
                $('#listing-cms-form .rule_filter span.error').first().text(textError);
            } else {
                $('#listing-cms-form .rule_filter').append(error);
            }
        } else {
            addRuleFilter(fieldToFilter, fieldType, friendlyFieldName, operator, filter_value);
        }
        return false;
    });

    $(document).on('change', '#listing-cms-form input[name="is-for-sharing-portal"]', function () {
        if ($(this).prop('checked')) {
            $('#listing-cms-form  .listing-multi-area').addClass('is-hidden');
        }
        else {
            $('#listing-cms-form .listing-multi-area').removeClass('is-hidden');
        }
    });

    $(document).on('change', '#listing-cms-form select[name="second_field_to_filter"]', function () {
        var fieldType = $('#listing-cms-form select[name="second_field_to_filter"] option:selected').data('type');
        $('#listing-cms-form select[name="second_filter_operator"] option').removeClass('is-hidden');
        var filterValue = $('#listing-cms-form input[name="second_filter_value"]');
        filterValue.fdatepicker("remove")
        if (fieldType === 'datetime' || fieldType === 'date') {
            filterValue.fdatepicker({
                format: 'yyyy-mm-dd',
                language: 'en',
                weekStart: get_start_day_of_week_from_locale(),
            });
            $('#listing-cms-form select[name="second_filter_operator"] option[value="contains"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value="notcontains"]').addClass('is-hidden');
        } else if (fieldType === 'double') {
            $('#listing-cms-form select[name="second_filter_operator"] option[value="contains"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value="notcontains"]').addClass('is-hidden');
        } else if (fieldType === 'boolean') {
            $('#listing-cms-form select[name="second_filter_operator"] option[value="contains"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value="notcontains"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value="<"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value=">"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value="<="]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value=">="]').addClass('is-hidden');
        } else if (fieldType === 'picklist' || fieldType === 'multipicklist') {
            $('#listing-cms-form select[name="second_filter_operator"] option[value="<"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value=">"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value="<="]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value=">="]').addClass('is-hidden');
        } else {
            $('#listing-cms-form select[name="second_filter_operator"] option[value="<"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value=">"]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value="<="]').addClass('is-hidden');
            $('#listing-cms-form select[name="second_filter_operator"] option[value=">="]').addClass('is-hidden');

        }

    });

    $(document).on('change', '#listing-cms-form select[name="field_to_filter"]', function () {
        let salesforceObj = $('#listing-cms-form select[name="salesforce_object"]').val();
        let salesforcefield = $('#listing-cms-form select[name="field_to_filter"]').val();
        var fieldType = $('#listing-cms-form select[name="field_to_filter"] option:selected').data('type');
        $('#listing-cms-form select[name="filter_operator"] option').removeClass('is-hidden');
        var filterValue = $('#listing-cms-form input[name="filter_value"]');
        filterValue.fdatepicker("remove")
        if (fieldType === 'datetime' || fieldType === 'date') {
            filterValue.fdatepicker({
                format: 'yyyy-mm-dd',
                language: 'en',
                weekStart: get_start_day_of_week_from_locale(),
            });
            $('#listing-cms-form select[name="filter_operator"] option[value="contains"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value="notcontains"]').addClass('is-hidden');
        } else if (fieldType === 'double') {
            $('#listing-cms-form select[name="filter_operator"] option[value="contains"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value="notcontains"]').addClass('is-hidden');
        } else if (fieldType === 'boolean') {
            $('#listing-cms-form select[name="filter_operator"] option[value="contains"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value="notcontains"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value="<"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value=">"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value="<="]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value=">="]').addClass('is-hidden');
        } else if (fieldType === 'picklist' || fieldType === 'multipicklist') {
            $('#listing-cms-form select[name="filter_operator"] option[value="<"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value=">"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value="<="]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value=">="]').addClass('is-hidden');
        } else {
            $('#listing-cms-form select[name="filter_operator"] option[value="<"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value=">"]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value="<="]').addClass('is-hidden');
            $('#listing-cms-form select[name="filter_operator"] option[value=">="]').addClass('is-hidden');
        }
        add_field_picklist_values_to_autocomplete(fieldType, salesforceObj, salesforcefield);
    });

    $(document).on('click', '#listing-cms-block-conf .delete_rule a', function () {
        $('#listing-cms-form input[name="pending-changes"]').val(true);
        if ($('#listing-cms-form .filter_rules .rule').length === 1) {
            $('#listing-cms-form .without_rules').removeClass('hide-custom');
        }
        $(this).parent().parent().remove();
        $('#listing-cms-form .custom_filtering .filter_rules .rule').each(function (index) {
            $(this).find('.field_order').text((index + 1) + '.');
        });
        return false;
    });

    $(document).on('click', '#listing-cms-block-conf .second_delete_rule a', function () {
        $('#listing-cms-form input[name="pending-changes"]').val(true);
        if ($('#listing-cms-form .second_filter_rules .rule').length === 1) {
            $('#listing-cms-form .second_without_rules').removeClass('hide-custom');
        }
        $(this).parent().parent().remove();
        $('#listing-cms-form .special-settings-second-view .second_filter_rules .rule').each(function (index) {
            $(this).find('.field_order').text((index + 1) + '.');
        });
        return false;
    });


    $(document).on('click', '#listing-cms-form .delete_block', function () {
        var self = $('#listing-cms-form');
        var selfModal = $('#listing-cms-block-conf');
        var blockId = self.find('input[name="listing-cms-block-id"]').val();

        if (blockId && blockId !== '0') {

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_listing_block,
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true


            }).then(function (result) {
                if (result.isConfirmed) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/DeleteListingCMSBlock",
                        data: { cmsBlockId: blockId.toString() },
                        beforeSend: function () {
                            selfModal.find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status.toString() == '200') {

                            Swal.fire({
                                title: window.translation.success,
                                text: jsonResult.message,
                                icon: "success",
                                closeOnConfirm: true
                            }).then(function (result) {
                                selfModal.find('.processing_screen').show();
                                Swal.close();

                                window.location.reload();

                            });

                        } else {

                            Swal.fire({
                                title: window.translation.error,
                                text: jsonResult.message,
                                icon: "error",
                                closeOnConfirm: true

                            }).then(function (result) {
                                selfModal.find('.processing_screen').hide();
                                swal.close();

                            });

                        }
                    });

                }
            });

        }
    });

    $(document).on('click', 'a.rollback_action', function () {
        var versionId = $(this).data('version-id');
        var componentType = $(this).data('component-type');
        var pageName = $(this).data('pagename');
        var idsversion = $(this).data('idsversion');

        //Logic for CSRF token
        var theForm = $(this).closest('form');
        var requestVerificationToken = '';
        if (theForm !== null) {
            var theDataForm = theForm.serializeObject();
            requestVerificationToken = theDataForm['__RequestVerificationToken'];
        }

        if (componentType === 'ListingCMSBlock') {
            if (idsversion) {
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/RestoreComponent",
                    data: {
                        versionId: versionId,
                        pageName: pageName,
                        idsversion: idsversion,
                        "__RequestVerificationToken": requestVerificationToken
                    },
                    beforeSend: function () {
                        $('#rollback-list .processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    $('#rollback-list').foundation('close');


                    //Load versions by componenet
                    if (componentType === 'ListingCMSBlock') {
                        listingcmsblock_rollback(jsonResult, editor);
                    }
                    $('#rollback-list .processing_screen').hide();
                });
            }
        }
    });

    $(document).on('change', '#listing-cms-form select[name="source"]', function () {
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="display-format"]').val();
        var source = $(this).val();
        selfModal.find('.row_max_items_first_load').addClass('hide-custom');
        selfModal.find('select[name="display-format"]').removeClass('soql-selected');
        selfModal.find('input[name="display-search-section"]').parents('.small-6').first().find('.columns').removeClass('hide-custom');
        selfModal.find('.datatable-allow-auto-save').addClass('hide');
        selfModal.find('.datatable-auto-save-timer').addClass('hide');
        if (source === '0' || source === '3') {
            selfModal.find('.soql_query_section').addClass('hide-custom');
            selfModal.find('textarea[name="soql-query"]').text('');
            $('#listing-cms-form').removeClass('soql-selected');
            //Hide rows of Salesforce Object
            selfModal.find('#special-section-for-second-view').hide();
            selfModal.find('.row_salesforce_source').addClass('hide-custom');
            selfModal.find('.column-display-round-image').removeClass('hide-custom');
            selfModal.find('.local_metadata').addClass('hide-custom');
            selfModal.find('.row_custom_card_template').addClass('hide-custom');
            selfModal.find('.row_hide_created_title').removeClass('hide-custom');
            //Hide refresh object setting 
            selfModal.find('.row_refresh_object').addClass('hide-custom');

            //Hide rows of Enforce Filtering by
            selfModal.find('.row.enforce_filtering').addClass('hide-custom');

            //Hide rows of Column settings
            selfModal.find('.row_custom_column_settings').addClass('hide-custom');

            //Hide rows of Editable Table
            selfModal.find('.datatable-editable').addClass('hide-custom');

            //Hide Export CSV 
            selfModal.find('.display-export-csv-section').addClass('hide-custom');

            //Hide option card custom of format select
            selfModal.find('select[name="display-format"]').find('option[value="3"]').remove();

            //Hide option datatable of format select
            selfModal.find('select[name="display-format"]').find('option[value="4"]').remove();

            //Hide option calendar of format select
            selfModal.find('select[name="display-format"]').find('option[value="5"]').remove();

            //Hide option map of format select
            selfModal.find('select[name="display-format"]').find('option[value="6"]').remove();

            //Hide Chart Options of display format field
            var optionsToRemove = 'option[value="8"], option[value="9"], option[value="10"], option[value="11"]';
            selfModal.find('select[name="display-format"]').find(optionsToRemove).remove();


            selfModal.find('select[name="display-format"]').find('option[value="12"]').remove();

            // Hide chart settings section
            selfModal.find('.chart_settings').addClass('hide-custom');

            //Show rows of sorting options
            selfModal.find('.row_order_sort').removeClass('hide-custom');

            //Display fields "content types" and "include sub-types"
            selfModal.find('select[name="page-categories"]').parents('.small-6').first().find('.columns').removeClass('hide-custom');
            selfModal.find('input[name="include-subcategories"]').parents('.small-6').first().find('.columns').removeClass('hide-custom');

            //Show row with read more and summary fields
            selfModal.find('.row_read_more_summary').removeClass('hide-custom');

            // Hide custom filter section
            selfModal.find('.custom_filtering').addClass('hide-custom');
            // Hide map fields section
            selfModal.find('.map_fields').addClass('hide-custom');
            selfModal.find('a.view_preliminar_query').hide();
            review_auto_refresh_visibility_settings(false, selfModal);
            if (source === '3') {
                //Display fields "content types" and "include sub-types"
                selfModal.find('select[name="page-categories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
                selfModal.find('input[name="include-subcategories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
                selfModal.find('input[name="display-search-section"]').prop('checked', true);
                selfModal.find('input[name="display-search-section"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
                // Hide custom filtering
                selfModal.find('.custom_filtering').addClass('hide-custom');
            }
        }
        else if (source === '1') {
            selfModal.find('textarea[name="soql-query"]').text('');
            selfModal.find('.soql_query_section').addClass('hide-custom');
            $('#listing-cms-form').removeClass('soql-selected');
            //Show rows of Salesforce Object
            //selfModal.find('#special-section-for-second-view').show();
            selfModal.find('#special-section-for-second-view').find('input[name="enable-secondary-listview"]').prop('checked', false);
            selfModal.find('.row_salesforce_source').removeClass('hide-custom');
            selfModal.find('.column-display-round-image').addClass('hide-custom');
            selfModal.find('.local_metadata').removeClass('hide-custom');
            selfModal.find('.row_hide_created_title').addClass('hide-custom');
            selfModal.find('.custom_filtering').removeClass('hide-custom');
            selfModal.find('.row_max_items_first_load').removeClass('hide-custom');

            //Show refresh object setting 
            selfModal.find('.row_refresh_object').removeClass('hide-custom');

            //Show rows of enforcing filtering by
            selfModal.find('.row.enforce_filtering').removeClass('hide-custom');
            //Disable select for enforcing filter if checkbox associated is not checked
            if (!selfModal.find('input[name="enforce_account_id"]').prop('checked')) selfModal.find('select[name="enforce_account_id_field_sf"]').attr('disabled', 'disabled');
            if (!selfModal.find('input[name="enforce_contact_id"]').prop('checked')) selfModal.find('select[name="enforce_contact_id_field_sf"]').attr('disabled', 'disabled');
            review_auto_refresh_visibility_settings(true, selfModal);

            //Hide rows of sorting options
            selfModal.find('.row_order_sort').addClass('hide-custom');
            selfModal.find('a.view_preliminar_query').show();
            if (displayFormat !== '0' && displayFormat !== '4') {
                selfModal.find('.row_custom_card_template').removeClass('hide-custom');
                selfModal.find('.row_custom_card_template .old-card-template').hide();
                selfModal.find('.row_custom_column_settings').addClass('hide-custom');
                selfModal.find('.datatable-editable').addClass('hide-custom');
                selfModal.find('.display-export-csv-section').addClass('hide-custom');
                selfModal.find('.available-fields-salesforce-view ul').empty();
            }
            else if (displayFormat == '4') {
                selfModal.find('.row_custom_card_template').addClass('hide-custom');
                selfModal.find('.row_custom_column_settings').removeClass('hide-custom');
                selfModal.find('.datatable-editable').removeClass('hide-custom');
                selfModal.find('.display-export-csv-section').removeClass('hide-custom');
            }
            else {
                selfModal.find('.row_custom_card_template').addClass('hide-custom');
                selfModal.find('.datatable-editable').addClass('hide-custom');
                selfModal.find('.display-export-csv-section').addClass('hide-custom');

                if (displayFormat !== '5') {
                    selfModal.find('.row_custom_column_settings').addClass('hide-custom');
                }

                if (displayFormat !== '2' && displayFormat !== '4' && displayFormat !== '3' && displayFormat !== '8' && displayFormat !== '9'
                    && displayFormat !== '10' && displayFormat !== '11' && displayFormat !== '1' && displayFormat !== '0' && displayFormat !== '6' && displayFormat !== '7' && displayFormat !== '5') {
                    review_auto_refresh_visibility_settings(false, selfModal)
                }
            }
            var isGlobaluser = $('#is-global-user').val() == 'true';
            //Add option card custom to select 'display-format' if not have the option
            if (selfModal.find('select[name="display-format"]').find('option[value="3"]').length === 0) {
                var optionCardCustom = '<option value="3">' + window.translation.custom_card_template + '</option>';
                selfModal.find('select[name="display-format"]').append(optionCardCustom);
            }

            //Add option datatable to select 'display-format' if not have the option
            if (selfModal.find('select[name="display-format"]').find('option[value="4"]').length === 0) {
                var optionDatatable = '<option value="4">' + window.translation.datatable + '</option>';
                selfModal.find('select[name="display-format"]').append(optionDatatable);
            }

            //Add option calendar to select 'display-format' if not have the option
            if (selfModal.find('select[name="display-format"]').find('option[value="5"]').length === 0) {
                var optionCalendar = '<option value="5">' + window.translation.calendar  + '</option>';
                selfModal.find('select[name="display-format"]').append(optionCalendar);
            }

            //Add option Map to select 'display-format' if not have the option
            if (selfModal.find('select[name="display-format"]').find('option[value="6"]').length === 0) {
                var optionMap = '<option value="6">' + window.translation.only_map + '</option>';
                selfModal.find('select[name="display-format"]').append(optionMap);
            }

            //Add option "Comments Timeline" to select 'display-format' if not have the option
            if (selfModal.find('select[name="display-format"]').find('option[value="7"]').length === 0 && (isGlobaluser || IS_LLAMAPI_ENABLED)) {
                var optionComment = '<option value="7">' + window.translation.comments + (!IS_LLAMAPI_ENABLED ? ' ' + getGlobalRestrictedText() : '') + '</option>';
                selfModal.find('select[name="display-format"]').append(optionComment);
            }

            //Add option Bar Chart to select 'display-format' if not have the option
            if (selfModal.find('select[name="display-format"]').find('option[value="8"]').length === 0) {
                var optionBar = '<option value="8">' + window.translation.bar_chart + '</option>';
                selfModal.find('select[name="display-format"]').append(optionBar);
            }

            //Add option Column Chart to select 'display-format' if not have the option
            if (selfModal.find('select[name="display-format"]').find('option[value="9"]').length === 0) {
                var optionChart = '<option value="9">' + window.translation.column_chart + '</option>';
                selfModal.find('select[name="display-format"]').append(optionChart);
            }

            //Add option Pie Chart to select 'display-format' if not have the option
            if (selfModal.find('select[name="display-format"]').find('option[value="10"]').length === 0) {
                var optionPie = '<option value="10">' + window.translation.pie_chart + '</option>';
                selfModal.find('select[name="display-format"]').append(optionPie);
            }

            //Add option Pie Chart to select 'display-format' if not have the option
            if (selfModal.find('select[name="display-format"]').find('option[value="11"]').length === 0) {
                var optionDonut = '<option value="11">' + window.translation.donut_chart + '</option>';
                selfModal.find('select[name="display-format"]').append(optionDonut);
            }


            if (selfModal.find('select[name="display-format"]').find('option[value="12"]').length === 0) {
                var optionRss = '<option value="12">' + window.translation.rss_feed + '</option>';
                selfModal.find('select[name="display-format"]').append(optionRss);
            }

            //Hide rows of "content types" and "include sub-types"
            selfModal.find('select[name="page-categories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
            selfModal.find('input[name="include-subcategories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');

            //Hide rows of "content types" and "hide title and hide created date"
            selfModal.find('input[name="hide-title"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
            selfModal.find('input[name="hide-created-date"]').parents('.small-6').first().find('.columns').addClass('hide-custom');

            //Hide row with read more and summary fields
            selfModal.find('.row_read_more_summary').addClass('hide-custom');

            // Show custom filter section
            selfModal.find('.custom_filtering').removeClass('hide-custom');

            //Load salesforce objects
            listingcmsblock_loadsalesforceobjects(selfModal, '', '', 'salesforce_object', 'salesforce_view', false);
            if (selfModal.find('select[name="second_salesforce_object"]').length > 0)
                listingcmsblock_loadsalesforceobjects_for_second_filter(selfModal, '', '', 'second_salesforce_object', 'second_salesforce_view', false, false, true);
        }
        else if (source === '2') {
            selfModal.find('.soql_query_section').removeClass('hide-custom');

            var fields = {};
            fields.columns = [];
            var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);
            var tableId = "table-columns-fields";
            var rowSettings = "row_custom_column_settings";
            let storage = listingcmsblock_get_fields_settings_storage_name(className);
            sessionStorage.removeItem(storage);
            listingcmsblock_load_column_settings(JSON.stringify(fields), className, false, tableId, rowSettings);


            handleSettingsForSoql(selfModal, displayFormat);
        }
        ShowHideAutoSuggetsField();
    });

    // Validation to enable/disable select of "Enforcing filter" only if checkbox associated if checked
    $(document).on('change', '#listing-cms-form input[name="enforce_contact_id"]', function () {
        var valueInput = $(this).prop('checked');
        var inputSelect = $('#listing-cms-form select[name="enforce_contact_id_field_sf"]');
        var valueInputAccount = $('#listing-cms-form input[name="enforce_account_id"]').prop('checked');
        $('select[name="EnforcedbyContactOrAccount"]').val('0');
        if (!valueInput) {
            inputSelect.attr('disabled', 'disabled');
            $('.enforcedOR-space').removeClass('hide-custom');
            $('.enforcedOR-section').addClass('hide-custom');
        }
        else {
            inputSelect.removeAttr('disabled', 'disabled');
            if (valueInputAccount) {
                $('.enforcedOR-space').addClass('hide-custom');
                $('.enforcedOR-section').removeClass('hide-custom');
            }
        }
    });
    $(document).on('change', '#listing-cms-form input[name="enforce_account_id"]', function () {
        var valueInput = $(this).prop('checked');
        var inputSelect = $('#listing-cms-form select[name="enforce_account_id_field_sf"]');
        var valueInputContact = $('#listing-cms-form input[name="enforce_contact_id"]').prop('checked');
        $('select[name="EnforcedbyContactOrAccount"]').val('0');
        if (!valueInput) {
            inputSelect.attr('disabled', 'disabled');
            $('.enforcedOR-space').removeClass('hide-custom');
            $('.enforcedOR-section').addClass('hide-custom');
        }
        else {
            inputSelect.removeAttr('disabled', 'disabled');
            if (valueInputContact) {
                $('.enforcedOR-space').addClass('hide-custom');
                $('.enforcedOR-section').removeClass('hide-custom');
            }
        }
    });

    $(document).on('change', '#listing-cms-form textarea#soql-query', function () {
        var queryInfo = $(this).val();
        var selfModal = $(this).parents('.reveal').first();
        var valueAutoSuggestField = $(this).closest('#listing-cms-form').find('select[name="search-auto-suggest-field"]').val();
        setObjectFromSOQLQuery(queryInfo, valueAutoSuggestField, selfModal);
    });

    $(document).on('change', '#listing-cms-form textarea#second_soql_query', function () {
        let queryInfo = $(this).val();
        var selfModal = $(this).parents('.reveal').first();
        setSecondObjectFromSOQLQuery(queryInfo, selfModal);
    });

    $(document).on('change', '#listing-cms-form input[name="salesforce_object_filter"]', function () {
        if ($(this).val()) {
            listingcmsblock_loadSF_fields($(this).val());
        }
    });

    $(document).on('change', '#listing-cms-form select[name="salesforce_object"]', function () {
        var selfModal = $(this).parents('.reveal').first();
        var sfObject = $(this).val();
        // cleaning selctor of filter columns and rules already created
        //selfModal.find('select[name="field_to_filter"] option').remove();
        selfModal.find('.filter_rules .rule').remove();
        selfModal.find('.without_rules').removeClass('hide-custom');
        selfModal.find('.body-detail-facets .row.body-section').remove();
        selfModal.find('.body-section.not-facets').removeClass('hide-custom');
        selfModal.find('.list_view_deleted').addClass('hide-custom');
        selfModal.find('select[name="title_field_map"] option').remove();
        selfModal.find('select[name="latitude_field_view"] option').remove();
        selfModal.find('select[name="longitude_field_view"] option').remove();
        selfModal.find('select[name="description_field_view"] option').remove();
        selfModal.find('select[name="sf_chart_label_field"] option').remove();
        selfModal.find('select[name="sf_chart_value_field"] option').remove();
        selfModal.find('input[name="sf_chart_label_field-text"]').val('');
        selfModal.find('input[name="sf_chart_value_field-text"]').val('');
        selfModal.find('.preset-filters-section .rule_preset-dynamic_filter select[name="dynamic_filter"]').children().remove();
        selfModal.find('.preset-filters-section .preset_filter_rules .rule.columns').remove();
        selfModal.find('.preset-filters-section').hide()
        if (sfObject) {
            //Load salesforce views
            listingcmsblock_loadsalesforceview(selfModal, sfObject, '', 'salesforce_view', false);
            selfModal.find('input[name="salesforce_object_filter"]').val(sfObject).trigger('change');;
        }
    });

    $(document).on('change', '#listing-cms-form select[name="display-format"]', function () {

        var selfModal = $(this).parents('.reveal').first();
        var captureUrlParameter = selfModal.find('select[name="require_url_parameters"]').val();
        var displayFormat = $(this).val();
        var displaySearchSection = (selfModal.find('input[name="display-search-section"]').is(':checked')) ? true : false;
        //update class
        SetClassForSettingTable(displayFormat, selfModal)
        var source = selfModal.find('select[name="source"]').val();
        selfModal.find('.number-results-search').removeClass('hide-custom');
        selfModal.find('input[name="display-export-csv"]').prop('checked', false);
        //selfModal.find('input[name="use-local-list-view-data"]').prop('checked', false);
        selfModal.find('input[name="is-editable"]').prop('checked', false);
        selfModal.find('input[name="show-counts-per-filter"]').prop('checked', false);
        selfModal.find('input[name="comments-in-two-columns"]').prop('checked', false);
        $('label.value-right-alignment').text(window.translation.value_second_author);
        selfModal.find('.help-text-two-columns').addClass('hide-custom');
        selfModal.find('.map_fields').addClass('hide-custom');
        selfModal.find('.chart-instructions img').addClass('hide-custom');
        var specialSection = $('#special-section-for-second-view');
        specialSection.hide();

        if (displayFormat == '4' || displayFormat == '3' || displayFormat == '1') {
            selfModal.find('.keep-user-settings').removeClass('hide-custom');
        } else {
            selfModal.find('.keep-user-settings').addClass('hide-custom');
        }
        if (displayFormat !== '0' && (source === '1' || source === '2') && displayFormat !== '4') {
            //Show row of custom card if format is not list
            selfModal.find('.row_custom_card_template').removeClass('hide-custom');
            selfModal.find('.row_custom_card_template .old-card-template').hide();
            selfModal.find('.row_custom_column_settings').addClass('hide-custom');
            selfModal.find('.datatable-editable').addClass('hide-custom');
            selfModal.find('.display-export-csv-section').addClass('hide-custom');
            selfModal.find('.enforce_filtering').removeClass('hide-custom');
            selfModal.find('.row_display_search_section').removeClass('hide-custom');

            if (displayFormat == "1" || displayFormat == "3") {
                selfModal.find('.display-dynamic-filter-section').removeClass('hide-custom');
            }
            else {
                selfModal.find('.display-dynamic-filter-section').addClass('hide-custom');
            }

            selfModal.find('.row_number_of_items').removeClass('hide-custom');
            selfModal.find('.row_items_per_page').removeClass('hide-custom');
            selfModal.find('.add-custom-column').removeClass('hide-custom');
            selfModal.find('.field-configuration').addClass('calendar-data-configuration');
            selfModal.find('.cell-sort').removeClass('hide-custom');
            selfModal.find('.cell-visible').removeClass('extra-width');
            if (source === '1' && (displayFormat == '1' || displayFormat == '2' || displayFormat == '3' || displayFormat == '7' || displayFormat == '12')) {
                selfModal.find('select[name="salesforce_view"]').trigger('change');
            }

            if (displayFormat === '5') {
                selfModal.find('.row_date_to_group_results').removeClass('hide-custom');
                selfModal.find('.row_custom_column_settings').removeClass('hide-custom');
                selfModal.find('.datatable-editable').addClass('hide-custom');
                selfModal.find('.display-export-csv-section').addClass('hide-custom');
                selfModal.find('.row_custom_card_template').addClass('hide-custom');
                //selfModal.find('.enforce_filtering').addClass('hide-custom');
                selfModal.find('.enforce_filtering').removeClass('hide-custom');
                selfModal.find('.row_display_search_section').addClass('hide-custom');
                selfModal.find('.display-dynamic-filter-section').addClass('hide-custom');
                selfModal.find('.row_number_of_items').addClass('hide-custom');
                selfModal.find('.row_items_per_page').addClass('hide-custom');
                selfModal.find('.add-custom-column').removeClass('hide-custom');
                selfModal.find('.field-configuration').addClass('calendar-data-configuration');
                selfModal.find('.cell-sort').addClass('hide-custom');
                selfModal.find('.cell-visible').addClass('extra-width');
                if (source === '1') {
                    var objectSF = selfModal.find('select[name="salesforce_object"]').val();
                    var viewSF = selfModal.find('select[name="salesforce_view"]').val();
                    if (source != '2') {
                        listingcmsblock_loadfieldsavailablesalesforceview(selfModal, objectSF, viewSF, displayFormat, "event", null, null, null, captureUrlParameter);
                    }
                }
            }
            if (displayFormat === '6') {
                selfModal.find('.datatable-editable').addClass('hide-custom');
                selfModal.find('.display-export-csv-section').addClass('hide-custom');
                selfModal.find('.row_custom_card_template').addClass('hide-custom');
                selfModal.find('.row_date_to_group_results').addClass('hide-custom');
                selfModal.find('.enforce_filtering ').addClass('hide-custom');
                selfModal.find('.row_display_search_section').addClass('hide-custom');
                selfModal.find('.display-dynamic-filter-section').addClass('hide-custom');
                selfModal.find('.row_number_of_items').addClass('hide-custom');
                selfModal.find('.row_items_per_page').addClass('hide-custom');
                selfModal.find('.add-custom-column').addClass('hide-custom');
                selfModal.find('.map_fields').removeClass('hide-custom');
                if (source === '1') {
                    var objectSF = selfModal.find('select[name="salesforce_object"]').val();
                    var viewSF = selfModal.find('select[name="salesforce_view"]').val();
                    if (source != '2') {
                        listingcmsblock_loadfieldsavailablesalesforceview(selfModal, objectSF, viewSF, displayFormat, null, null, null, null, captureUrlParameter);
                    }
                }
            }

            // This i due now is enabled for custom card template
            if (source === '1' && displayFormat !== '3' && displayFormat !== '8' && displayFormat !== '9' && displayFormat !== '10' &&
                displayFormat !== '11' && displayFormat !== '12' && displayFormat !== '1' && displayFormat !== '0' && displayFormat !== '6' && displayFormat !== '7' && displayFormat !== '5') {
                review_auto_refresh_visibility_settings(false, selfModal);
            }
            if (source === '1') {
                if (displayFormat === '3')
                    specialSection.show();
                else
                    specialSection.hide();
            }
        }
        else if (displayFormat === '4') {
            selfModal.find('.number-results-search').addClass('hide-custom');
            selfModal.find('.row_custom_column_settings').removeClass('hide-custom');
            selfModal.find('.datatable-editable').removeClass('hide-custom');
            selfModal.find('.row_custom_card_template').addClass('hide-custom');
            selfModal.find('.display-export-csv-section').removeClass('hide-custom');
            selfModal.find('.row_number_of_items').removeClass('hide-custom');
            selfModal.find('.row_items_per_page').removeClass('hide-custom');
            selfModal.find('.row_display_search_section').removeClass('hide-custom');
            selfModal.find('.display-dynamic-filter-section').removeClass('hide-custom');
            selfModal.find('.row_date_to_group_results').addClass('hide-custom');
            selfModal.find('.enforce_filtering').removeClass('hide-custom');
            selfModal.find('.add-custom-column').removeClass('hide-custom');
            $('#listing-cms-form select[name="salesforce_view"]').trigger('change');
            selfModal.find('.cell-sort').removeClass('hide-custom');
            selfModal.find('.cell-visible').removeClass('extra-width');
            review_auto_refresh_visibility_settings(true, selfModal);
        }
        else {
            selfModal.find('.datatable-editable').addClass('hide-custom');
            selfModal.find('.display-export-csv-section').addClass('hide-custom');
            selfModal.find('.row_custom_card_template').addClass('hide-custom');
            selfModal.find('.row_date_to_group_results').addClass('hide-custom');
            selfModal.find('.enforce_filtering ').removeClass('hide-custom');
            selfModal.find('.row_display_search_section').removeClass('hide-custom');

            if (displayFormat == "1" || displayFormat == "3" || displayFormat == "4") {
                selfModal.find('.display-dynamic-filter-section').removeClass('hide-custom');
            } else {
                selfModal.find('.display-dynamic-filter-section').addClass('hide-custom');
            }
            selfModal.find('.row_number_of_items').removeClass('hide-custom');
            selfModal.find('.row_items_per_page').removeClass('hide-custom');
            selfModal.find('.add-custom-column').removeClass('hide-custom');
            selfModal.find('.cell-sort').removeClass('hide-custom');
            selfModal.find('.cell-visible').removeClass('extra-width');

            if (displayFormat !== '5') {
                selfModal.find('.row_custom_column_settings').addClass('hide-custom');
            }
            review_auto_refresh_visibility_settings(false, selfModal);
        }

        if (displayFormat !== '5') {
            selfModal.find('.row_date_to_group_results').addClass('hide-custom');
            selfModal.find('.field-configuration').removeClass('calendar-data-configuration');
        }
        var chartIds = ['8', '9', '10', '11'];
        if (chartIds.includes(displayFormat)) {
            // hiding fields when some chart type is selected.
            selfModal.find('.row_display_search_section').addClass('hide-custom');
            selfModal.find('.display-dynamic-filter-section').addClass('hide-custom');
            selfModal.find('.row_items_per_page').addClass('hide-custom');
            selfModal.find('.row_custom_card_template').addClass('hide-custom');
            // Displaying chart settings section
            selfModal.find('.chart_settings').removeClass('hide-custom');
            // Display respective instructions images
            if (displayFormat === '8') {
                selfModal.find('.bar-chart-image').removeClass('hide-custom');
                selfModal.find('.title-axis-y, .title-axis-x, .alias-value').removeClass('hide-custom');
            }
            if (displayFormat === '9') {
                selfModal.find('.column-chart-image').removeClass('hide-custom');
                selfModal.find('.title-axis-y, .title-axis-x, .alias-value').removeClass('hide-custom');
            }
            if (displayFormat === '10') {
                selfModal.find('.pie-chart-image').removeClass('hide-custom');
                selfModal.find('.title-axis-y, .title-axis-x, .alias-value').addClass('hide-custom');
                selfModal.find('input[name="title_x_axis"]').val('');
                selfModal.find('input[name="title_y_axis"]').val('');
                selfModal.find('input[name="chart_alias_value"]').val('');
            }
            if (displayFormat === '11') {
                selfModal.find('.donut-chart-image').removeClass('hide-custom');
                selfModal.find('.title-axis-y, .title-axis-x, .alias-value').addClass('hide-custom');
                selfModal.find('input[name="title_x_axis"]').val('');
                selfModal.find('input[name="title_y_axis"]').val('');
                selfModal.find('input[name="chart_alias_value"]').val('');
            }
        } else {
            //Show rows of sorting options
            selfModal.find('.chart_settings').addClass('hide-custom');
        }

        if (displayFormat === '4' || displayFormat === '5') {
            selfModal.find('#customOrder').addClass('hide-custom');
        } else {
            selfModal.find('#customOrder').removeClass('hide-custom');
        }
        //sort field in listining (not apply in datatable or calendar)
        if ($('#is-global-user').val() == 'true' || IS_LLAMAPI_ENABLED) {

            //listining comment timeline
            if (displayFormat === '7') {
                selfModal.find('#commentsTimeline').removeClass('hide-custom');
                selfModal.find('.color-text-custom-card').removeClass('hide-custom');
                selfModal.find('.row_custom_card_template label.card-title').text('Comment Format:');

                var customColorsObj = new Object();
                if (selfModal.find('input[name="customColors"]').val() == '') {

                    customColorsObj.typeColor = "#4B4B4B";
                    customColorsObj.dateColor = "#999999";
                    customColorsObj.authorColor = "#0052FF";
                    customColorsObj.backAColor = "#F7F7F7";
                    customColorsObj.backBColor = "#FFFFFF";
                    customColorsObj.commentColor = "#000000";
                }
                else {
                    customColorsObj = JSON.parse(selfModal.find('input[name="customColors"]').val());
                }
                listingcmsblock_load_color_picker(selfModal, customColorsObj);

            } else {
                selfModal.find('#commentsTimeline').addClass('hide-custom');
                selfModal.find('.color-text-custom-card').addClass('hide-custom');
                selfModal.find('.row_custom_card_template label.card-title').text('Custom Card Template:');
            }
        }
        else {
            selfModal.find('#commentsTimeline').addClass('hide-custom');
            selfModal.find('.color-text-custom-card').addClass('hide-custom');
        }

        if (displayFormat !== '2') {
            selfModal.find('.slider-settings').addClass('hide-custom');
        } else {
            selfModal.find('.slider-settings').removeClass('hide-custom');
        }

        //--- Reload settings if in source == 2
        if (source == '2' && (displayFormat == '4' || displayFormat == '5')) {
            var fields = {};
            fields.columns = [];
            var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);
            var tableId = "table-columns-fields";
            var rowSettings = "row_custom_column_settings";
            let storage = listingcmsblock_get_fields_settings_storage_name(className);
            sessionStorage.removeItem(storage);
            listingcmsblock_load_column_settings(JSON.stringify(fields), className, false, tableId, rowSettings);
            $('#listing-cms-form textarea#soql-query').trigger('change');
        }

        if (source == '2') {
            handleSettingsForSoql(selfModal, displayFormat);
        }
        else if (source == '1') {
            selfModal.find('.custom_filtering').removeClass('hide-custom');
        }
        ShowHideAutoSuggetsField();

        if (displayFormat == '12') {
            ApplyModalConfigurationForRSS();
            let parentId = selfModal.find('input[name="listing-cms-parent-id"]').val();
            let currentFeedId = selfModal.find('input[name="feed-id-code"]').val();
            if (currentFeedId == '') {
                $.ajax({
                    url: urlSite + "admin/GenerateFeedIdForListing",
                    method: 'GET'
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.code === 200) {
                        selfModal.find('input[name="feed-id-code"]').val(jsonResult.feedId);
                        if (parentId != '' && parentId !== undefined && parentId !== null)
                            selfModal.find("#feed-url").text(jsonResult.RSSFeedURL + "/" + parentId);
                        else
                            selfModal.find("#feed-url").text(jsonResult.RSSFeedURL);
                    }
                });
            } else {
                
                let feedUrl = selfModal.find("#feed-url").text();
                if (!feedUrl.endsWith("/" + parentId) && parentId != '' && parentId !== undefined && parentId !== null)
                    selfModal.find("#feed-url").text(feedUrl + "/" + parentId);

                
            }
        }
        else {
            RemoveModalConfigurationForRSS(displayFormat);
        }

    });

    $(document).on('change', '#listing-cms-form select[name="second_salesforce_view"]', function () {
        var selfModal = $(this).parents('.reveal').first();
        var captureUrlParameter = selfModal.find('select[name="require_url_parameters"]').val();
        var objectSF = selfModal.find('select[name="second_salesforce_object"]').val();
        var viewSF = $(this).val();
        var displayFormat = selfModal.find('select[name="second-display-format"]').val();
        listingcmsblock_loadfieldsavailablesalesforceview_for_second(selfModal, objectSF, viewSF, displayFormat, false, true);

    });

    $(document).on('change', '#listing-cms-form select[name="salesforce_view"]', function () {

        var selfModal = $(this).parents('.reveal').first();
        var captureUrlParameter = selfModal.find('select[name="require_url_parameters"]').val();
        var SearchAutoSuggestFieldDefault = selfModal.find('select[name="search-auto-suggest-field"]').val();
        var objectSF = selfModal.find('select[name="salesforce_object"]').val();
        var viewSF = selfModal.find('select[name="salesforce_view"]').val();
        selfModal.find('input[name="salesforce_label_view"]').val(selfModal.find('select[name="salesforce_view"] option:selected').text());
        selfModal.find('select[name="field_to_filter"]').trigger('change');
        var displayFormat = selfModal.find('select[name="display-format"]').val();
        var source = selfModal.find('select[name="source"]').val();
        selfModal.find('select[name="sf_chart_label_field"] option').remove();
        selfModal.find('select[name="sf_chart_value_field"] option').remove();
        selfModal.find('input[name="sf_chart_label_field-text"]').val('');
        selfModal.find('input[name="sf_chart_value_field-text"]').val('');
        selfModal.find('input[name="display-dynamic-filter-val"]').val('');
        selfModal.find('select[name="display-dynamic-filter"] option').remove();

        selfModal.find('.body-detail-facets .row.body-section').remove();
        selfModal.find('.body-section.not-facets').removeClass('hide-custom');
        // remove pressetfilters
        selfModal.find('.preset-filters-section .rule_preset-dynamic_filter select[name="dynamic_filter"]').children().remove();
        selfModal.find('.preset-filters-section .preset_filter_rules .rule.columns').remove();
        selfModal.find('.preset-filters-section').hide();

        if (source != '2') {
            listingcmsblock_loadfieldsavailablesalesforceview(selfModal, objectSF, viewSF, displayFormat, "event", displayFormat === '5' ? true : null, null, null, captureUrlParameter, SearchAutoSuggestFieldDefault);
        }
    });

    $(document).on('click', '#table-columns-fields-second-view tbody tr', function () {
        var datatable = $('#table-columns-fields-second-view').DataTable();
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="second-display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, true);
        if ($(this).hasClass('selected')) {
            $(this).removeClass('selected');
            $('.second-field-configuration').hide();
            selfModal.find('.row_second_view_custom_column_settings .field-configuration').addClass('hide-custom');
            $(".row_second_view_custom_column_settings .remove-button-section").addClass('hide-custom');
        }
        else {
            datatable.$('tr.selected').removeClass('selected');
            $(this).addClass('selected');
            $('.second-field-configuration').show();
            if ($("#second_field_changed").val() == "true") {
                var field_to_save = $("#second_name_settings").val();
                listingcmsblock_save_field_change_second_view(field_to_save, className);
            }
            listingcmsblock_load_column_label_second_view($(this).data('field'), className);
        }

    });


    $(document).on('click', '#table-columns-fields tbody tr', function () {
        var datatable = $('#table-columns-fields').DataTable();
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);
        if ($(this).hasClass('selected')) {
            $(this).removeClass('selected');
            $(className).addClass('hide-custom');
            $(".row_custom_column_settings .remove-button-section").addClass('hide-custom');
            selfModal.find('.row_custom_column_settings .field-configuration').addClass('hide-custom');
        }
        else {
            datatable.$('tr.selected').removeClass('selected');
            $(this).addClass('selected');
            $(className).removeClass('hide-custom');
            if ($("#field_changed").val() == "true") {
                var field_to_save = $("#name_settings").val();
                listingcmsblock_save_field_change(field_to_save, className);
            }

            listingcmsblock_load_column_label($(this).data('field'), className);
            validate_additional_section(selfModal);
        }
    });

    $(document).on('click', '#table-columns-fields-second-view tbody .switch-column-sorteable', function () {
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="second-display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, true);
        if ($(this).prop('checked')) {
            $("#table-columns-fields-second-view").find('input.switch-column-sorteable').prop('checked', false);
            $(this).prop('checked', true);
            $(this).closest('tr').find('input.switch-visible').prop('checked', true);
            listingcmsblock_update_visible_column($(this).closest('tr').find('input.switch-visible').data('field'), true, className);
            listingcmsblock_update_sorteable_column($(this).data('field'), className);
        }
        else {
            $(this).prop('checked', true);
        }


    });

    $(document).on('click', '#table-columns-fields tbody .switch-editable', function () {
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="second-display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);

        listingcmsblock_update_editable_column($(this).data('field'), $(this).prop('checked'), className);
    });

    $(document).on('click', '#table-columns-fields tbody .switch-column-sorteable', function () {
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);

        if ($(this).prop('checked')) {
            $("#table-columns-fields").find('input.switch-column-sorteable').prop('checked', false);
            $(this).prop('checked', true);
            $(this).closest('tr').find('input.switch-visible').prop('checked', true);
            listingcmsblock_update_visible_column($(this).closest('tr').find('input.switch-visible').data('field'), true, className);
            listingcmsblock_update_sorteable_column($(this).data('field'), className);
        }
        else {
            $(this).prop('checked', true);
        }

    });


    $(document).on('click', '#table-columns-fields tbody .switch-column-exportable', function () {
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="second-display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);
        listingcmsblock_update_exportable_column($(this).data('field'), $(this).prop('checked'), className);
    });
    $(document).on('click', '#table-columns-fields-second-view tbody .switch-visible', function () {
        var visibleColumns = $('#table-columns-fields-second-view tbody input.switch-visible:checked').length;
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="second-display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, true);

        var maximum_columns = 15;
        if (visibleColumns > maximum_columns) {
            Swal.fire({
                title: "",
                icon: "warning",
                text: window.translation.maximum_columns,
                confirmButtonText: "Ok"
            });
            $(this).prop('checked', false);
        } else {
            if (!$(this).prop('checked')) {
                if ($(this).closest('tr').find('input.switch-column-sorteable').prop('checked')) {
                    var idToDisable = $(this).closest('tr').find('input.switch-column-sorteable').prop('id');
                    $(this).closest('tr').find('input.switch-column-sorteable').prop('checked', false);
                    var stop = false;
                    $('#table-columns-fields-second-view tbody input.switch-visible:checked').each(function () {

                        if (!stop) {
                            var idToEnable = $(this).closest('tr').find('input.switch-column-sorteable').prop('id');

                            if (idToEnable != idToDisable) {
                                $(this).closest('tr').find('input.switch-column-sorteable').prop('checked', true);
                                listingcmsblock_update_sorteable_column($(this).closest('tr').find('input.switch-column-sorteable').data('field'), className);

                                stop = true;
                            }
                        }
                    });
                }
            }
            listingcmsblock_update_visible_column($(this).data('field'), $(this).prop('checked'), className);

        }



    });

    $(document).on('click', '#table-columns-fields tbody .switch-visible', function () {
        var visibleColumns = $('#table-columns-fields tbody input.switch-visible:checked').length;
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);

        var maximum_columns = 15;
        var is_maximum_columns_30 = (selfModal.find('input[name="is-allow-display-more-than-15-columns"]').is(':checked')) ? true : false;
        if(is_maximum_columns_30){
            maximum_columns = 30;
        }
        if (visibleColumns > maximum_columns) {
            Swal.fire({
                title: "",
                icon: "warning",
                text: window.translation.maximum_columns,
                confirmButtonText: "Ok"
            });
            $(this).prop('checked', false);
        } else {
            if (!$(this).prop('checked')) {
                if ($(this).closest('tr').find('input.switch-column-sorteable').prop('checked')) {
                    var idToDisable = $(this).closest('tr').find('input.switch-column-sorteable').prop('id');
                    $(this).closest('tr').find('input.switch-column-sorteable').prop('checked', false);
                    var stop = false;
                    $('#table-columns-fields tbody input.switch-visible:checked').each(function () {

                        if (!stop) {
                            var idToEnable = $(this).closest('tr').find('input.switch-column-sorteable').prop('id');

                            if (idToEnable != idToDisable) {
                                $(this).closest('tr').find('input.switch-column-sorteable').prop('checked', true);
                                listingcmsblock_update_sorteable_column($(this).closest('tr').find('input.switch-column-sorteable').data('field'), className);

                                stop = true;
                            }
                        }
                    });
                }
            }

        }
        listingcmsblock_update_visible_column($(this).data('field'), $(this).prop('checked'), className);
    });

    $(document).on('click', '.listing-cms-block .second-field-configuration button.save_field', function () {
        var field_name = $(".listing-cms-block .second-field-configuration input#second_name_settings").val();
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="second-display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, true);
        listingcmsblock_save_field_change_second_view(field_name, className);
    });

    $(document).on('click', '.listing-cms-block .field-configuration button.save_field', function () {
        var field_name = $(".listing-cms-block .field-configuration input#name_settings").val();
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);
        listingcmsblock_save_field_change(field_name, className);
        selfModal.find('tr[data-field="' + field_name + '"]').trigger('click');
    });

    $(document).on('click', '.listing-cms-block .row_custom_column_settings button.add-custom-column', function () {

        listingcmsblock_add_custom_column('table-columns-fields', 'row_custom_column_settings', false);
    });

    $(document).on('click', '.listing-cms-block .row_second_view_custom_column_settings button.add-custom-column', function () {
        listingcmsblock_add_custom_column('table-columns-fields-second-view', 'row_second_view_custom_column_settings', true);
    });

    $(document).on('click', '.listing-cms-block .row_second_view_custom_column_settings button.remove-custom-column', function () {
        var fieldName = $('#table-columns-fields-second-view tbody tr.selected').data('field');
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="second-display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, true);
        $('#table-columns-fields-second-view tbody tr.selected').trigger('click');
        selfModal.find('input[name="pending-changes"]').val(true);
        listingcmsblock_remove_custom_column(fieldName, className, 'table-columns-fields-second-view', 'row_second_view_custom_column_settings');

    });

    $(document).on('click', '.listing-cms-block .row_custom_column_settings button.remove-custom-column', function () {
        var fieldName = $('#table-columns-fields tbody tr.selected').data('field');
        var selfModal = $(this).parents('.reveal').first();
        var displayFormat = selfModal.find('select[name="display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);
        $('#table-columns-fields tbody tr.selected').trigger('click');
        selfModal.find('input[name="pending-changes"]').val(true);
        listingcmsblock_remove_custom_column(fieldName, className, 'table-columns-fields', 'row_custom_column_settings');
        if (displayFormat == '5') {
            listingcmsblock_remove_option_custom_field(fieldName, selfModal);
        }
    });

    $(document).on('click', '#listing-cms-form .link-refresh-sobjects-llamapi', function () {
        var selfModal = $(this).parents('.reveal').first();
        var defaultObject = '';
        var defaultSalesforceView = '';
        var secondDefaultObject = '';
        var secondDefaultSalesforceView = '';
        if (selfModal.find('select[name="salesforce_object"]').length > 0)
            defaultObject = selfModal.find('select[name="salesforce_object"]').val();

        if (selfModal.find('select[name="salesforce_view"]').length > 0)
            defaultSalesforceView = selfModal.find('select[name="salesforce_view"]').val();

        selfModal.find('input[name="refresh-requested"]').val(defaultSalesforceView);

        listingcmsblock_loadsalesforceobjects(selfModal, defaultObject, defaultSalesforceView, 'salesforce_object', 'salesforce_view');

        if (selfModal.find('#special-section-for-second-view').length > 0) {
            if (selfModal.find('select[name="second_salesforce_object"]').length > 0)
                secondDefaultObject = selfModal.find('select[name="second_salesforce_object"]').val();

            if (selfModal.find('select[name="second_salesforce_view"]').length > 0)
                secondDefaultSalesforceView = selfModal.find('select[name="second_salesforce_view"]').val();


            listingcmsblock_loadsalesforceobjects_for_second_filter(selfModal, secondDefaultObject, secondDefaultSalesforceView, 'second_salesforce_object', 'second_salesforce_view', false, true, true);

        }
        $('select[name="salesforce_view"]').trigger('change');
    });

    $(document).on('change', '#listing-cms-form input[name="comments-in-two-columns"]', function () {
        var valueInput = $(this).prop('checked');
        if (valueInput) {
            $('label.value-right-alignment').text(window.translation.value_used_right);
            $('.help-text-two-columns').removeClass('hide-custom');
        }
        else {
            $('label.value-right-alignment').text(window.translation.value_second_author);
            $('.help-text-two-columns').addClass('hide-custom');
        }
    });

    $(document).on('change', '#listing-cms-form input[name="search-auto-suggest"]', function () {
        if ($(this).is(':checked')) {
            if (!$('#listing-cms-form input[name="display-search-section"]').is(':checked')) {
                $('#listing-cms-form input[name="display-search-section"]').prop('checked', true);
            }
        }
    });

    $(document).on('change', '#listing-cms-form input[name="display-search-section"]', function () {
        if (!$(this).is(':checked')) {
            if ($('#listing-cms-form input[name="search-auto-suggest"]').is(':checked')) {
                $('#listing-cms-form input[name="search-auto-suggest"]').prop('checked', false);
            }
            $('#listing-cms-form .colum-search-auto-suggest-fields').addClass('hide-custom');
        } else {
            $('#listing-cms-form .colum-search-auto-suggest-fields').removeClass('hide-custom');
        }
    });

    $(document).on('change', '#listing-cms-form input[name="use-local-list-view-data"]', function () {
        var valueInput = $(this).prop('checked');
        listingcmsblock_actions_local_listview(valueInput);
    });

    $(document).on('change', '#listing-cms-form input[name="cache-results"]', function () {
        var valueInput = $(this).prop('checked');
        listingcmsblock_actions_cache_results_listview(valueInput);
    });


    $(document).on('change', '#listing-cms-form input.listingcms-show-title', function () {
        var checked = $(this).prop('checked');
        $('#listing-cms-form input.listingcms-show-title').prop('checked', checked);
        if (checked) {
            $('#listing-cms-form input[name="listingcms_show_title"]').val(checked);
        }
        else {
            $('#listing-cms-form input[name="listingcms_show_title"]').val(null);
        }
    });

    if ($('#special-section-for-second-view').length > 0) {

        $(document).on('change', '#special-section-for-second-view input[name="enable-secondary-listview"]', function () {
            var specialSectionInner = $('#special-section-for-second-view');

            if ($(this).is(':checked')) {
                var className = listingcmsblock_get_fields_settings_class_name(4, true);
                listingcmsblock_load_column_settings('', className, false, 'table-columns-fields-second-view', 'row_second_view_custom_column_settings');
                specialSectionInner.find('.special-settings-second-view').show();
                specialSectionInner.find('.special-settings-second-from-soql').hide();
                specialSectionInner.find('.special-settings-second-from-sf-view').show();
            } else {
                specialSectionInner.find('.special-settings-second-view').hide();
            }
        });


        $(document).on('change', '#special-section-for-second-view select[name="second_view_source"]', function () {
            var specialSectionInner = $('#special-section-for-second-view');
            let value = $(this).val();
            if (value === '1') {
                specialSectionInner.find('.special-settings-second-from-sf-view').show();
                specialSectionInner.find('.special-settings-second-from-soql').hide();
                specialSectionInner.find('textarea[name="second_soql_query"]').text('');
                specialSectionInner.find('.second-view-custom-filters').show();
                specialSectionInner.find('table#table-columns-fields-second-view').addClass('table-for-listview');
                specialSectionInner.find('table#table-columns-fields-second-view').removeClass('table-for-soql');

            } else if (value === '2') {
                specialSectionInner.find('.special-settings-second-from-sf-view').hide();
                specialSectionInner.find('.special-settings-second-from-soql').show();
                specialSectionInner.find('.second-view-custom-filters').hide();
                specialSectionInner.find('table#table-columns-fields-second-view').removeClass('table-for-listview');
                specialSectionInner.find('table#table-columns-fields-second-view').addClass('table-for-soql');

            }
        });

        $(document).on('change', '#special-section-for-second-view select[name="second_salesforce_object"]', function () {
            var selfModal = $(this).parents('.reveal').first();
            var sfObject = $(this).val();
            // cleaning selctor of filter columns and rules already created
            if (sfObject) {
                //Load salesforce views
                listingcmsblock_loadsalesforceview_for_second(selfModal, sfObject, '', 'second_salesforce_view', false, false, true);
            }

        });

    }

    $(document).on('change', '#listing-cms-form .additional-setting-columns select[name="display-as-format"]', function () {
        $('#listing-cms-form .additional-setting-columns').find('input[type="checkbox"]').prop('checked', false);
        ShowHideSpecialColumnSettings('row_custom_column_settings', $('#listing-cms-form .additional-setting-columns select[name="display-as-format"]').val(), true);
        validate_additional_section($('#listing-cms-form'));
    });


    $(document).on('change', '#listing-cms-form .additional-setting-columns input[name="show-currency"]', function () {
        ShowHideCurrencySelector($(this).is(':checked'));
    });

    $(document).on('change', '#listing-cms-form .additional-setting-columns input[name="header-check-link"]', function () {
        ShowHideShowItemsSelected($(this).is(':checked'));
    });

    $(document).on('change', '#listing-cms-form .additional-setting-columns select[name="format-number"]', function () {
        ShowHideDecimalSection($(this).val());
    });

    $(document).on('change', '#listing-cms-form input[name="write-to-salesforce"]', function () {
        var columnisVisible = $('#table-columns-fields tbody tr.selected .switch-visible:checked').length > 0;
        ShowHideWriteToSection($(this).is(':checked'), columnisVisible);
    });

    $(document).on('change', '#listing-cms-form input[name="add-column-filter"]', function () {
        ShowHidePresetFilterValue($(this).is(':checked'));
    });

    $(document).on('click', 'input.checkbox-cell-value.datatable-item-readonly', function () {
        return false;
    });

    $(document).on('change', '#listing-cms-form .additional-setting-columns input[name="clickable-link"]', function () {
        ShowHideCustomLabel($(this).is(':checked'));
    });

    $(document).on('change', '#listing-cms-form select[name="display-dynamic-filter"]', function () {
        var selfModal = $(this).parents('.reveal').first();
        let currentValue = $(this).val();
        if (currentValue != '') {
            selfModal.find('.show-counts-per-filter-section').removeClass('hide-custom');


            let currentPresetOptions = $('.rule_preset-dynamic_filter select[name="dynamic_filter"] option').map(function () {
                return $(this).val();
            }).get();



            let currentPresetAllowed = currentValue;
            let recordDifferences = findArrayDifferences(currentPresetAllowed, currentPresetOptions);

            let optionsToAddArray = recordDifferences.inArr1;
            let optionsToRemoveArray = recordDifferences.inArr2;


            if (optionsToAddArray !== null && optionsToAddArray.length > 0) {
                let optionsToAdd = [];

                $.each(optionsToAddArray, function (index, optionText) {
                    optionsToAdd.push({ value: optionText, text: optionText });
                });

                let optionElementsToAdd = optionsToAdd.map(option => $('<option>', option));
                $('.rule_preset-dynamic_filter select[name="dynamic_filter"]').append(optionElementsToAdd)
                $('.preset-filters-section').show();
            }


            if (optionsToRemoveArray !== null && optionsToRemoveArray.length > 0) {
                let parentElement = $('#listing-cms-form .rule_preset-dynamic_filter select[name="dynamic_filter"]');
                let parentSummaryPresetRules = $('#listing-cms-form .preset-filters-section .preset_filter_rules');
                $.each(optionsToRemoveArray, function (index, optionText) {
                    parentElement.find('option[value="' + optionText + '"]').remove();

                    if (parentSummaryPresetRules !== undefined) {
                        parentSummaryPresetRules.find('.rule.columns[data-field="' + optionText + '"]').each(function () {
                            $(this).remove();
                        });
                    }
                });
            }

            //determine whic options must be added and which ones must be removed
        }
        else {
            selfModal.find('.show-counts-per-filter-section').addClass('hide-custom');
            $('.rule_preset-dynamic_filter select[name="dynamic_filter"]').children().remove();
            $('.preset-filters-section').hide();
        }
    });

    $(document).on('click', '.reveal.listing-cms-block.cms-modal-special-functionality button.close-button.special-close-button,.reveal.listing-cms-block.cms-modal-special-functionality .button.close-modal', function () {

        if (selectDynamiFilterModal != undefined && selectDynamiFilterModal != null) {
            selectDynamiFilterModal.destroy();
            selectDynamiFilterModal = null;
        }

        if ($('button.std-add_rule').length > 0 && $('button.std-add_rule').hasClass('event-applied')) {
            $('button.std-add_rule').removeClass('event-applied');
        }
    });

    $(document).on('click', '#listing-cms-block-conf button.add_preset_filter_rule', function () {
        let add_rule = true;
        var fieldToFilter = $('#listing-cms-form select[name="dynamic_filter"]').val();
        var friendlyFieldName = $('#listing-cms-form select[name="dynamic_filter"] option:selected').text();
        var filter_value = $('#listing-cms-form input[name="preset_filter_value"]').val();

        if (fieldToFilter === null || fieldToFilter === '') {
            var textError = window.translation.please_choose_at_least_a_field;
            add_rule = false;
            var error = '<span class="error missing_field">' + textError + '</span>';
            if ($('#listing-cms-form .rule_preset-dynamic_filter span.error').length > 0) {
                $('#listing-cms-form .rule_preset-dynamic_filter span.error').first().text(textError);
            } else {
                $('#listing-cms-form .rule_preset-dynamic_filter').append(error);
            }
        } else {
            $('.rule_preset-dynamic_filter span.error.missing_field').remove();
        }

        if (filter_value === null || filter_value === '') {
            add_rule = false;
            var textError = window.translation.please_provide_a_value;
            var error = '<span class="error missing_value">' + textError + '</span>';
            if ($('#listing-cms-form .rule_preset-dynamic_filter span.error').length > 0) {
                $('#listing-cms-form .rule_preset-dynamic_filter span.error').first().text(textError);
            } else {
                $('#listing-cms-form .rule_preset-dynamic_filter').append(error);
            }
        } else {
            $('.rule_preset-dynamic_filter span.error.missing_value').remove();
        }
        if (add_rule === true) {
            addRulePresetFilter(fieldToFilter, fieldToFilter, filter_value);
        }
        return false;
    });
    listingcmsblock_detect_form_change();
    listingcmsblock_logic_related_with_facets();
    validateTabTitleListingCMS();
}

function validateTabTitleListingCMS() {
    $("#listing_title_tabs_labels li.tabs-title").on("click", function () {
        let currentLanguage = $(this).find("a").attr("data-language-id");
        $('#listing_title_tabs_labels li.tabs-title a').attr('aria-selected', 'false');
        $(this).attr('aria-selected', 'true');
        $(this).parents("#listing-cms-form").find(".tabs-panel").not('[data-language-id="' + currentLanguage + '"]').removeClass("is-active");
        $(this).parents("#listing-cms-form").find('.tabs-panel[data-language-id="' + currentLanguage + '"]').addClass("is-active");
    });

}

function retrieveFieldsFromSOQL(queryInfo, valueToPopulate, selfModal) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var objectName = getObjectNameFromQuery(queryInfo);
    var isGlobaluser = $('#is-global-user').val() == 'true';
    $.ajax({
        url: urlSite + "admin/GetFieldsFromSOQLQuery",
        method: 'POST',
        data: { soqlquery: queryInfo, objectName: objectName }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.code === 200) {
            if (jsonResult.fields !== null && jsonResult.fields !== undefined && jsonResult.fields.length > 0) {

                $('#listing-cms-block-conf select[name="search-auto-suggest-field"]').empty();
                var options = '';
                var optionsFilters = '';
                var optionsFiltersWithDates = '<option value="" >' + window.translation.select + '</option>';
                jsonResult.fields.forEach(function (value, index) {
                    if (value !== undefined && value !== null) {
                        options += '<option value="' + value.field + '">' + value.field + '</option>';
                        if (value.type == 'multipicklist' || value.type == 'picklist' ) {
                            optionsFilters += '<option value="' + value.field + '" data-type="' + value.type + '" >' + value.field + '</option>';
                        }
                        if (value.type == 'multipicklist' || value.type == 'picklist') {
                            optionsFiltersWithDates += '<option value="' + value.field + '" data-type="' + value.type + '" >' + value.field + '</option>';
                        }
                        if (value.type == 'datetime' || value.type == 'date') {
                            optionsFiltersWithDates += '<option value="' + value.field + '" data-type="' + value.type + '" >' + value.field +  '</option>';
                        }
                    }
                });
                listingcmsblock_load_and_set_dynamic_filter(selfModal, optionsFilters, optionsFiltersWithDates);
                $('#listing-cms-block-conf select[name="search-auto-suggest-field"]').append(options);
                if (valueToPopulate !== null && valueToPopulate !== undefined && valueToPopulate !== '')
                    $('#listing-cms-block-conf select[name="search-auto-suggest-field"]').val(valueToPopulate);
            }
        } else {
            Swal.fire({
                title: "",
                icon: "error",
                text: "Error retrieving columns",
                confirmButtonText: "Ok"
            });
        }
    });
}

function getObjectNameFromQuery(queryInfo) {
    var objectToFind = null;
    if (queryInfo && queryInfo.toLowerCase().indexOf(' from ') != -1) {
        queryInfo = queryInfo.replaceAll('\n', ' ');
        queryInfo = queryInfo.replaceAll('\t', ' ');
        queryInfo = queryInfo.replaceAll('\r', ' ');
        var objectToFindTokens = queryInfo.toLocaleLowerCase().substr(queryInfo.toLowerCase().indexOf(' from ')).split(' ');
        var objectToFind = null;
        objectToFindTokens.forEach(function (item) {
            if (item && item != '' && item != 'from' && item != null && objectToFind == null) {
                objectToFind = item;
            }
        });
    }
    return objectToFind;
}

function setSecondObjectFromSOQLQuery(queryInfo, modal) {
    if (queryInfo && queryInfo.toLocaleLowerCase().indexOf(' from ') != -1) {
        let objectToFind = getObjectNameFromQuery(queryInfo);
        $('#listing-cms-block-conf input[name="salesforce_object_filter"]').val(objectToFind).trigger('change');
        var displayFormat = modal.find('select[name="second-display-format"]').val();
        var className = listingcmsblock_get_fields_settings_class_name(displayFormat, true);
        var storage = listingcmsblock_get_fields_settings_storage_name(className);
        let cobj = {};
        cobj.columns = [];
        var  columnSettings = JSON.stringify(cobj);
        sessionStorage.setItem(storage, columnSettings);
    }
}

function setObjectFromSOQLQuery(queryInfo, valueAutoSuggestField, modal) {
    if (queryInfo && queryInfo.toLowerCase().indexOf('from') != -1) {
        var objectToFind = getObjectNameFromQuery(queryInfo);
        $('#listing-cms-block-conf input[name="salesforce_object_filter"]').val(objectToFind).trigger('change');
        let valueForSelect = getCurrentValueForSelect($('#listing-cms-block-conf select[name="salesforce_object"]'), objectToFind);
        $('#listing-cms-block-conf select[name="salesforce_object"]').val(valueForSelect);
        retrieveFieldsFromSOQL(queryInfo, valueAutoSuggestField, modal);
    }
}

function ShowHideAutoSuggetsField() {
    let selfModal = $('#listing-cms-block-conf');
    let displaySearchSection = (selfModal.find('input[name="display-search-section"]').is(':checked')) ? true : false;
    let source = selfModal.find('select[name="source"]').val();
    let displayFormat = selfModal.find('select[name="display-format"]').val();
    if ((source == 1 || source == 2) && displaySearchSection == true && (displayFormat == 0 || displayFormat == 1 || displayFormat == 3 || displayFormat == 4)) {
        selfModal.find('.colum-search-auto-suggest-fields').removeClass('hide-custom');
    } else {
        selfModal.find('.colum-search-auto-suggest-fields').addClass('hide-custom');
    }
}

function SetClassForSettingTable(displayFormat, selfModal) {
    if (displayFormat == '5') {
        selfModal.find('#table-columns-fields tbody').addClass('for-calendar');
        selfModal.find('#table-columns-fields thead').addClass('for-calendar');
    }
    else {
        selfModal.find('#table-columns-fields tbody').removeClass('for-calendar');
        selfModal.find('#table-columns-fields thead').removeClass('for-calendar');
    }
}

function ShowHideWriteToSection(isActive, itemIsVisible) {

    $('.write-to-salesforce-section-hidden-to-write').addClass('hide-custom');
    $('.write-to-salesforce-section-visible-to-write').addClass('hide-custom');
    if (isActive) {
        $('.map-fields-to-write-section').removeClass('hide-custom');
        if (!itemIsVisible) {
            $('.write-to-salesforce-section-hidden-to-write').removeClass('hide-custom');
        }
        else {
            $('.write-to-salesforce-section-visible-to-write').removeClass('hide-custom');
        }
    }
    else {
        $('.map-fields-to-write-section').addClass('hide-custom');
    }
}

function ShowHidePresetFilterValue(isActive) {
    if (isActive) {
        $('.additional-setting-columns.column_filter_preset_val').removeClass('hide-custom');
    }
    else {
        $('.additional-setting-columns.column_filter_preset_val').addClass('hide-custom');
    }
}

function ShowHideCurrencySelector(isActive) {
    if (isActive) {
        $('.additional-setting-columns.currency_field').removeClass('hide-custom');
    }
    else {
        $('.additional-setting-columns.currency_field').addClass('hide-custom');
    }
}

function ShowHideShowItemsSelected(isActive) {
    if (isActive) {
        $('.additional-setting-columns.show-items-selected').removeClass('hide-custom');
    }
    else {
        $('.additional-setting-columns.show-items-selected').addClass('hide-custom');
    }
}

function ShowHideDecimalSection(value) {
    if (value == '' || value == null) {
        $('.additional-setting-columns.decimals_field').removeClass('hide-custom');
    }
    else {
        $('.additional-setting-columns.decimals_field').addClass('hide-custom');
    }
}

function ShowHideCustomLabel(isActive) {
    if (isActive) {
        $('.additional-setting-columns.custom_text_field').removeClass('hide-custom');
    }
    else {
        $('.additional-setting-columns.custom_text_field').addClass('hide-custom');
    }
}

function isvalid_column_numvers(formSelf){
    var result = true;
    var visibleColumns = formSelf.find('#table-columns-fields tbody input.switch-visible:checked').length;
    var maximum_columns = 15;
    var is_maximum_columns_30 = (formSelf.find('input[name="is-allow-display-more-than-15-columns"]').is(':checked')) ? true : false;
    if(is_maximum_columns_30){
        maximum_columns = 30;
    }
    if (visibleColumns > maximum_columns) {
        result = false;
        Swal.fire({
            title: "",
            icon: "warning",
            text: window.translation.maximum_columns,
            confirmButtonText: "Ok"
        });
    }
    return result;
}

function ProcessSubmitModal(editor, isSubmit) {
    var formSelf = $("#listing-cms-form");
    var self = $('#listing-cms-block-conf');
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if (self.find('button.save_field').hasClass('pending_changes')) {
        Swal.fire({
            title: "Error",
            icon: "error",
            text: "There is a Column with pending changes to save",
            confirmButtonText: "Ok"
        });
        return false;
    }

    if (!validate_url_fields_backend('#listing-cms-block-conf', 'input[name="listingcms_visible_to"]', 'textarea[name="visibility_urls"]'))
        return false;


    for (var i in CKEDITOR.instances) {
        if (CKEDITOR.instances[i].name.indexOf("no-results") != -1) {
            $("#" + CKEDITOR.instances[i].name).text(escape(CKEDITOR.instances[i].getData()));
        }
        if (CKEDITOR.instances[i].name.indexOf("pre-content") != -1) {
            $("#" + CKEDITOR.instances[i].name).text(escape(CKEDITOR.instances[i].getData()));
        }
    }

    $("#listing-cms-form select[disabled='disabled']").addClass('previousDisabled');
    $("#listing-cms-form select[disabled='disabled']").removeAttr('disabled');

    var formData = $("#listing-cms-form").serializeObject();
    $("#listing-cms-form select.previousDisabled").attr('disabled', 'disabled');
    $("#listing-cms-form select.previousDisabled").removeClass('previousDisabled');

    var displayFormat = self.find('select[name="display-format"]').val();
    formData['facets-configuration'] = JSON.stringify(listingcmsblock_read_facets_information());
    var stylesCustom = editor.getValue().toString();

    if (displayFormat == '4' || displayFormat == '5') {
        if(!isvalid_column_numvers(formSelf)){
            return false;
        }
        if (self.find('#table-columns-fields tbody tr td.cell-name').length == 0) {
            Swal.fire({
                title: window.translation.missing_configuration,
                icon: "error",
                html: window.translation.is_needed_define_column,
                confirmButtonText: "Ok",
            });
            return false;
        }
    }

    if ($('#listing-cms-form').find('input[name="enable-secondary-listview"]').is(':checked')) {
        //verify the options of the second view
        var salesforceSObject = $('#listing-cms-form').find('select[name="second_salesforce_object"]').val();
        var salesforceSListView = $('#listing-cms-form').find('select[name="second_salesforce_view"]').val();
        var displaySFormat = $('#listing-cms-form').find('select[name="second-display-format"]').val();
        var fieldToCompare = $('#listing-cms-form').find('input[name="second-field-to-compare"]').val();
        var secondSource = $('#listing-cms-form').find('select[name="second_view_source"]').val();
        //var filtersS = $('#listing-cms-form').find('textarea[name="second-filter-view"]').val();
        if ($('#listing-cms-form .second_filter_rules .rule').length > 0) {
            var ruleList = [];
            var filterRules = {
                criteria: currentCriteria,
                filters: []
            }
            $('#listing-cms-form .second_filter_rules .rule').each(function (index) {
                var rule = $(this);
                var field = rule.data('field');
                var operator = rule.data('operator');
                var ruleValue = rule.data('value');
                var typeField = rule.data('type')
                var friendlyField = rule.find('.field_rule').first().text();
                ruleList.push({
                    fieldId: index + 1,
                    field: field,
                    typeField: typeField,
                    operator: operator,
                    comparisonValue: ruleValue,
                    friendlyFieldName: friendlyField,
                });
            });
            filterRules.filters = ruleList;
            formData['second-filter-view'] = JSON.stringify(filterRules);


        }

        var errorMessage = '';
        if (salesforceSObject === null || salesforceSObject === undefined || salesforceSObject === '') {
            errorMessage += 'Salesforce Object (Setting for Secondary ListView) can not empty<br/>';
        }
        if (secondSource == 0 || secondSource == '0') {
            if (salesforceSListView === null || salesforceSListView === undefined || salesforceSListView === '') {
                errorMessage += 'Salesforce View (Setting for Secondary ListView) can not empty<br/>';
            }

        }

        if (displaySFormat === null || displaySFormat === undefined || displaySFormat === '') {
            errorMessage += 'Display Format (Setting for Secondary ListView) can not empty<br/>';
        }

        if (fieldToCompare === null || fieldToCompare === undefined || fieldToCompare === '') {
            errorMessage += 'Field To Compare (Setting for Secondary ListView) can not empty<br/>';
        }


        if (errorMessage !== '') {
            Swal.fire({
                title: "Error",
                icon: "error",
                html: errorMessage,
                confirmButtonText: "Ok"
            });
            return false;
        }

        //Additional fields
        if (displaySFormat == '4') {
            formData['second-view-column-settings'] = sessionStorage.getItem('second-view-column-settings-listing');
        }
    }

    //Assign stylesCustom
    formData['styles-custom'] = stylesCustom;
    if (displayFormat == '4') {
        formData['column-settings'] = sessionStorage.getItem('column-settings-listing');
    }
    else if (displayFormat == '5') {
        formData['calendar-settings'] = sessionStorage.getItem('calendar-listing-data-settings');
    }
    var currentCriteria = null;
    if (self.find('input[name="advanced-criteria-input"]').val() !== '') {
        currentCriteria = self.find('input[name="advanced-criteria-input"]').val();
        if (currentCriteria !== undefined && currentCriteria !== null)
            currentCriteria = currentCriteria.toLocaleLowerCase().replaceAll(' ', '');
    }
    name = "advanced-criteria-input"
    if ($('#listing-cms-form .filter_rules .rule').length > 0) {
        var ruleList = [];
        var filterRules = {
            criteria: currentCriteria,
            filters: []
        }
        $('#listing-cms-form .filter_rules .rule').each(function (index) {
            var rule = $(this);
            var field = rule.data('field');
            var operator = rule.data('operator');
            var ruleValue = rule.data('value');
            var typeField = rule.data('type')
            var friendlyField = rule.find('.field_rule').first().text();
            ruleList.push({
                fieldId: index + 1,
                field: field,
                typeField: typeField,
                operator: operator,
                comparisonValue: ruleValue,
                friendlyFieldName: friendlyField,
            });
        });
        filterRules.filters = ruleList;
        formData['custom_filters'] = JSON.stringify(filterRules);
    } else {
        formData['custom_filters'] = '';
    }

    if ($('#listing-cms-form .preset_filter_rules .rule').length > 0) {
        var presetRuleList = [];

        $('#listing-cms-form .preset_filter_rules .rule').each(function (index) {
            var rule = $(this);
            var field = rule.data('field');
            var operator = rule.data('operator');
            var ruleValue = rule.data('value');
            var friendlyField = rule.find('.field_rule').first().text();
            presetRuleList.push({
                field: field,
                comparisonValue: ruleValue,
            });
        });
        formData['preset_filters'] = JSON.stringify(presetRuleList);
    } else {
        formData['preset_filters'] = '';
    }

    formData['authorization_settings'] = JSON.stringify(getAuthorizedForBlock('#listing-cms-block-conf'));

    if ($("#listing-cms-form").valid()) {
        if ($('#listing-cms-form .settings-builder-form-clone').length > 0) {
            if ($('#listing-cms-form .settings-builder-form-clone').is(':visible')) {
                if ($('#listing-cms-form .settings-builder-form-clone input[name="listing-include-gallery"]').is(':checked')) {
                    var elementReveal = 'gallery-select-configuration';
                    $('#' + elementReveal).find('input[name="modal-source"]').val('listing-cms-block-conf');
                    $('#' + elementReveal).find('a.select-gallery-button').on('click', function () {
                        var source = $('#' + elementReveal).find('input[name="modal-source"]').val();
                        if (source !== null && source !== undefined && source != '') {
                            var selectedValue = $('#' + elementReveal).find('select[name="form-select-gallery"]').val();
                            if (selectedValue === 'Select One') {
                                Swal.fire({
                                    title: "Error",
                                    icon: "error",
                                    text: "Please select a Gallery",
                                    confirmButtonText: "Ok"
                                });

                            } else {
                                var helpValue = $('#' + elementReveal).find('textarea[name="form-help-text"]').val();

                                if (helpValue != null && helpValue != undefined && helpValue.trim() != '') {
                                    $('#' + source).find('input[name="listing-select-gallery"]').val(selectedValue);
                                    $('#' + source).find('input[name="listing-help-text"]').val(helpValue);
                                    $('#' + elementReveal).foundation('close');
                                    formData["listing-select-gallery"] = selectedValue;
                                    formData["listing-help-text"] = helpValue;
                                    if (isSubmit) {
                                        listingcmsblock_save_logic(formData, urlSite, self);
                                    }
                                    else {
                                        listingcmsblock_get_preliminary_query(formData, urlSite, self);
                                    }

                                } else {
                                    Swal.fire({
                                        title: "Error",
                                        icon: "error",
                                        text: "Please fill the reason to store into the gallery",
                                        confirmButtonText: "Ok"
                                    });

                                }
                            }


                        }
                    });
                    $('#' + elementReveal).foundation('open');
                    $('#' + elementReveal).foundation();

                } else {
                    if (isSubmit) {
                        listingcmsblock_save_logic(formData, urlSite, self);
                    }
                    else {
                        listingcmsblock_get_preliminary_query(formData, urlSite, self);
                    }
                }
            } else {
                if (isSubmit) {
                    listingcmsblock_save_logic(formData, urlSite, self);
                }
                else {
                    listingcmsblock_get_preliminary_query(formData, urlSite, self);
                }
            }
        } else {
            if (isSubmit) {
                listingcmsblock_save_logic(formData, urlSite, self);
            }
            else {
                listingcmsblock_get_preliminary_query(formData, urlSite, self);
            }
        }


    }
}

function handleSettingsForSoql(selfModal, displayFormat) {

    $('#listing-cms-form').addClass('soql-selected');
    selfModal.find('.soql_query_section').removeClass('hide-custom');
    selfModal.find('select[name="source"]').addClass('soql-selected');
    //selfModal.find('#special-section-for-second-view').find('input[name="enable-secondary-listview"]').prop('checked', false);

    var isGlobaluser = $('#is-global-user').val() == 'true';
    //Add option card custom to select 'display-format' if not have the option
    if (selfModal.find('select[name="display-format"]').find('option[value="3"]').length === 0) {
        var optionCardCustom = '<option value="3">' + window.translation.custom_card_template + '</option>';
        selfModal.find('select[name="display-format"]').append(optionCardCustom);
    }

    //Add option datatable to select 'display-format' if not have the option
    if (selfModal.find('select[name="display-format"]').find('option[value="4"]').length === 0) {
        var optionDatatable = '<option value="4">' + window.translation.datatable + '</option>';
        selfModal.find('select[name="display-format"]').append(optionDatatable);
    }

    //Add option calendar to select 'display-format' if not have the option
    if (selfModal.find('select[name="display-format"]').find('option[value="5"]').length === 0) {
        var optionCalendar = '<option value="5">' + window.translation.calendar + '</option>';
        selfModal.find('select[name="display-format"]').append(optionCalendar);
    }

    //Add option Map to select 'display-format' if not have the option
    if (selfModal.find('select[name="display-format"]').find('option[value="6"]').length === 0) {
        var optionMap = '<option value="6">' + window.translation.only_map + '</option>';
        selfModal.find('select[name="display-format"]').append(optionMap);
    }

    //Add option "Comments Timeline" to select 'display-format' if not have the option
    if (selfModal.find('select[name="display-format"]').find('option[value="7"]').length === 0 && (isGlobaluser || IS_LLAMAPI_ENABLED)) {
        var optionComment = '<option value="7">' + window.translation.comments + (!IS_LLAMAPI_ENABLED ? ' ' + getGlobalRestrictedText() : '') + '</option>';
        selfModal.find('select[name="display-format"]').append(optionComment);
    }

    //Add option Bar Chart to select 'display-format' if not have the option
    if (selfModal.find('select[name="display-format"]').find('option[value="8"]').length === 0) {
        var optionBar = '<option value="8">' + window.translation.bar_chart + '</option>';
        selfModal.find('select[name="display-format"]').append(optionBar);
    }

    //Add option Column Chart to select 'display-format' if not have the option
    if (selfModal.find('select[name="display-format"]').find('option[value="9"]').length === 0) {
        var optionChart = '<option value="9">' + window.translation.column_chart + '</option>';
        selfModal.find('select[name="display-format"]').append(optionChart);
    }

    //Add option Pie Chart to select 'display-format' if not have the option
    if (selfModal.find('select[name="display-format"]').find('option[value="10"]').length === 0) {
        var optionPie = '<option value="10">' + window.translation.pie_chart + '</option>';
        selfModal.find('select[name="display-format"]').append(optionPie);
    }

    //Add option Pie Chart to select 'display-format' if not have the option
    if (selfModal.find('select[name="display-format"]').find('option[value="11"]').length === 0) {
        var optionDonut = '<option value="11">' + window.translation.donut_chart + '</option>';
        selfModal.find('select[name="display-format"]').append(optionDonut);
    }

    if (selfModal.find('select[name="display-format"]').find('option[value="12"]').length === 0) {
        var optionRssFeed = '<option value="12">' + window.translation.rss_feed + '</option>';
        selfModal.find('select[name="display-format"]').append(optionRssFeed);
    }

    HideShowSections();

}

function listingcmsblock_actions_cache_results_listview(enabled) {
    if (enabled) {
        $('.list_view_cache').removeClass('hide-custom');
    }
    else {
        $('.list_view_cache').addClass('hide-custom');
    }
}

function listingcmsblock_actions_local_listview(enabled) {
    if (enabled) {
        $('.list_view_deleted').removeClass('hide-custom');
        $('select[name="salesforce_view"]').attr('disabled', 'disabled');
        $('select[name="salesforce_object"]').attr('disabled', 'disabled');
        $('select[name="source"]').attr('disabled', 'disabled');
        $('a.link-refresh-sobjects-llamapi').addClass('hide-custom');
        $('input[name="listing-use-local-copy"]').val('true');
    }
    else {
        $('.list_view_deleted').addClass('hide-custom');
        $('select[name="salesforce_view"]').removeAttr('disabled');
        $('select[name="salesforce_object"]').removeAttr('disabled');
        $('select[name="source"]').removeAttr('disabled');
        $('a.link-refresh-sobjects-llamapi').removeClass('hide-custom');
        $('input[name="listing-use-local-copy"]').val('false');
    }
}

function listingcmsblock_add_option_custom_field(fieldName, modal) {

    modal.find('select[name="calendar-event-title"]').append('<option name="' + fieldName + '">' + fieldName + '</option>');

}

function listingcmsblock_remove_option_custom_field(fieldName, modal) {

    modal.find('select[name="calendar-event-title"] option').each(function () {
        if ($(this).val() == fieldName) {
            $(this).remove();
            return;
        }
    });

}


function listingcmsblock_get_preliminary_query(formData, urlSite, self) {
    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetViewModeQueryForListingCMS",
        data: formData,
        beforeSend: function () {
            self.find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status === 'ok') {

            Swal.fire({
                title: window.translation.soql_query,
                html: '<div id="preliminary-query">' + jsonResult.Query + '</div>' +
                    "<br>"
                    +
                    '<button type="button" role="button" tabindex="0" class="swal2-confirm swal2-styled copySwalCustom">' + window.translation.copy + '</button>' +
                    '<button type="button" role="button" tabindex="0" class="swal2-cancel swal2-styled closeSwalCustom">' + window.translation.close + '</button>'
                ,
                showCancelButton: false,
                showConfirmButton: false,
                icon: 'info',
                closeOnConfirm: true
            }).then(function (result) {
                self.find('.processing_screen').hide();
            });

        }
        else {
            Swal.fire({
                title: window.translation.error,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });

        }

        self.find('.processing_screen').hide();

        return false;
    });

}
function copyDivToClipboard() {
    var range = document.createRange();
    range.selectNode(document.getElementById("preliminary-query"));
    window.getSelection().removeAllRanges(); // clear current selection
    window.getSelection().addRange(range); // to select text
    document.execCommand("copy");
    window.getSelection().removeAllRanges();// to deselect
}
function copyDivToClipboardFeedURL() {
    var range = document.createRange();
    range.selectNode(document.getElementById("feed-url"));
    window.getSelection().removeAllRanges(); // clear current selection
    window.getSelection().addRange(range); // to select text
    document.execCommand("copy");
    window.getSelection().removeAllRanges();// to deselect
}
function listingcmsblock_save_logic(formData, urlSite, self) {
    $.ajax({
        method: "POST",
        url: urlSite + "admin/AddOrUpdateListingCMSBlock",
        data: formData,
        beforeSend: function () {
            if ($('body').hasClass('new-cms-admin-page')) {
                displayWaitModal();
            } else
                self.find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status === 'ok') {

            Swal.fire({
                title: window.translation.success,
                text: window.translation.listing_cms_saved_successfully,
                icon: 'success',
                closeOnConfirm: true
            }).then(function (result) {
                self.find('.processing_screen').show();
                if ($('body').hasClass('new-cms-admin-page')) {
                    displayWaitModal();
                    let returnUrl = urlSite + 'BlockAdminCMS/ListingCMSs';
                    let returnRedirect = self.find('input[name="returnRedirect"]').val();
                    if (returnRedirect !== null && returnRedirect !== undefined && returnRedirect !== '')
                        returnUrl = returnRedirect;
                    window.location.href = returnUrl;
                } else {
                    window.location.reload();
                }
            });

        }
        else {
            Swal.fire({
                title: window.translation.error,
                text: jsonResult.message,
                icon: "error",
                closeOnConfirm: true
            });

        }

        self.find('.processing_screen').hide();

        return false;
    });

}

function listingcmsblock_remove_custom_column(fieldName, className, tableId, container) {
    if (fieldName != null && fieldName != undefined && fieldName != '') {
        var newJsonSettings = new Object();
        newJsonSettings.columns = new Array();

        let storage = listingcmsblock_get_fields_settings_storage_name(className);
        var columnSettings = sessionStorage.getItem(storage);
        var jsonSettings = JSON.parse(columnSettings);
        if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length >= 0) {
            jsonSettings.columns.forEach(function (item) {
                var newItem = Object();
                newItem = item;

                if (!(item.name == fieldName && item.type == 'custom')) {

                    newJsonSettings.columns.push(newItem);
                }
            });
            listingcmsblock_load_column_settings(JSON.stringify(newJsonSettings), className, false, tableId, container);
        }
    }
}

function listingcmsblock_add_custom_column(tableId, container, isSecondView) {
    var tableSelector = '#' + tableId;
    var totalCustomVal = $(tableSelector + ' tr.custom-colum').length;

    $("tr.custom-colum").each(function () {
        var value = $(this).attr("data-field");
        var tempCustomVal = parseInt(value.replace('Custom', ''));
        totalCustomVal = totalCustomVal < tempCustomVal ? tempCustomVal : totalCustomVal;
    });

    var columnName = "Custom" + (totalCustomVal + 1);
    var jsonLabelList = new Array();
    var newItem = Object();
    newItem.name = columnName;
    newItem.defaultLabel = '-';
    newItem.type = 'custom';
    newItem.visible = false;
    newItem.exportable = false;
    newItem.defaultSort = false;
    newItem.sort = 0;
    newItem.label = jsonLabelList;
    newItem.content = '';


    var selfModal = null;

    if (is_new_cms_active())
        selfModal = $('#listing-cms-form');
    else
        selfModal= $(tableSelector).closest('.reveal').first();
    var displayFormat = selfModal.find('select[name="display-format"]').val();
    if (isSecondView === true)
        displayFormat = selfModal.find('select[name="second-display-format"]').val();
    var className = listingcmsblock_get_fields_settings_class_name(displayFormat, isSecondView);
    listingcmsblock_update_add_setting(newItem, className, tableId, container);

    if (displayFormat == '5') {
        listingcmsblock_add_option_custom_field(columnName, selfModal);
    }
    selfModal.find('input[name="pending-changes"]').val(true);

}

function listingcmsblock_search_table(searchValue, blockId) {

    if (searchValue != null && searchValue != undefined) {
        var idTable = 'dataTable' + blockId;
        var datatable_listing = $("#" + idTable).dataTable().api();
        datatable_listing.search(searchValue).draw();
    }

}

function GetAdvancedFilterObject(self) {
    var FilterObject = [];
    if (self.find('input[type="text"].facet-range-from').length > 0) {
        self.find('input[type="text"].facet-range-from').each(function () {

            var listingCMS = $(this).attr('data-listing-cms-id');
            var fieldName = $(this).attr('data-field-name');
            var facetId = $(this).attr('data-facet-id');
            var currentValue = $(this).val();
            var relatedElement = $('#facet-to' + listingCMS + '-' + facetId);
            var valueRelated = relatedElement.val();
            
            var currentTicks = getTicks(currentValue, window.MomentDateFormat, true);
            var relatedTicks = getTicks(valueRelated, window.MomentDateFormat, false); 
            if (currentTicks != null && relatedTicks != null) {
                if (FilterObject.map(object => object.Field).indexOf($(this).data('field-name')) == -1) {
                    var filterItem = {};
                    var currentSelect = $(this);
                    filterItem.Type = 'date-range';
                    filterItem.Field = $(this).data('field-name');
                    filterItem.Values = [];
                    filterItem.Range = currentTicks + '%' + relatedTicks;
                    FilterObject.push(filterItem);
                }
                else {
                    var indexObject = FilterObject.map(object => object.Field).indexOf($(this).data('field-name'));
                    FilterObject[indexObject].Range = currentTicks + '%' + relatedTicks;
                }
            }

        });
    }
    if (self.find('input[type="checkbox"].facet-listing-option').length > 0) {
        self.find('input[type="checkbox"].facet-listing-option').each(function () {
            if ($(this).prop('checked')) {

                if (FilterObject.map(object => object.Field).indexOf($(this).data('field-name')) == -1) {
                    var filterItem = {};
                    var currentSelect = $(this);
                    filterItem.Type = currentSelect.data('field-type');
                    filterItem.Field = $(this).data('field-name');
                    filterItem.Values = [];
                    filterItem.Values.push($(this).val());
                    filterItem.Values.push($(this).data("value-translation"));
                    FilterObject.push(filterItem);
                }
                else {
                    var indexObject = FilterObject.map(object => object.Field).indexOf($(this).data('field-name'));
                    FilterObject[indexObject].Values.push($(this).val());
                    FilterObject[indexObject].Values.push($(this).data("value-translation"));
                }

            }
        });
    }
    if (self.find('select.listing-dynamic-filters').length > 0) {
        self.find('select.listing-dynamic-filters').each(function () {
            var filterItem = {};
            var currentSelect = $(this);
            filterItem.Type = currentSelect.data('field-type');
            filterItem.Field = currentSelect.data('field-id');
            filterItem.Values = currentSelect.val();
            if (filterItem.Values.length > 0) {
                let valueTranslation = $(this).find('option:selected').map(function () {
                    return $(this).data('value-translation'); // Replace 'yourAttribute' with the actual data attribute name
                }).get();
                if (valueTranslation.length > 0) {
                    filterItem.Values = filterItem.Values.concat(valueTranslation)
                }
                FilterObject.push(filterItem);
            }
        });
    }
    return FilterObject;
}

function listingcms_behaviors() {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $(document).on('change', 'select.listing-dynamic-filters', function () {
        var self = $(this).parents('.listingcmsblock').first();
        var listingcmsId = self.find('input[name="listingcmsid"]').val();
        var currentFormat = self.find('input[name="listingFormat"]').val();
        var keyStorageFilters = 'userfilters-' + $(this).prop("name");

        let keepUserFiltersItem = self.find('input[name="keepUserFilters"]');
        let keepUserFiltersValue = '';

        if (keepUserFiltersItem !== null && keepUserFiltersItem !== undefined)
            keepUserFiltersValue = keepUserFiltersItem.val();

        var keepUserFilters = (keepUserFiltersValue === "true") ? true : false;
        var currentUserFilters = ''
        if (keepUserFilters) {

            currentUserFilters = $(this).val();
            localStorage.setItem(keyStorageFilters, currentUserFilters)
        }

        if (currentFormat == 'CARD' || currentFormat == 'GRID') {
            var FilterObject = GetAdvancedFilterObject(self);
            listingcmsblock_dynamic_filters_perform_search(self, FilterObject);
        }
        else {
            var idTable = '#dataTable' + listingcmsId;
            var datatable = $(idTable).DataTable();
            datatable.draw();
        }
    });

    $(document).on('change', 'input[type="checkbox"].facet-listing-option', function () {
        var self = $(this).parents('.listingcmsblock').first();
        /*var facetDiv = $(this).parent().parent().parent().parent();*/
        var facetDiv = $(this).closest('.fieldset-step ');
        var listingcmsId = self.find('input[name="listingcmsid"]').val();
        var checkboxId = $(this).prop("id")
        var keyStorageFacets = 'userfacets-' + listingcmsId;

        let keepUserFiltersItem = self.find('input[name="keepUserFilters"]');
        let keepUserFiltersValue = '';

        if (keepUserFiltersItem !== null && keepUserFiltersItem !== undefined)
            keepUserFiltersValue = keepUserFiltersItem.val();

        var keepUserFilters = (keepUserFiltersValue === "true") ? true : false;
        var currentUserFacets = ''
        if (keepUserFilters) {
            // store new id in object
            var data = localStorage.getItem(keyStorageFacets);
            if (data !== undefined && data !== null && data !== '') {
                currentUserFacets = data;
            }

            if ($(this).is(':checked')) {
                currentUserFacets += checkboxId + ',';
            } else {
                currentUserFacets = currentUserFacets.replaceAll((checkboxId + ','), '')
            }

            localStorage.setItem(keyStorageFacets, currentUserFacets)

        }

        if (facetDiv.find('input[type="checkbox"].facet-listing-option:checked').length > 0) {
            facetDiv.find('.clear-facets').removeClass('hide-custom');
        }
        else {
            facetDiv.find('.clear-facets').addClass('hide-custom');
        }

        var currentFormat = self.find('input[name="listingFormat"]').val();
        if (currentFormat == 'CARD' || currentFormat == 'GRID') {
            var FilterObject = GetAdvancedFilterObject(self);
            listingcmsblock_dynamic_filters_perform_search(self, FilterObject);
        }
        else {
            var idTable = '#dataTable' + listingcmsId;
            var datatable = $(idTable).DataTable();
            datatable.draw();
        }
    });
    $(document).on('click', '.fieldset-step a.clear-facets', function () {
        /*var facetDiv = $(this).parent().parent().parent();*/
        var facetDiv = $(this).closest('.fieldset-step ');
        if (facetDiv.find('input.facet-range-input').length > 0) {
            facetDiv.find('input.facet-range-input').val('');
            facetDiv.find('input.facet-range-input').trigger('change');;
        }
        else {
            facetDiv.find('input[type="checkbox"].facet-listing-option:checked').trigger('click');
        }
        $(this).addClass('hide-custom');
    });
    $(document).on('click', '.listingcmsblock .search-section button.button', function () {
        var self = $(this).parents('.listingcmsblock').first();
        var source = self.find('input[name="source"]').val();
        var format = self.find('input[name="listingFormat"]').val();
        var searchValue = self.find('.search-section input[type="text"]').val();
        var isListingEmpty = self.find('.pages').find('.empty-item').length > 0;
        var listingcmsId = self.find('input[name="listingcmsid"]').val();
        if (!isListingEmpty) {
            if (source === 'SALESFORCE' || source === 'SOQL') {
                if (format === 'DATATABLE') {
                    listingcmsblock_search_table(searchValue, listingcmsId);
                }
                else {
                    listingcmsblock_search_salesforce(self, searchValue);
                }
            }
            else {
                listingcmsblock_search_functionality($(this));
            }
        }

        return false;
    });
    $(document).on('keypress', '.listingcmsblock .search-section input[type="text"]', function (e) {
        var key = e.which;
        var self = $(this).parents('.listingcmsblock').first();
        var source = self.find('input[name="source"]').val();
        var format = self.find('input[name="listingFormat"]').val();
        var blockId = self.find('input[name="listingcmsid"]').val();
        var isListingEmpty = self.find('.pages').find('.empty-item').length > 0;

        if (key == 13 && !isListingEmpty)  // the enter key code
        {
            if (source === 'SALESFORCE' || source === 'SOQL') {
                if (format === 'DATATABLE') {
                    listingcmsblock_search_table($(this).val(), blockId);
                }
                else {
                    listingcmsblock_search_salesforce(self, $(this).val());
                }
            }
            else {
                listingcmsblock_search_functionality($(this));
            }
        }
    });
    $(document).on('click', '.listingcmsblock .paging ul li a', function () {
        var selfLi = $(this).parent();
        var self = $(this).parents('.listingcmsblock').first();
        var classParent = selfLi.attr('class');
        var pageNumber = selfLi.find('a').attr('data-number-page');
        var searchText = self.find('.search-section input').val();
        var pageCategory = self.find('input[name="pageCategory"]').val();
        var includeSubcategories = self.find('input[name="includeSubCategories"]').val();
        var listingFormat = self.find('input[name="listingFormat"]').val();
        var itemsPerPage = self.find('input[name="itemsPerPage"]').val();
        var totalItems = self.find('input[name="totalItems"]').val();
        var displayPaging = self.find('input[name="displayPaging"]').val();
        var displayRoundImage = self.find('input[name="displayRoundImage"]').val();
        var displayReadMore = self.find('input[name="displayReadMore"]').val();
        var displaySummary = self.find('input[name="displaySummary"]').val();
        var classReadMore = self.find('input[name="classButtonReadMore"]').val();
        var readMoreText = self.find('input[name="readMoreText"]').val();
        var order = self.find('input[name="order"]').val();
        var ishidecreatedDate = self.find('input[name="ishidecreatedDate"]').val() == 'True';
        var listingcmsId = self.find('input[name="listingcmsid"]').val();
        var sortDirection = self.find('input[name="SortDirection-' + listingcmsId + '"]').val();

        //Validation when exists totalItems != 0
        if (totalItems && totalItems != 0) {
            itemsPerPage = 0;
        }

        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetPagesbyCategoriesAndText",
            data: { searchText: searchText, pageCategory: pageCategory, includeSubcategories: includeSubcategories, itemsPerPage: itemsPerPage, order: order, pageNumber: pageNumber, sortDirection: sortDirection },
            beforeSend: function () {
                self.find('.processing_screen').removeClass('is-hidden');
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (jsonResult) {
                var totalItems = jsonResult.totalPages;
                var pages = jsonResult.pages;
                var pageNumberSelected = Number(pageNumber);
                var currentPage = (pageNumberSelected === totalItems) ? totalItems : pageNumberSelected;
                var nextPage = (currentPage === totalItems) ? totalItems : (currentPage + 1);
                var previousPage = (currentPage === 1) ? 1 : (currentPage - 1);

                self.find('ul.pages').empty();

                if (pages) {
                    pages.forEach(function (page) {
                        var summary = page.Summary;
                        var pageName = page.PageName;
                        var pageUrl = page.FriendlyUrl;
                        var createdDate = page.CreatedDateFormatted;

                        var liObject = '<li>' +
                            '<h5 class="title">' +
                            '<span class="container_ellipsis">' +
                            '<a href="' + pageUrl + '?title=' + encodeURIComponent(pageName) + '">' + pageName + '</a>' +
                            '</span>' +
                            (ishidecreatedDate ? '' : ('<span class="post-date">' + window.translation.created_on + ' ' + createdDate + '</span>')) +
                            '</h5>';

                        if (displaySummary === 'True') {
                            liObject += '<div class="summary_container"><div class="container_ellipsis">';
                            liObject += summary;
                            liObject += '</div></div>';
                        }
                        if (displayReadMore === 'True') {
                            liObject += '<p>' +
                                '<a class="' + classReadMore + '" href="' + pageUrl + '?title=' + encodeURIComponent(pageName) + '" target="_parent">' +
                                readMoreText +
                                '</a>' +
                                '</p>';
                        }

                        liObject += '</li>';

                        self.find('ul.pages').append(liObject);
                    });
                }

                if (totalItems) {
                    //Update paging links
                    //Remove all pages links
                    self.find('li.page-number').remove();
                    var linkPages = '';
                    var countItems = 0;
                    var initialPage = (currentPage >= 3 && totalItems > 5) ? currentPage - 2 : 1;

                    for (var i = initialPage; i <= totalItems && countItems < 5; i++) {
                        var classLink = (i == currentPage) ? 'current-page' : '';
                        var linkItem = '<li class="page-number">' +
                            '<a class="' + classLink + '" href="#" data-number-page="' + i + '">' + i + '</a>' +
                            '</li>';
                        linkPages += linkItem;
                        countItems++;
                    }

                    //Modify next and previous number
                    self.find('.paging').find('ul').find('li.previous-item').find('a').attr('data-number-page', previousPage);
                    self.find('.paging').find('ul').find('li.next-item').find('a').attr('data-number-page', nextPage);
                    self.find('.paging').find('ul').find('li.last-item').find('a').attr('data-number-page', totalItems);

                    self.find('.paging').find('ul').find('li.previous-item').after(linkPages);
                }

                self.find('.processing_screen').addClass('is-hidden');

                //Load methods to apply after paging
                //1 - VNY
                if (typeof include_fix_html_for_news_page_listingcmsblock === 'function') {
                    include_fix_html_for_news_page_listingcmsblock();
                }
            }
        });
        return false;
    });
    $(document).on('click', '.listingcmsblock.SALESFORCE .paging_salesforce ul li a,.listingcmsblock.SOQL .paging_salesforce ul li a', function (e) {
        //pagination event for customcard
        var self = $(this).parents('.listingcmsblock').first();
        var totalItems = self.find('input[name="totalItems"]').val();
        var totalItemsSearched = self.attr('data-items-searched');
        var currentPage = parseInt(self.find('a.current-page').attr('data-number-page'));
        var selfLi = $(this).parent();
        var pageNumber = parseInt(selfLi.find('a').attr('data-number-page'));
        var itemsPerPage = parseInt(self.find('input[name="itemsPerPage"]').val());
        var totalPages = Math.ceil(totalItems / itemsPerPage);
        var isCurrentPage = currentPage === pageNumber;
        //Validation to take as total of pages total of items searched (If is a search)
        if (self.hasClass('.search_applied')) totalItems = totalItemsSearched;

        if (!isCurrentPage) {
            var itemInitialPage = ((pageNumber - 1) * itemsPerPage); //To avoid 0
            var itemFinalPage = itemInitialPage + itemsPerPage;
            var previousPage = (pageNumber === 1) ? 1 : (pageNumber - 1);
            var nextPage = (pageNumber === totalPages) ? totalPages : (pageNumber + 1);

            var isAutoRefresh = $(self).find('input[name="AutoRefresh"]').val();
            //Hide all elements
            var cardPresentation = self.find('input[name="cardItemPresentation"]').val();
            var styleCard = calculate_styleCard_for_item(cardPresentation, isAutoRefresh);

            //self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item)').hide();
            self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item)').addClass('is-hidden');


            self.find('ul.pages').find('li.custom-row:not(.hidden_by_search):not(.file-item):not(.hidden-by-filter),li.comment-box:not(.hidden_by_search):not(.file-item):not(.hidden-by-filter)').slice(itemInitialPage, itemFinalPage).each(function () {
                $(this).fadeIn('fast', function () {
                    $(this).css('display', styleCard);
                    $(this).removeClass('is-hidden');
                });
            });


            //Modify class 'currentPage'
            self.find('a.current-page').removeClass('current-page');

            //Modify previous and next pages
            self.find('.paging_salesforce').find('ul').find('li.previous-item').find('a').attr('data-number-page', previousPage);
            self.find('.paging_salesforce').find('ul').find('li.next-item').find('a').attr('data-number-page', nextPage);

            if (totalPages > 5) {
                var container = self.find('.paging_salesforce');
                listingcmsblock_update_pagination(selfLi, container);
            }
            self.find('li.page-number').find('a[data-number-page="' + pageNumber + '"]').addClass('current-page');

        }

        return false;
    });

    //Populate SF related
    $('input.ListingCMSRelatedFilesIdCalculated').each(function () {

        var parameterName = $(this).val();
        var machineName = $(this).attr('data-input-to-update');
        var valueToPopulate = '';

        if (parameterName && machineName) {
            valueToPopulate = retrieveGetParameter(parameterName);

            //Populate field
            if (valueToPopulate) {
                //Populate input
                $('input#' + machineName).val(valueToPopulate);
            }
        }
    });
    $(document).on('click', '.listingcmsblock a.view-more', function () {
        $(this).parent().find('li.after-view-more').removeClass('is-hidden');
        $(this).addClass('is-hidden');
        $(this).parent().find('a.view-less').removeClass('is-hidden');
    });
    $(document).on('click', '.listingcmsblock a.view-less', function () {
        $(this).parent().find('li.after-view-more').addClass('is-hidden');
        $(this).addClass('is-hidden');
        $(this).parent().find('a.view-more').removeClass('is-hidden');
    });
    $(document).on('click', 'a.paginate_loadAction', function () {
        var listingcmsId = $(this).data('listing-id');

        var offset = 0;
        offset = $('#tableInformation' + listingcmsId + ' input#offsetDataTable').val();
        var limit = 0;

        //Verify if this  has autoRefresh to cancel using the timerId
        cancel_future_autorefresh(listingcmsId);
        limit = $('#tableInformation' + listingcmsId + ' input#limitDataTable').val();
        listingcmsblock_reload_datatable(listingcmsId, Number(offset) + Number(limit));
    });
    $(document).on('click', 'a.paginate_firstAction', function () {
        var listingcmsId = $(this).data('listing-id');
        //Verify if this  has autoRefresh to cancel using the timerId
        cancel_future_autorefresh(listingcmsId);
        listingcmsblock_reload_datatable(listingcmsId, 0);
    });

    EventsDeveloperName();
}

function listingcmsblock_update_pagination(liClicked, containerItems) {

    var itemPagination = 1;

    if (liClicked.hasClass('page-number')) {
        var currentPageNum = parseInt(liClicked.find('a').attr('data-number-page'));
        var firstPageNum = 0;
        var lastPageNum = 0;
        var countNum = 0;
        containerItems.find('ul').find('li.page-number a').each(function () {
            if (countNum === 0)
                firstPageNum = $(this).attr('data-number-page');
            else
                lastPageNum = $(this).attr('data-number-page');
            countNum++;
        });

        var lastPageFinalNum = parseInt(containerItems.find('ul li.last-item a').attr('data-number-page'));

        if (currentPageNum == firstPageNum) {
            if (currentPageNum === 1) {
                itemPagination = 1;
            } else if (currentPageNum - 3 < firstPageNum) {
                if (currentPageNum - 3 < 1) {
                    itemPagination = (currentPageNum - 3 < 1) ? 1 : ((currentPageNum - 2 < 1) ? 1 : ((currentPageNum - 1 < 1) ? 1 : currentPageNum));
                }
                else {
                    itemPagination = currentPageNum - 3;
                }
            } else {
                itemPagination = lastPageFinalNum - 1;
            }
        } else if (currentPageNum == lastPageNum) {

            if (currentPageNum === 1) {
                itemPagination = 1;
            } else if (currentPageNum + 3 < lastPageFinalNum) {
                itemPagination = currentPageNum - 1;
            } else {
                itemPagination = lastPageFinalNum - 4;
            }
        }
        else {
            return;
        }
    }
    if (liClicked.hasClass('first-item')) {
        itemPagination = 1;
    }
    else if (liClicked.hasClass('last-item')) {
        itemPagination = parseInt(liClicked.find('a').attr('data-number-page')) - 4;
    } else {
        var firstPage = 0;
        var lastPage = 0;
        var count = 0;
        containerItems.find('ul').find('li.page-number a').each(function () {
            if (count === 0)
                firstPage = $(this).attr('data-number-page');
            else
                lastPage = $(this).attr('data-number-page');
            count++;
        });
        if (liClicked.hasClass('previous-item')) {
            var currentPage = parseInt(liClicked.find('a').attr('data-number-page'));
            var lastPageFinal = parseInt(containerItems.find('ul li.last-item a').attr('data-number-page'));
            if (currentPage === 1) {
                itemPagination = 1;
            } else if (currentPage + 3 < lastPageFinal) {
                itemPagination = currentPage - 1;
            } else {
                itemPagination = lastPageFinal - 4;
            }
        }
        else if (liClicked.hasClass('next-item')) {
            var currentPage = parseInt(liClicked.find('a').attr('data-number-page'));
            var lastPageFinal = parseInt(containerItems.find('ul li.last-item a').attr('data-number-page'));
            if (currentPage === lastPageFinal) {
                itemPagination = lastPageFinal - 4;
            } else if (currentPage + 5 > lastPageFinal) {
                itemPagination = lastPageFinal - 4;
            } else if (currentPage > 4) {
                itemPagination = currentPage - 3;
            }
        }
    }


    containerItems.find('ul').find('li.page-number a').each(function () {
        $(this).attr('data-number-page', itemPagination);
        $(this).text(itemPagination);
        itemPagination++;
    });

}

function listingcmsblock_applycustomstyles() {
    $('.listingcmsblock').each(function () {
        var self = $(this);
        var listingcmsId = self.find('input[name="listingcmsid"]').val();
        var listingcmsIdGenerated = self.find('input[name="listingcmsidgenerated"]').val();
        var stylesCSSCustom = self.find('input[name="stylesCSS"]').val();
        var format = self.find('input[name="listingFormat"]').val();

        if (listingcmsId && listingcmsId != 0) {
            var totalStylesCSS = '';

            //Assign styles css custom if exists in HEAD tag
            if (stylesCSSCustom) {
                // Find resource links
                try {
                    reg = new RegExp("[\\w\\.\\:\\#\\[\\]\\(\\)\"\\'\\=\\-\\0\\,\\>\\+\\~\\ ]+[\\ ]*\\{[\\w\\:\\#\\;\\.\\,\\/\\(\\)\\!\\\\\r\\n\\t\"\\'\\%\\ \\-]+\\}", "gi");

                    var result;
                    while (result = reg.exec(stylesCSSCustom.toString())) {
                        var classCSS = '#' + listingcmsIdGenerated + ' ' + result.toString();

                        totalStylesCSS += classCSS;
                    }
                } catch (error) {
                    console.error(error.message, 'Error in listingcmsblock_applycustomstyles', reg, stylesCSSCustom);
                }

                totalStylesCSS = '<style>' + totalStylesCSS + '</style>';

                $('head').append(totalStylesCSS);
            }
            if (format === 'SLIDER') {

                listing_block_cycle_after_ajax(self);
            }


        }
    });
}

function listingcmsblock_search_functionality(thisObject) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var self = (thisObject) ? thisObject.parents('.listingcmsblock').first() : $(this).parents('.listingcmsblock').first();
    var searchText = self.find('.search-section input[type="text"]').val();
    var searchTextintitle = (self.find('.search-section input[type="checkbox"]').prop('checked') == true) ? true : false;
    var pageCategory = self.find('input[name="pageCategory"]').val();
    var includeSubcategories = self.find('input[name="includeSubCategories"]').val();
    var listingFormat = self.find('input[name="listingFormat"]').val();
    var itemsPerPage = self.find('input[name="itemsPerPage"]').val();
    var totalItems = self.find('input[name="totalItems"]').val();
    var displayPaging = self.find('input[name="displayPaging"]').val();
    var displayRoundImage = self.find('input[name="displayRoundImage"]').val();
    var displayReadMore = self.find('input[name="displayReadMore"]').val();
    var displaySummary = self.find('input[name="displaySummary"]').val();
    var classReadMore = self.find('input[name="classButtonReadMore"]').val();
    var readMoreText = self.find('input[name="readMoreText"]').val();
    var order = self.find('input[name="order"]').val();
    var source = self.find('input[name="source"]').val();
    var ishidecreatedDate = self.find('input[name="ishidecreatedDate"]').val();
    var listingcmsId = self.find('input[name="listingcmsid"]').val();
    var sortDirection = self.find('input[name="SortDirection-' + listingcmsId + '"]').val();

    //Validation when exists totalItems != 0
    if (totalItems && totalItems != 0) {
        itemsPerPage = 0;
    }

    let geturl = '';
    let getdata = '';
    if (source == 'PAGES') {
        geturl = urlSite + "admin/GetPagesCMSbyText";
        getdata = { searchText: searchText, itemsPerPage: itemsPerPage, order: order, pageNumber: 0, searchTextintitle: searchTextintitle };
    } else {
        geturl = urlSite + "admin/GetPagesbyCategoriesAndText";
        getdata = { searchText: searchText, pageCategory: pageCategory, includeSubcategories: includeSubcategories, itemsPerPage: itemsPerPage, order: order, pageNumber: 0, sortDirection: sortDirection };
    }
    $.ajax({
        method: "POST",
        url: geturl,
        data: getdata,
        beforeSend: function () {
            self.find('.processing_screen').removeClass('is-hidden');
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult) {
            var totalPages = jsonResult.totalPages;
            var pages = jsonResult.pages;
            self.find('ul.pages').empty();

            if (pages) {
                pages.forEach(function (page) {
                    var summary = page.Summary;
                    var pageName = page.PageName;
                    var pageUrl = page.FriendlyUrl;
                    var createdDate = page.CreatedDateFormatted;

                    var liObject = '<li>' +
                        '<h5 class="title">' +
                        '<span class="container_ellipsis">' +
                        '<a href="' + pageUrl + '?title=' + encodeURIComponent(pageName) + '">' + pageName + '</a>' +
                        '</span>';
                    if (ishidecreatedDate != "True") {
                        liObject += '<span class="post-date">' + window.translation.created_on + ' ' + createdDate + '</span>';
                    }
                    liObject += '</h5>';

                    if (displaySummary === 'True') {
                        liObject += '<div class="summary_container"><div class="container_ellipsis">';
                        liObject += summary;
                        liObject += '</div></div>';
                    }
                    if (displayReadMore === 'True') {
                        liObject += '<p>' +
                            '<a class="' + classReadMore + '" href="' + pageUrl + '?title=' + encodeURIComponent(pageName) + '" target="_parent">' +
                            readMoreText +
                            '</a>' +
                            '</p>';
                    }

                    liObject += '</li>';

                    self.find('ul.pages').append(liObject);
                });
            }

            //Update paging
            if (totalPages) {
                //Update paging links
                //Remove all pages links
                self.find('li.page-number').remove();
                var linkPages = '';
                var countItems = 0;

                for (var i = 1; i <= totalPages && countItems < 5; i++) {
                    var classLink = (i == 1) ? 'current-page' : '';
                    var linkItem = '<li class="page-number">' +
                        '<a class="' + classLink + '" href="#" data-number-page="' + i + '">' + i + '</a>' +
                        '</li>';
                    linkPages += linkItem;
                    countItems++;
                }

                self.find('.paging').find('ul').find('li.last-item').find('a').attr('data-number-page', totalPages);

                self.find('.paging').find('ul').find('li.previous-item').after(linkPages);

                self.find('.paging').css('display', 'block');
            }

            //Hide paging and display message with not items to display when search returns 0
            var noResultsText = self.find('#noResultsText').val();
            if (noResultsText == undefined || noResultsText == null || noResultsText == '')
                noResultsText = window.translation.there_is_not_items_to_display;
            if (totalPages === 0) {
                var liEmpty = '<li>' + noResultsText + '</li>';

                self.find('ul.pages').append(liEmpty);
                self.find('.paging').hide();
            }

            self.find('.processing_screen').addClass('is-hidden');
        }
    });

    return false;
}

function listingcmsblock_backend_pagecategories() {
    if (!is_backend_page()) return;
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $(document).on('click', 'a[data-element-reveal="page-categories-listing"]', function () {
        var self = $('#page-categories-listing');

        //Open modal
        self.foundation('open');

        //Reinitialize methods inside modal
        self.foundation();

        //Load pageCategories stored in DB
        listingcmsblock_loadpagecategorylisting(self);
    });

    $(document).on('click', 'a[data-element-reveal="page-category-conf"]', function () {
        var self = $('#page-category-conf');
        var componentId = $(this).attr('data-category-id');

        //Open modal
        self.foundation('open');

        //Reinitialize methods inside modal
        self.foundation();

        //Load pageCategories stored in DB
        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetPageCategories",
            data: {},
            beforeSend: function () {
                self.find('.processing_screen').show();
                self.find('select[name="parent_category_id"]').empty();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            //Add default option
            self.find('select[name="parent_category_id"]').append('<option value="">' + window.translation.select_content_type + '</option>');

            if (jsonResult.pageCategories.length > 0) {
                var info_options = '';
                var pgC = jsonResult.pageCategories;
                for (var i = 0; i < pgC.length; i++) {
                    var info_option_row = '<option value="' + pgC[i].ID + '">' + pgC[i].Name + '</option>';
                    info_options += info_option_row;

                    if (pgC[i].PageCategories.length) {
                        info_options = listingcmsblock_displayoptionpagecategorieslisting(pgC[i].PageCategories, info_options, 1);
                    }
                }

                self.find('select[name="parent_category_id"]').append(info_options);
            }

            //Load information of componentId stored in DB
            if (componentId && componentId !== '0') {
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetPageCategoryInfo",
                    data: { componentId: componentId }
                }).done(function (data2) {
                    var jsonResultDetail = JSON.parse(data2);

                    //Assign values to modal
                    if (jsonResultDetail.pageCategoryInfo) {
                        self.find('input[name="page_category_id"]').val(componentId);

                        if (jsonResultDetail.pageCategoryInfo.parentCategoryId) {
                            self.find('select[name="parent_category_id"]').val(jsonResultDetail.pageCategoryInfo.parentCategoryId);
                        }
                    }
                    if (jsonResultDetail.languageInfo) {
                        if (jsonResultDetail.languageInfo.length > 0) {
                            jsonResultDetail.languageInfo.forEach(function (lItem) {
                                var lId = lItem.languageID;
                                var lName = lItem.name;
                                var lDescription = lItem.description;

                                if (lName) {
                                    self.find('input[name="name-' + lId + '"]').val(lName);
                                }
                                if (lDescription) {
                                    self.find('input[name="description-' + lId + '"]').val(lDescription);
                                }
                            });
                        }
                    }

                    //Set id of version in link rollback
                    self.find('.rollback-link').attr('data-component-id', componentId);
                    self.find('.rollback-link').show();
                    self.find('a.delete_page_category').show();
                    self.find('.processing_screen').hide();
                });
            }
            else {
                //Hide remove link
                self.find('a.delete_page_category').hide();
                self.find('.rollback-link').hide();
                self.find('.input-group-button.submit-button').css({
                    display: 'block',
                    width: '100%'
                });

                //Clean form
                self.find('input[name="page_category_id"]').val(0);
                self.find('select[name="parent_category_id"]').val('');
                self.find('input[name*="name"]').val('');
                self.find('input[name*="description"]').val('');

                self.find('.processing_screen').hide();
            }
        });
    });

    $(document).on('click', '#page-category-form a.submit-button', function () {
        var self = $('#page-category-conf');
        var selfListing = $('#page-categories-listing');
        var formData = $("#page-category-form").serializeObject();
        $.ajax({
            method: "POST",
            url: urlSite + "admin/AddOrUpdatePageCategory",
            data: formData,
            beforeSend: function () {
                self.find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (jsonResult.status === 'ok') {

                Swal.fire({
                    title: window.translation.success,
                    text: window.translation.content_type_saved_successfully,
                    icon: 'success',
                    closeOnConfirm: true
                }).then(function (result) {
                    self.foundation('close');

                    //Load pageCategories stored in DB
                    listingcmsblock_loadpagecategorylisting(selfListing);
                });

            }
            else {
                Swal.fire({
                    title: window.translation.error,
                    text: jsonResult.message,
                    icon: "error",
                    closeOnConfirm: true
                });

            }

            self.find('.processing_screen').hide();

            return false;
        });

        return false;
    });

    $(document).on('click', '#page-category-form a.delete_page_category', function () {
        var componentId = $(this).parents('form').find('input[name="page_category_id"]').val();
        var datareveal = $(this).parents('.reveal').first().attr('id');
        var selfModal = $(this).parents('form');
        var selfListing = $('#page-categories-listing');

        if (componentId && componentId !== '0') {

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_content_type,
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true

            }).then(function (result) {
                if (result.isConfirmed) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/DeletePageCategory",
                        data: { pcID: componentId.toString() },
                        beforeSend: function () {
                            selfModal.find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status.toString() == '200') {

                            Swal.fire({
                                title: window.translation.success,
                                text: jsonResult.message,
                                icon: "success",
                                closeOnConfirm: true
                            }).then(function (result) {
                                $('#' + datareveal).foundation('close');
                                Swal.close();
                            });

                        } else {

                            Swal.fire({
                                title: window.translation.error,
                                text: jsonResult.message,
                                icon: "error",
                                closeOnConfirm: true
                            }).then(function (result) {
                                $('#' + datareveal).foundation('close');
                                Swal.close();
                            });

                        }

                        //Load pageCategories stored in DB
                        listingcmsblock_loadpagecategorylisting(selfListing);
                    });

                }
            });

        }
    });
}

function listingcmsblock_loadpagecategorylisting(self) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var objectTable = self.find('#page-category-table');

    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetPageCategories",
        data: {},
        beforeSend: function () {
            self.find('.processing_screen').show();
            if (objectTable.hasClass('dataTable')) {
                datatable_destory_by_id('page-category-table');
            }
            self.find('#page-category-table tbody').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        //Assing values
        if (jsonResult.pageCategories.length > 0) {
            var info_table_rows = '';
            var pgC = jsonResult.pageCategories;
            for (var i = 0; i < pgC.length; i++) {
                var classParent = (pgC[i].length > 0) ? 'parent' : '';
                var info_table = '<tr><td class="' + classParent + '"><a data-element-reveal="page-category-conf" data-category-id=' + pgC[i].ID + ' class="blue-key">' + pgC[i].Name + '</a></td><td>' + pgC[i].Description + '</td></tr>';
                info_table_rows += info_table;

                if (pgC[i].PageCategories.length > 0) {
                    info_table_rows = listingcmsblock_displayrowpagecategorylisting(pgC[i].PageCategories, info_table_rows, 1);
                }
            }
            self.find('#page-category-table tbody').append(info_table_rows);
            datatable_initialize_notAjax_with_params(objectTable, null, null, false, true, false);

        } else {
            var empty_page = '<tr class="odd"><td valign="top" colspan="0" class="dataTables_empty">Nothing records found - sorry</td></tr>';
            self.find('#page-category-table tbody').append(empty_page);
        }

        self.find('.processing_screen').hide();
    });
}

function listingcmsblock_loadpagecategorylistingcheckbox(self, container, languageId, categories) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetPageCategories",
        data: {},
        beforeSend: function () {
            self.find('.processing_screen').show();
            container.find('ul').empty();
            container.find('.page-categories-container').find('input[type="hidden"]').val();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        var pageCategories = jsonResult.pageCategories;
        //Assing values
        if (pageCategories.length > 0) {
            var info_rows = '';

            for (var i = 0; i < pageCategories.length; i++) {

                var info_row = '<li>' +
                    '<div class="input-group input-group-checkbox">' +
                    '<input id="pageCategory-' + pageCategories[i].ID + '-' + languageId + '" name="pageCategory-' + pageCategories[i].ID + '-' + languageId + '" type="checkbox" value="' + pageCategories[i].ID + '" data-language-id="' + languageId + '" />' +
                    '<label for="pageCategory-' + pageCategories[i].ID + '-' + languageId + '">' + pageCategories[i].Name + '</label>' +
                    '</div>' +
                    '</li>';
                info_rows += info_row;

                if (pageCategories[i].PageCategories.length) {
                    info_rows = listingcmsblock_displayrowpagecategorylistingmodal(pageCategories[i].PageCategories, info_rows, 1, languageId);
                }
            }

            container.find('ul').append(info_rows);
        }
        else {

        }

        //Check categories saved
        if (categories) {
            var arrayCategories = categories.split(',');

            arrayCategories.forEach(function (category) {
                $('#pageCategory-' + category + '-' + languageId).prop('checked', true);
            });
        }

        self.find('.processing_screen').hide();
    });
}


function listingcmsblock_displayrowpagecategorylistingmodal(arrayPageCategories, info_rows, level, languageId) {
    if (arrayPageCategories.length > 0) {

        var info_row_level = '';
        var next_level = level + 1;

        for (var i = 0; i < arrayPageCategories.length; i++) {
            var sorting_level = (level > 0) ? 'child-' + level : '';
            var info_row = '<li>' +
                '<div class="input-group input-group-checkbox ' + sorting_level + '">' +
                '<input id="pageCategory-' + arrayPageCategories[i].ID + '-' + languageId + '" name="pageCategory-' + arrayPageCategories[i].ID + '-' + languageId + '" type="checkbox" value="' + arrayPageCategories[i].ID + '" data-language-id="' + languageId + '" />' +
                '<label for="pageCategory-' + arrayPageCategories[i].ID + '-' + languageId + '">' + arrayPageCategories[i].Name + '</label>' +
                '</div>' +
                '</li>';

            info_row_level += info_row;

            if (arrayPageCategories[i].PageCategories.length) {
                info_row_level = listingcmsblock_displayrowpagecategorylistingmodal(arrayPageCategories[i].PageCategories, info_row_level, next_level, languageId);
            }
        }

        info_rows += info_row_level;

        return info_rows;
    }
}

function listingcmsblock_displayrowpagecategorylisting(arrayPageCategories, info_table, level) {
    if (arrayPageCategories.length > 0) {

        var info_table_level = '';
        var next_level = level + 1;

        for (var i = 0; i < arrayPageCategories.length; i++) {
            var classParent = (arrayPageCategories[i].PageCategories.length > 0) ? 'parent' : '';
            var sorting_level = (level > 0) ? 'child child' + level : '';
            var info_table_row = '<tr><td class="' + classParent + ' ' + sorting_level + '"><a data-element-reveal="page-category-conf" data-category-id=' + arrayPageCategories[i].ID + ' class="blue-key">' + arrayPageCategories[i].Name + '</a></td><td>' + arrayPageCategories[i].Description + '</td></tr>';

            info_table_level += info_table_row;

            if (arrayPageCategories[i].PageCategories.length) {
                info_table_level = listingcmsblock_displayrowpagecategorylisting(arrayPageCategories[i].PageCategories, info_table_level, next_level);
            }
        }

        info_table += info_table_level;

        return info_table;
    }
}

function listingcmsblock_displayoptionpagecategorieslisting(arrayPageCategories, info_rows, level) {
    if (arrayPageCategories.length > 0) {

        var info_row_level = '';
        var next_level = level + 1;

        for (var i = 0; i < arrayPageCategories.length; i++) {
            var prefix = '';

            for (var j = 0; j < level; j++) {
                prefix += '-';
            }

            var info_option_row = '<option value="' + arrayPageCategories[i].ID + '">' + prefix + ' ' + arrayPageCategories[i].Name + '</option>';

            info_row_level += info_option_row;

            if (arrayPageCategories[i].PageCategories.length) {
                info_row_level = listingcmsblock_displayoptionpagecategorieslisting(arrayPageCategories[i].PageCategories, info_row_level, next_level);
            }
        }

        info_rows += info_row_level;

        return info_rows;
    }
}

function listingcmsblock_loadsalesforceobjects(modal, defaultOption, defaultOptionView, selectName, selectView, notDefaultColumnSettings, modalValues, skipCache, fromRefresh, listviewIdStored, listviewLabelStored, listviewColumnsStored, SearchAutoSuggestFieldDefault, SalesforceViewName) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if (fromRefresh === undefined) {
        fromRefresh = false;
    }

    if (skipCache === undefined)
        skipCache = false;

    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetSalesforceObjects",
        data: { isARS: false, skipCache: skipCache, isListingBlock: true },
        beforeSend: function () {
            modal.find('.processing_screen').show();
            modal.find('select[name="' + selectName + '"]').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult.status == "ok") {
            var object = jsonResult.salesforceObjects;
            var firstSFObject = '';
            var arrayItems = [];

            $.each(object, function (index, item) {
                arrayItems.push({ api_name: item.api_name, label: item.label });
            });

            //Sort array
            arrayItems.sort(function (a, b) {
                if (a.label < b.label) return -1;
                if (a.label > b.label) return 1;
                return 0;
            });

            if (defaultOption) {
                firstSFObject = defaultOption;
            }
            else if (arrayItems) {
                firstSFObject = arrayItems[0].api_name;
            }


            $.each(arrayItems, function (index, item) {
                var option = '<option value="' + item.api_name + '">' + item.label + '</option>';
                if (defaultOption) {
                    if (defaultOption == item.api_name) {
                        option = '<option selected value="' + item.api_name + '">' + item.label + '</option>';
                    }
                }

                modal.find('select[name="' + selectName + '"]').append(option);
            });
            //Load salesforce views select with first item of select
            if (firstSFObject) {
                listingcmsblock_loadsalesforceview(modal, firstSFObject, defaultOptionView, selectView, notDefaultColumnSettings, modalValues, skipCache, fromRefresh, listviewIdStored, listviewLabelStored, listviewColumnsStored, SearchAutoSuggestFieldDefault, SalesforceViewName);
                if (modal.find('select[name="source"]').val() == '1') {
                    listingcmsblock_loadSF_fields(firstSFObject);
                }
            }
            else {
                modal.find('.processing_screen').hide();
            }
        }
        else {

            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }).then(function (result) {
                if (result.isConfirmed) {
                    swal.close();
                    modal.find('.processing_screen').hide();

                }
            });

        }
    });
}


function listingcmsblock_loadsalesforceobjects_for_second_filter(modal, defaultOption, defaultOptionView, selectName, selectView, skipCache, fromRefresh, loadColumnsTable) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    if (fromRefresh === undefined) {
        fromRefresh = false;
    }

    if (skipCache === undefined)
        skipCache = false;

    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetSalesforceObjects",
        data: { isARS: false, skipCache: skipCache, isListingBlock: true },
        beforeSend: function () {
            modal.find('.processing_screen').show();
            modal.find('select[name="' + selectName + '"]').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult.status == "ok") {
            var object = jsonResult.salesforceObjects;
            var firstSFObject = '';
            var arrayItems = [];

            $.each(object, function (index, item) {
                arrayItems.push({ api_name: item.api_name, label: item.label });
            });

            //Sort array
            arrayItems.sort(function (a, b) {
                if (a.label < b.label) return -1;
                if (a.label > b.label) return 1;
                return 0;
            });

            if (defaultOption) {
                firstSFObject = defaultOption;
            }
            else if (arrayItems) {
                firstSFObject = arrayItems[0].api_name;
            }


            $.each(arrayItems, function (index, item) {
                var option = '<option value="' + item.api_name + '">' + item.label + '</option>';
                if (defaultOption) {
                    if (defaultOption == item.api_name) {
                        option = '<option selected value="' + item.api_name + '">' + item.label + '</option>';
                    }
                }

                modal.find('select[name="' + selectName + '"]').append(option);
            });
            //Load salesforce views select with first item of select
            if (firstSFObject) {
                listingcmsblock_loadsalesforceview_for_second(modal, firstSFObject, defaultOptionView, selectView, skipCache, fromRefresh, loadColumnsTable);
            }
            else {
                modal.find('.processing_screen').hide();
            }
        }
        else {

            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }).then(function (result) {
                if (result.isConfirmed) {
                    swal.close();
                    modal.find('.processing_screen').hide();

                }
            });

        }
    });
}

function listingcmsblock_loadSF_fields(objectName) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var selfModal = $('#listing-cms-form').parents('.reveal').length > 0 ? $('#listing-cms-form').parents('.reveal').first() : $('#listing-cms-block-conf');
    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetSalesforceFields",
        data: { sfObject: objectName, typeField: '' },
        beforeSend: function () {
            selfModal.find('.processing_screen').show();
            selfModal.find('select[name="field-to-write"]').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult) {
            if (jsonResult.status == 'ok') {
                selfModal.find('select[name="field-to-write"]').empty();
                var optionDef = '<option value="">' + window.translation.select + '</option>';
                selfModal.find('select[name="field-to-write"]').append(optionDef);

                if (jsonResult.salesforceFields.fields) {
                    jsonResult.salesforceFields.fields.forEach(function (field) {
                        if (field.updatable) {
                            var option = '<option value="' + field.apiName + '">' + field.label + '</option>';
                            selfModal.find('select[name="field-to-write"]').append(option);
                        }
                    });
                }
            }
        }
        selfModal.find('.processing_screen').hide();
    });
}

function listingcmsblock_loadsalesforceview(modal, objectSF, defaultOption, selectName, notDefaultColumnSettings, modalValues, skipCache, fromRefresh, listviewIdStored, listviewLabelStored, listviewColumnsStored, SearchAutoSuggestFieldDefault, defaultOptionName) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var displayFormat = modal.find('select[name="display-format"]').val();
    var source = modal.find('select[name="source"]').val();

    if (skipCache === undefined)
        skipCache = false;

    if (!defaultOptionName)
        defaultOptionName = '';

    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetSalesforceListViews",
        data: { Sfobject: objectSF, SkipCache: skipCache },
        beforeSend: function () {
            modal.find('.processing_screen').show();
            modal.find('select[name="' + selectName + '"]').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult.status == "ok") {
            var listviews = jsonResult.salesforceListViews;
            var firstSFView = '';
            var arrayItems = [];

            $.each(listviews, function (index, item) {
                arrayItems.push({ id: item.Id, label: item.Label, developerName: item.DeveloperName });
            });

            //Sort array
            arrayItems.sort(function (a, b) {
                if (a.label < b.label) return -1;
                if (a.label > b.label) return 1;
                return 0;
            });

            if (defaultOption) {
                firstSFView = defaultOption;
            }
            else if (arrayItems.length) {
                firstSFView = arrayItems[0].id;
            }
            var firstOpt = true;
            var listviewSelectedAvailable = false;
            var foundByListId = false;
            //load list views
            $.each(arrayItems, function (index, item) {
                var option = '<option value="' + item.id + '" data-developer-name="' + item.developerName + '" >' + item.label + '</option>';
                if (firstOpt) {
                    modal.find('input[name="salesforce_label_view"]').val(item.label);
                    firstOpt = false;
                }
                if (defaultOption) {
                    if (defaultOption == item.id) {
                        modal.find('input[name="salesforce_label_view"]').val(item.label);
                        option = '<option selected value="' + item.id + '"  data-developer-name="' + item.developerName + '">' + item.label + '</option>';
                        listviewSelectedAvailable = true;
                        if (defaultOptionName == '') {
                            defaultOptionName = item.developerName;
                        }
                        foundByListId = true;
                    }
                }
                modal.find(' select[name="' + selectName + '"]').append(option);
            });

            //Populate Modal List View field Using Developer Name
            if (defaultOption && !foundByListId && defaultOptionName != '' && modal.find(' select[name="' + selectName + '"] option[data-developer-name="' + defaultOptionName + '"]').length > 0) {
                var newListViewId = modal.find(' select[name="' + selectName + '"] option[data-developer-name="' + defaultOptionName + '"]').val();
                modal.find(' select[name="' + selectName + '"]').val(newListViewId)
                $('#listing-cms-form input[name="pending-changes"]').val(true);
            }

            if (defaultOption != undefined && defaultOption != '' && !listviewSelectedAvailable && listviewLabelStored && listviewIdStored && defaultOption == listviewIdStored) {
                modal.find('input[name="salesforce_label_view"]').val(listviewLabelStored);
                var option = '<option class="only-local" selected value="' + listviewIdStored + '">' + listviewLabelStored + '</option>';
                modal.find(' select[name="' + selectName + '"]').append(option);
            }

            if (firstSFView) {
                if (source != '2') {
                    modal.find('.custom_filtering').removeClass('hide-custom');
                    listingcmsblock_loadfieldsavailablesalesforceview(modal, objectSF, firstSFView, displayFormat, 'Load', notDefaultColumnSettings, modalValues, fromRefresh, null, SearchAutoSuggestFieldDefault);
                }
                else {
                    AssignModalValues(modal, displayFormat, '', '', [], '', modalValues, null);
                }
            }
            else {
                modal.find('.custom_filtering').addClass('hide-custom');
                //modal.find('select[name="field_to_filter"] option').remove();
                modal.find('.processing_screen').hide();
            }

            PopulateDeveloperName(modal, defaultOptionName)
        }
        else {

            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }).then(function (result) {
                if (result.isConfirmed) {
                    swal.close();
                    modal.find('.processing_screen').hide();

                }
            });

        }
        if (source == '2') {
            modal.find('.processing_screen').hide();
        }
    });
}


function listingcmsblock_loadsalesforceview_for_second(modal, objectSF, defaultOption, selectName, skipCache, fromRefresh, loadColumnsTable) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var displayFormat = modal.find('select[name="second-display-format"]').val();

    if (skipCache === undefined)
        skipCache = false;

    $.ajax({
        method: "POST",
        url: urlSite + "admin/GetSalesforceListViews",
        data: { Sfobject: objectSF, SkipCache: skipCache },
        beforeSend: function () {
            modal.find('.processing_screen').show();
            modal.find('select[name="' + selectName + '"]').empty();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult.status == "ok") {
            var listviews = jsonResult.salesforceListViews;
            var firstSFView = '';
            var arrayItems = [];

            $.each(listviews, function (index, item) {
                arrayItems.push({ id: item.Id, label: item.Label });
            });

            //Sort array
            arrayItems.sort(function (a, b) {
                if (a.label < b.label) return -1;
                if (a.label > b.label) return 1;
                return 0;
            });

            if (defaultOption) {
                firstSFView = defaultOption;
            }
            else if (arrayItems.length) {
                firstSFView = arrayItems[0].id;
            }
            var firstOpt = true;
            var listviewSelectedAvailable = false;
            //load list views
            $.each(arrayItems, function (index, item) {
                var option = '<option value="' + item.id + '">' + item.label + '</option>';
                if (firstOpt) {
                    modal.find('input[name="salesforce_label_view"]').val(item.label);
                    firstOpt = false;
                }
                if (defaultOption) {
                    if (defaultOption == item.id) {
                        modal.find('input[name="salesforce_label_view"]').val(item.label);
                        option = '<option selected value="' + item.id + '">' + item.label + '</option>';
                        listviewSelectedAvailable = true;
                    }
                }
                modal.find(' select[name="' + selectName + '"]').append(option);
            });
            /*if (defaultOption != undefined && defaultOption != '' && !listviewSelectedAvailable && listviewLabelStored && listviewIdStored && defaultOption == listviewIdStored) {
                modal.find('input[name="salesforce_label_view"]').val(listviewLabelStored);
                var option = '<option class="only-local" selected value="' + listviewIdStored + '">' + listviewLabelStored + '</option>';
                modal.find(' select[name="' + selectName + '"]').append(option);
            }*/

            if (firstSFView) {
                modal.find('#special-section-for-second-view .custom_filtering').removeClass('hide-custom');
                listingcmsblock_loadfieldsavailablesalesforceview_for_second(modal, objectSF, firstSFView, displayFormat, fromRefresh, loadColumnsTable);
            }
            else {
                //modal.find('select[name="field_to_filter"] option').remove();
                modal.find('.processing_screen').hide();
            }
        }
        else {

            Swal.fire({
                title: window.translation.warning,
                text: jsonResult.message,
                icon: "error",
                showCancelButton: false,
                confirmButtonColor: '#ff0000',
                closeOnConfirm: true
            }).then(function (result) {
                if (result.isConfirmed) {
                    swal.close();
                    modal.find('.processing_screen').hide();

                }
            });

        }
    });
}


function listingcmsblock_loadfieldsavailablesalesforceview_for_second(modal, objectSF, objectSFView, displayFormat, fromRefresh, loadColumnsTable) {

    if (displayFormat == 4) {
        modal.find('.processing_screen').hide();
    }
    var className = listingcmsblock_get_fields_settings_class_name(displayFormat, true);
    if (objectSF == null || objectSF == undefined || objectSF == '') {
        listingcmsblock_load_column_settings('', className, false, 'table-columns-fields-second-view', 'row_second_view_custom_column_settings');
    }

    if (objectSFView == null || objectSFView == undefined || objectSFView == '') {
        listingcmsblock_load_column_settings('', className, false, 'table-columns-fields-second-view', 'row_second_view_custom_column_settings');
    }

    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var urlPath = '';

    if (displayFormat == '4' || displayFormat == '5') {
        urlPath = urlSite + "admin/GetDefaultColumnsSettings";
    }
    else {
        urlPath = urlSite + "admin/GetSalesforceFieldsAvailableView";
    }
    $.ajax({
        method: "POST",
        url: urlPath,
        data: { Sfobject: objectSF, Sfview: objectSFView, useLocalCopy: modal.find('input[name="listing-use-local-copy"]').val(), listingCmsId: modal.find('input[name="listing-cms-block-id"]').val() },
        beforeSend: function () {
            modal.find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status == "ok") {
            var fields = jsonResult.fields;
            var _fields = fields;
            var itemsResult = '';
            var itemsSelect = '';
            var itemsSelectedFiltered = '';
            let dateFieldsArray = [];
            let blockConf = $('#listing-cms-block-conf');
            var itemsForCustomFiltering = '';
            var arrayFields = fields; // Used to get fields always in an array.


            // cleaning filter fields
            modal.find('select[name="second_field_to_filter"] option').remove();
            // cleaning map field selector
            var reviewFilters = modal.find('input[name="review-filters-loaded"]').val();

            if (displayFormat != '4' && displayFormat != '5') {
                dateFieldsArray = fields.filter(field => field.type.indexOf('date') >= 0 && !field.hidden);
                $.each(fields, function (index, item) {
                    itemsResult = itemsResult + '<li>' + item.name + '</li>';
                    itemsSelect = itemsSelect + '<option value="' + item.name + '">' + item.name + '</option>';
                    if (item.type === 'string' || item.type === 'id' || item.type === 'formula' || item.type === 'reference') {
                        itemsSelectedFiltered = itemsSelectedFiltered + '<option value="' + item.name + '">' + item.name + '</option>';
                    }
                    // Adding option for custom filters
                    itemsForCustomFiltering = itemsForCustomFiltering
                        + '<option value="' + item.name + '" data-type="' + item.type + '">' + item.defaultLabel + '</option>';
                });
                modal.find('select[name="second_field_to_filter"]').append(itemsForCustomFiltering);

                if (reviewFilters === true || reviewFilters === 'true') {
                    modal.find('.second_filter_rules .rule').each(function (index) {
                        var rule = $(this);
                        var field = rule.data('field');
                        var operator = rule.data('operator');
                        var ruleValue = rule.data('value');
                        var typeField = rule.data('type');
                        var friendlyField = rule.find('.field_rule').first().text();

                        if (field == friendlyField) {
                            $.each(fields, function (index, column) {
                                if (column.name == field) {
                                    rule.find('.field_rule').first().text(column.defaultLabel);
                                    if (typeField != column.type) {
                                        rule.attr('data-type', column.type);
                                    }
                                }
                            });
                        }

                    });
                    modal.find('input[name="review-filters-loaded"]').val('false');
                }

                modal.find('select[name="second_field_to_filter"]').trigger('change');
                // Append field options for title map field, latitude and longitude

            }
            else {
                _fields = JSON.parse(jsonResult.fields);
                arrayFields = _fields.columns;
                dateFieldsArray = _fields.columns.filter(field => field.type.toLocaleLowerCase().indexOf('date') >= 0 && !field.hidden);
                $.each(_fields.columns, function (index, column) {
                    itemsSelect = itemsSelect + '<option value="' + column.name + '">' + column.name + '</option>';

                    if (column.type === 'string' || column.type === 'id' || column.type === 'formula' || column.type === 'reference') {
                        itemsSelectedFiltered = itemsSelectedFiltered + '<option value="' + column.name + '">' + column.name + '</option>';
                    }
                    itemsForCustomFiltering = itemsForCustomFiltering
                        + '<option value="' + column.name + '" data-type="' + column.type + '">' + column.defaultLabel + '</option>';
                });
                modal.find('select[name="second_field_to_filter"]').append(itemsForCustomFiltering);
                if (reviewFilters === true || reviewFilters === 'true') {
                    modal.find('.second_filter_rules .rule').each(function (index) {
                        var rule = $(this);
                        var field = rule.data('field');
                        var operator = rule.data('operator');
                        var ruleValue = rule.data('value');
                        var typeField = rule.data('type');
                        var friendlyField = rule.find('.field_rule').first().text();

                        if (field == friendlyField) {
                            $.each(_fields.columns, function (index, column) {
                                if (column.name == field) {
                                    rule.find('.field_rule').first().text(column.defaultLabel);
                                    if (typeField != column.type) {
                                        rule.attr('data-type', column.type);
                                    }
                                }
                            });
                        }
                    });
                    modal.find('input[name="review-filters-loaded"]').val('false');
                }

                if (displayFormat === '4' && loadColumnsTable === true) {
                    listingcmsblock_load_column_settings(fields, className, fromRefresh, 'table-columns-fields-second-view', 'row_second_view_custom_column_settings');
                }


            }
            $(className).addClass('hide-custom');
        }


        modal.find('.processing_screen').hide();
    });
}



function listingcmsblock_loadfieldsavailablesalesforceview(modal, objectSF, objectSFView, displayFormat, eventLoad, notDefaultColumnSettings, modalValues, fromRefresh, captureUrlParameter, SearchAutoSuggestFieldDefault) {
    if (displayFormat == 4 && notDefaultColumnSettings) {
        modal.find('.processing_screen').hide();
    }
    var className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);

    if (objectSF == null || objectSF == undefined || objectSF == '') {
        listingcmsblock_load_column_settings('', className, false, 'table-columns-fields', 'row_custom_column_settings');
    }

    if (objectSFView == null || objectSFView == undefined || objectSFView == '') {
        listingcmsblock_load_column_settings('', className, false, 'table-columns-fields', 'row_custom_column_settings');
    }

    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var urlPath = '';

    if (displayFormat == '4' || displayFormat == '5') {
        urlPath = urlSite + "admin/GetDefaultColumnsSettings";
    }
    else {
        urlPath = urlSite + "admin/GetSalesforceFieldsAvailableView";
    }
    $.ajax({
        method: "POST",
        url: urlPath,
        data: { Sfobject: objectSF, Sfview: objectSFView, useLocalCopy: modal.find('input[name="listing-use-local-copy"]').val(), listingCmsId: modal.find('input[name="listing-cms-block-id"]').val() },
        beforeSend: function () {
            modal.find('.processing_screen').show();
            if (displayFormat != '4') {
                modal.find('.available-fields-salesforce-view').find('ul').empty();
            }
            else if (!notDefaultColumnSettings) {
                modal.find("#table-columns-fields").DataTable().destroy();
                modal.find("#table-columns-fields tbody").empty();
            }
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status == "ok") {
            var fields = jsonResult.fields;
            var _fields = fields;
            var itemsResult = '';
            var itemsSelect = '';
            var itemsSelectedFiltered = '';
            var itemsSelectedFilteredPick = '';
            var optionsFiltersWithDates = '<option value="" >' + window.translation.select + '</option>';;
            let dateFieldsArray = [];
            let blockConf = $('#listing-cms-block-conf');
            var itemsForCustomFiltering = '';
            var itemsForCustomFilteringNotReference = '';
            var itemsForCustomFilteringReference = '';
            var itemsForCustomFilteringAvncd = '';
            var arrayFields = fields; // Used to get fields always in an array.

            modal.find('.number-results-search').removeClass('hide-custom');

            // cleaning filter fields
            //modal.find('select[name="field_to_filter"] option').remove();
            modal.find('select[name="search-auto-suggest-field"] option').remove();
            // cleaning map field selector
            modal.find('select[name="title_field_map"] option').remove();
            modal.find('select[name="latitude_field_view"] option').remove();
            modal.find('select[name="longitude_field_view"] option').remove();
            modal.find('select[name="description_field_view"] option').remove();
            var reviewFilters = modal.find('input[name="review-filters-loaded"]').val();
            if (displayFormat == '4') {
                modal.find('.number-results-search').addClass('hide-custom');
            }

            if (displayFormat != '4' && displayFormat != '5') {
                dateFieldsArray = fields.filter(field => field.type.indexOf('date') >= 0 && !field.hidden);
                $.each(fields, function (index, item) {
                    itemsResult = itemsResult + '<li>' + item.name + '</li>';
                    itemsSelect = itemsSelect + '<option value="' + item.name + '">' + item.name + '</option>';
                    if (item.type === 'string' || item.type === 'id' || item.type === 'formula' || item.type === 'reference') {
                        itemsSelectedFiltered = itemsSelectedFiltered + '<option value="' + item.name + '">' + item.name + '</option>';
                    }
                    // Adding option for custom filters
                    itemsForCustomFiltering = itemsForCustomFiltering
                        + '<option value="' + item.name + '" data-type="' + item.type + '">' + item.defaultLabel + '</option>';

                    if (item.type == 'reference' && item.name.indexOf('.') == -1) {
                        var labelOptionRefFormat = item.defaultLabel;

                        if (labelOptionRefFormat.indexOf(' ID') == -1 && labelOptionRefFormat.indexOf(' ID (r)') == -1) {
                            labelOptionRefFormat = labelOptionRefFormat + ' ID (r)';
                        }
                        else if (labelOptionRefFormat.indexOf(' ID (r)') == -1) {
                            labelOptionRefFormat = labelOptionRefFormat + ' (r)';
                        }
                        itemsForCustomFilteringReference = itemsForCustomFilteringReference
                            + '<option value="' + item.name + '" data-type="' + item.type + '">' + labelOptionRefFormat + '</option>';
                    }
                    else {
                        itemsForCustomFilteringNotReference = itemsForCustomFilteringNotReference
                            + '<option value="' + item.name + '" data-type="' + item.type + '">' + item.defaultLabel + '</option>';
                    }

                    if (item.type === 'picklist' || item.type === 'multipicklist') {
                        itemsSelectedFilteredPick = itemsSelectedFilteredPick + '<option value="' + item.name + '" data-type="' + item.type + '" >' + item.defaultLabel + '</option>';
                    }
                    var isGlobaluser = $('#is-global-user').val() == 'true';
                    if (item.type === 'date' || item.type === 'datetime' ) {
                        optionsFiltersWithDates = optionsFiltersWithDates + '<option value="' + item.name + '" data-type="' + item.type + '" >' + item.defaultLabel + '</option>';
                    }
                    if (item.type === 'picklist' || item.type === 'multipicklist') {
                        optionsFiltersWithDates = optionsFiltersWithDates + '<option value="' + item.name + '" data-type="' + item.type + '" >' + item.defaultLabel + '</option>';
                    }
                });
                itemsForCustomFilteringAvncd = '<optgroup label="' + window.translation.list_view_fields + '">' + itemsForCustomFilteringNotReference + '</optgroup><optgroup label="' + window.translation.related_fields + '">' + itemsForCustomFilteringReference + '</optgroup>';
                modal.find('select[name="field_to_filter"]').empty().append(itemsForCustomFilteringAvncd);
                listingcmsblock_load_and_set_dynamic_filter(modal, itemsSelectedFilteredPick, optionsFiltersWithDates);
                modal.find('select[name="search-auto-suggest-field"]').append(itemsForCustomFiltering).val(SearchAutoSuggestFieldDefault);
                if (reviewFilters === true || reviewFilters === 'true') {
                    modal.find('.filter_rules .rule').each(function (index) {
                        var rule = $(this);
                        var field = rule.data('field');
                        var operator = rule.data('operator');
                        var ruleValue = rule.data('value');
                        var typeField = rule.data('type');
                        var friendlyField = rule.find('.field_rule').first().text();

                        if (field == friendlyField) {
                            $.each(fields, function (index, column) {
                                if (column.name == field) {
                                    rule.find('.field_rule').first().text(column.defaultLabel);
                                    if (typeField != column.type) {
                                        rule.attr('data-type', column.type);
                                    }
                                }
                            });
                        }

                    });
                    modal.find('input[name="review-filters-loaded"]').val('false');
                }

                modal.find('select[name="field_to_filter"]').trigger('change');
                // Append field options for title map field, latitude and longitude
                modal.find('select[name="title_field_map"]').append(itemsForCustomFiltering);
                modal.find('select[name="latitude_field_view"]').append(itemsForCustomFiltering);
                modal.find('select[name="longitude_field_view"]').append(itemsForCustomFiltering);
                modal.find('select[name="description_field_view"]').append(itemsForCustomFiltering);
                modal.find('select[name="title_field_map"]').val('');
                modal.find('select[name="latitude_field_view"]').val('');
                modal.find('select[name="longitude_field_view"]').val('');
                modal.find('select[name="description_field_view"]').val('');
                //Append field list to help-text of card custom template
                modal.find('.available-fields-salesforce-view').find('ul').append(itemsResult);

            }
            else {
                _fields = JSON.parse(jsonResult.fields);
                arrayFields = _fields.columns;
                dateFieldsArray = _fields.columns.filter(field => field.type.toLocaleLowerCase().indexOf('date') >= 0 && !field.hidden);
                $.each(_fields.columns, function (index, column) {
                    itemsSelect = itemsSelect + '<option value="' + column.name + '">' + column.name + '</option>';

                    if (column.type === 'string' || column.type === 'id' || column.type === 'formula' || column.type === 'reference') {
                        itemsSelectedFiltered = itemsSelectedFiltered + '<option value="' + column.name + '">' + column.name + '</option>';
                    }
                    itemsForCustomFiltering = itemsForCustomFiltering
                        + '<option value="' + column.name + '" data-type="' + column.type + '">' + column.defaultLabel + '</option>';

                    if (column.type == 'reference' && column.name.indexOf('.') == -1) {
                        itemsForCustomFilteringReference = itemsForCustomFilteringReference
                            + '<option value="' + column.name + '" data-type="' + column.type + '">' + column.defaultLabel + '</option>';
                    }
                    else {
                        itemsForCustomFilteringNotReference = itemsForCustomFilteringNotReference
                            + '<option value="' + column.name + '" data-type="' + column.type + '">' + column.defaultLabel + '</option>';
                    }

                    if (column.type === 'picklist' || column.type === 'multipicklist') {
                        itemsSelectedFilteredPick = itemsSelectedFilteredPick + '<option value="' + column.name + '" data-type="' + column.type + '">' + column.defaultLabel + '</option>';
                    }

                    if (column.type === 'picklist' || column.type === 'multipicklist') {
                        optionsFiltersWithDates = optionsFiltersWithDates + '<option value="' + column.name + '" data-type="' + column.type + '">' + column.defaultLabel + '</option>';
                    }
                    var isGlobaluser = $('#is-global-user').val() == 'true';
                    if (column.type === 'date' || column.type === 'datetime') {
                        optionsFiltersWithDates = optionsFiltersWithDates + '<option value="' + column.name + '" data-type="' + column.type + '">' + column.defaultLabel + '</option>';
                    }
                });
                itemsForCustomFilteringAvncd = '<optgroup label="' + window.translation.list_view_fields + '">' + itemsForCustomFilteringNotReference + '</optgroup><optgroup label="' + window.translation.related_fields + '">' + itemsForCustomFilteringReference + '</optgroup>';
                listingcmsblock_load_and_set_dynamic_filter(modal, itemsSelectedFilteredPick, optionsFiltersWithDates);
                modal.find('select[name="field_to_filter"]').empty().append(itemsForCustomFilteringAvncd);
                modal.find('select[name="search-auto-suggest-field"]').append(itemsForCustomFiltering).val(SearchAutoSuggestFieldDefault);
                if (reviewFilters === true || reviewFilters === 'true') {
                    modal.find('.filter_rules .rule').each(function (index) {
                        var rule = $(this);
                        var field = rule.data('field');
                        var operator = rule.data('operator');
                        var ruleValue = rule.data('value');
                        var typeField = rule.data('type');
                        var friendlyField = rule.find('.field_rule').first().text();

                        if (field == friendlyField) {
                            $.each(_fields.columns, function (index, column) {
                                if (column.name == field) {
                                    rule.find('.field_rule').first().text(column.defaultLabel);
                                    if (typeField != column.type) {
                                        rule.attr('data-type', column.type);
                                    }
                                }
                            });
                        }
                    });
                    modal.find('input[name="review-filters-loaded"]').val('false');
                }


                if (!notDefaultColumnSettings && displayFormat !== '5') {
                    fromRefresh = modal.find('input[name="refresh-requested"]').val() != '' && modal.find('input[name="refresh-requested"]').val() == objectSFView;
                    modal.find('input[name="refresh-requested"]').val('');
                    listingcmsblock_load_column_settings(fields, className, fromRefresh, 'table-columns-fields', 'row_custom_column_settings');
                }
                if (displayFormat == '5' && ($('#table-columns-fields tbody').contents().length == 0 || notDefaultColumnSettings)) {
                    let className = listingcmsblock_get_fields_settings_class_name(displayFormat, false);
                    fromRefresh = modal.find('input[name="refresh-requested"]').val() != '' && modal.find('input[name="refresh-requested"]').val() == objectSFView;
                    modal.find('input[name="refresh-requested"]').val('');
                    listingcmsblock_load_column_settings(fields, className, fromRefresh, 'table-columns-fields', 'row_custom_column_settings');
                }
            }
            var isGlobaluser = $('#is-global-user').val() == 'true';
            if (dateFieldsArray.length > 0) {
                let dateFielsOptions = '';
                let eventTitleOptions = '';
                if (blockConf.find('select[name="display-format"]').find('option[value="5"]').length === 0 ) {
                    let optionDatatable = '<option value="5">' + window.translation.calendar + '</option>';
                    blockConf.find('select[name="display-format"]').append(optionDatatable);
                }
                if (displayFormat == '5') {


                    $.each(dateFieldsArray, function (index, column) {
                        dateFielsOptions = dateFielsOptions + '<option value="' + column.name + '">' + column.defaultLabel + '</option>';
                    });
                    $.each(_fields.columns, function (index, column) {
                        eventTitleOptions = eventTitleOptions + '<option value="' + column.name + '">' + column.defaultLabel + '</option>';
                    });
                    eventTitleOptions = eventTitleOptions + listingcmsblock_load_custom_columns_to_append(className);

                    modal.find('select[name="date-to-group-results"]').empty().append(dateFielsOptions);
                    modal.find('select[name="calendar-event-title"]').empty().append(eventTitleOptions);

                    if (eventLoad == 'Load') {
                        modal.find('select[name="date-to-group-results"]').val(modal.find('input[name="date-original-to-group-results"]').val());
                        modal.find('select[name="calendar-event-title"]').val(modal.find('input[name="calendar-original-event-title"]').val());
                    }
                    else {
                        modal.find('input[name="date-original-to-group-results"]').val('');
                        modal.find('input[name="calendar-original-event-title"]').val('')
                    }

                    modal.find('.row_date_to_group_results').removeClass('hide-custom');
                    modal.find('.row_custom_column_settings').removeClass('hide-custom');
                    modal.find('.datatable-editable').addClass('hide-custom');
                    modal.find('.display-export-csv-section').addClass('hide-custom');
                    modal.find('.row_custom_card_template').addClass('hide-custom');
                    //modal.find('.enforce_filtering').addClass('hide-custom');
                    modal.find('.enforce_filtering').removeClass('hide-custom');
                    modal.find('.row_display_search_section').addClass('hide-custom');
                    modal.find('.display-dynamic-filter-section').addClass('hide-custom');
                    modal.find('.row_number_of_items').addClass('hide-custom');
                    modal.find('.row_items_per_page').addClass('hide-custom');
                    modal.find('.add-custom-column').removeClass('hide-custom');
                    modal.find('.field-configuration').addClass('calendar-data-configuration');
                    modal.find('.cell-sort').addClass('hide-custom');
                    modal.find('.cell-visible').addClass('extra-width');
                }
            }
            else if (dateFieldsArray.length === 0 && blockConf.find('select[name="display-format"]').find('option[value="5"]').length > 0) {
                blockConf.find('select[name="display-format"]').find('option[value="5"]').remove();
                blockConf.find('.row_date_to_group_results').addClass('hide-custom');
                if (eventLoad === "event") {
                    blockConf.find('select[name="display-format"]').trigger('change');
                }

            }

            var urlFielsOptions = '';
            $.each(_fields, function (index, column) {
                if (column.type !== undefined && column.type !== null && column.type.toLocaleLowerCase() === 'url') {
                    urlFielsOptions = urlFielsOptions + '<option value="' + column.name + '">' + column.defaultLabel + '</option>';
                }
            });
            AssignModalValues(modal, displayFormat, urlFielsOptions, itemsSelect, arrayFields, itemsSelectedFiltered, modalValues, captureUrlParameter);

        }
        else {
            var isUsingLocalCopy = false;
            var localCopyViewIsSelected = false;

        }

        modal.find('.processing_screen').hide();
    });
}

function AssignModalValues(modal, displayFormat, urlFielsOptions, itemsSelect, arrayFields, itemsSelectedFiltered, modalValues, captureUrlParameter) {
    if (displayFormat === '7') {
        //Populate Fields salesforce use -> listining Comments Timeline
        modal.find('select[name="FieldPosition"]').empty();
        modal.find('select[name="FieldPosition"]').append(itemsSelect);
        var fp = $('input[name="FieldPosition-hidden"]').val();
        modal.find('select[name="FieldPosition"]').val(fp);

        modal.find('select[name="DateDisplay"]').empty();
        modal.find('select[name="DateDisplay"]').append(itemsSelect);
        var dd = $('input[name="DateDisplay-hidden"]').val();
        modal.find('select[name="DateDisplay"]').val(dd);

        modal.find('select[name="FieldAuthor"]').empty();
        modal.find('select[name="FieldAuthor"]').append(itemsSelect);
        var fa = $('input[name="FieldAuthor-hidden"]').val();
        modal.find('select[name="FieldAuthor"]').val(fa);

        modal.find('select[name="FieldAttached"]').empty();
        modal.find('select[name="FieldAttached"]').append(urlFielsOptions);
        var fat = $('input[name="FieldAttached-hidden"]').val();
        modal.find('select[name="FieldAttached"]').val(fat);

        modal.find('select[name="FieldIcon"]').empty();
        modal.find('select[name="FieldIcon"]').append(urlFielsOptions);
        var fi = $('input[name="FieldIcon-hidden"]').val();
        modal.find('select[name="FieldIcon"]').val(fi);

    }

    // Load options in sf_chart_value_field, and sf_chart_label_field
    modal.find('select[name="sf_chart_label_field"]').empty();
    modal.find('select[name="sf_chart_value_field"]').empty();
    modal.find('input[name="sf_chart_label_field-text"]').val('');
    modal.find('input[name="sf_chart_value_field-text"]').val('');
    var defaultOption = window.translation.select + ' ' + window.translation.field;
    var sfLabelOptions = '<option value="">' + defaultOption + '</option>';
    var sfValueOptions = '<option value="">' + defaultOption + '</option>';
    if (arrayFields && arrayFields.length > 0) {
        arrayFields.forEach(function (item) {
            sfLabelOptions = sfLabelOptions + '<option value="' + item.name + '">' + item.defaultLabel + '</option>';
            if (item.type === 'id' || item.type === 'double' || item.type === 'string') {
                sfValueOptions = sfValueOptions + '<option value="' + item.name + '">' + item.defaultLabel + '</option>';
            }
        });
    }
    modal.find('select[name="sf_chart_label_field"]').append(sfLabelOptions);
    modal.find('select[name="sf_chart_value_field"]').append(sfValueOptions);

    //Populate selects for "Enforce filtering by" section
    modal.find('select[name="enforce_contact_id_field_sf"]').empty();
    modal.find('select[name="enforce_account_id_field_sf"]').empty();
    //modal.find('select[name="require_url_parameters"]').empty();
    modal.find('select[name="enforce_contact_id_field_sf"]').append(itemsSelectedFiltered);
    modal.find('select[name="enforce_account_id_field_sf"]').append(itemsSelectedFiltered);
    //modal.find('select[name="require_url_parameters"]').append(itemsSelect);
    //modal.find('select[name="require_url_parameters"]').multiselect('reload');

    //Populate select to sort
    modal.find('select[name="OrderFieldCT"]').empty();
    var firtOption = "<option value='' >Select</option>";
    modal.find('select[name="OrderFieldCT"]').append(firtOption);
    modal.find('select[name="OrderFieldCT"]').append(itemsSelect);

    var order = $('input[name="OrderField-hidden"]').val();
    modal.find('select[name="OrderFieldCT"]').val(order);

    //Populate with default values (if exists)
    if (modalValues) {
        if (modalValues.EnforceFilterContactIdField) {
            modal.find('select[name="enforce_contact_id_field_sf"]').val(modalValues.EnforceFilterContactIdField);
        } else {
            modal.find('select[name="enforce_contact_id_field_sf"]').val('');
        }
        if (modalValues.EnforceFilterAccountIdField) {
            modal.find('select[name="enforce_account_id_field_sf"]').val(modalValues.EnforceFilterAccountIdField);
        } else {
            modal.find('select[name="enforce_account_id_field_sf"]').val('');
        }
        /*if (modalValues.RequireURLParameters) {
            //Manage require url fields
            apply_backend_multiselect_group('select[name="require_url_parameters"]', false, modalValues.RequireURLParameters.split(','), true);
        } else {
            apply_backend_multiselect_group('select[name="require_url_parameters"]', false, '', true);
        }*/
        if (modalValues.TitleMapField) {
            modal.find('select[name="title_field_map"]').val(modalValues.TitleMapField);
            modal.find('input[name="title_field_map-text"]').val(modalValues.TitleMapField);
        }
        if (modalValues.DescriptionMapField) {
            modal.find('select[name="description_field_view"]').val(modalValues.DescriptionMapField);
            modal.find('input[name="description_field_view-text"]').val(modalValues.DescriptionMapField);
        }
        if (modalValues.LatitudeMapField) {
            modal.find('select[name="latitude_field_view"]').val(modalValues.LatitudeMapField);
            modal.find('input[name="latitude_field_view-text"]').val(modalValues.LatitudeMapField);
        }
        if (modalValues.LongitudeMapfield) {
            modal.find('select[name="longitude_field_view"]').val(modalValues.LongitudeMapfield);
            modal.find('input[name="longitude_field_view-text"]').val(modalValues.LongitudeMapfield);
        }
        if (modalValues.sfChartLabelField) {
            modal.find('select[name="sf_chart_label_field"]').val(modalValues.sfChartLabelField);
            modal.find('input[name="sf_chart_label_field-text"]').val(modalValues.sfChartLabelField);
        }
        if (modalValues.sfChartValueField) {
            modal.find('select[name="sf_chart_value_field"]').val(modalValues.sfChartValueField);
            modal.find('input[name="sf_chart_value_field-text"]').val(modalValues.sfChartValueField);
        }
    } else {
        modal.find('select[name="enforce_contact_id_field_sf"]').val('');
        modal.find('select[name="enforce_account_id_field_sf"]').val('');
        if (Array.isArray(captureUrlParameter) && captureUrlParameter.length) {
            captureUrlParameter = captureUrlParameter.join();
            //apply_backend_multiselect_group('select[name="require_url_parameters"]', false, captureUrlParameter.split(','), true);
        } else {
            //apply_backend_multiselect_group('select[name="require_url_parameters"]', false, '', true);
        }
    }
}

function listingcmsblock_rollback(jsonResult, editor) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#listingcmsblock-advanced-settings');

    var self = $('#listing-cms-block-conf');

    //Populate listing cms Block
    if (jsonResult.blockListingCMS.length > 0) {
        jsonResult.blockListingCMS.forEach(function (listingcmsblock) {
            self.find('select[name="display-format"]').val(listingcmsblock.format);
            SetClassForSettingTable(listingcmsblock.format, self);
            self.find('select[name="order-option"]').val(listingcmsblock.order);
            self.find('input[name="number-items"]').val(listingcmsblock.numberOfItems);

            self.find('input[name="feed-id-code"]').val(listingcmsblock.FeedId);
            self.find('input[name="feed-title"]').val(listingcmsblock.FeedTitle);
            self.find('input[name="feed-description"]').val(listingcmsblock.FeedDescription);
            self.find('input[name="feed-link"]').val(listingcmsblock.FeedLink);
            self.find('textarea[name="other-channel-settings"]').text(listingcmsblock.FeedHeaderDescription);


            self.find('input[name="items-per-page"]').val(listingcmsblock.itemsPerPage);
            self.find('input[name="max-items-first-load"]').val(listingcmsblock.MaxItemsAtFirstLoad);
            self.find('select[name="page-categories"]').val(listingcmsblock.pageCategories);
            self.find('input[name="include-subcategories"]').prop('checked', listingcmsblock.includeSubCategories);
            self.find('input[name="display-paging"]').prop('checked', listingcmsblock.displayPaging);
            self.find('input[name="display-round-image"]').prop('checked', listingcmsblock.displayRoundImage);
            self.find('input[name="display-read-more"]').prop('checked', listingcmsblock.displayReadMore);
            self.find('input[name="display-search-section"]').prop('checked', listingcmsblock.displaySearchSection);
            self.find('input[name="is-allow-display-more-than-15-columns"]').prop('checked', listingcmsblock.isAllowDisplayMoreThan15Columns);
            self.find('input[name="search-auto-suggest"]').prop('checked', listingcmsblock.SearchAutoSuggest);
            self.find('select[name="search-auto-suggest-field"]').val(listingcmsblock.SearchAutoSuggestField);
            self.find('input[name="display-number-result"]').prop('checked', listingcmsblock.DisplayNumberResults);
            self.find('input[name="display-summary"]').prop('checked', listingcmsblock.displaySummary);
            if (listingcmsblock.source != '2' && !self.find('form').hasClass('global-user')) {
                self.find('form').removeClass('soql-selected');
                self.find('select[name="source"] option.soql-selected').remove();
            }
            else if (!self.find('form').hasClass('global-user') && self.find('select[name="source"] option.soql-selected').length == 0) {
                var optionCalendar = '<option value="2" class="soql-selected">' + window.translation.soql_query_advanced + '</option>';
                self.find('select[name="source"]').append(optionCalendar);
            }
            self.find('select[name="source"]').val(listingcmsblock.source);
            if (listingcmsblock.source == "1") {
                self.find('.row_max_items_first_load').removeClass('hide-custom');
            }
            else {
                self.find('.row_max_items_first_load').addClass('hide-custom');
            }
            self.find('textarea[name="custom_card_template"]').val(listingcmsblock.cardTemplate);
            self.find('select[name="display-format"]').val(listingcmsblock.format);
            SetClassForSettingTable(listingcmsblock.format, self);
            self.find('select[name="open-url-in"]').val(listingcmsblock.OpenUrlIn);
            if (listingcmsblock.format == 6) {
                self.find('textarea[name="map-marker-url"]').text(listingcmsblock.calendarEventUrl);
            }
            else {
                self.find('textarea[name="calendar-event-url"]').text(listingcmsblock.calendarEventUrl);
                self.find('select[name="open-calendar-as"]').val(jsonResultDetail.cmsBlock.CalendarOpenAs);
            }
            self.find('input[name="display-export-csv"]').prop('checked', listingcmsblock.displayExportCSV);
            self.find('input[name="is-editable"]').prop('checked', listingcmsblock.editable);
            self.find('input[name="show-counts-per-filter"]').prop('checked', listingcmsblock.showCountsPerFilter);
            self.find('input[name="comments-in-two-columns"]').prop('checked', listingcmsblock.commentsInTwoColumns);
            self.find('select[name="OrderFieldCT"]').val(listingcmsblock.OrderFieldCT);
            self.find('input[name="display-dynamic-filter-val"]').val(listingcmsblock.DynamicFilters);
            listingcmsblock_load_and_set_dynamic_filter(self);
            self.find('select[name="OrderDirectionCT"]').val(listingcmsblock.OrderDirectionCT);
            self.find('select[name="FieldPosition"]').val(listingcmsblock.FieldPosition);
            self.find('input[name="use-local-list-view-data"]').prop('checked', listingcmsblock.useLocalListViewData);
            self.find('input[name="cache-results"]').prop('checked', listingcmsblock.CacheResults);
            self.find('select[name="cache_refresh_rate"]').val(listingcmsblock.CacheRefreshRate); 
            listingcmsblock_actions_cache_results_listview(listingcmsblock.CacheResults);
            self.find('input[name="use-auto-refresh"]').prop('checked', listingcmsblock.autoRefresh);
            self.find('select[name="autoRefreshFrequency"]').val(listingcmsblock.autoRefreshFrequency);
            self.find('input[name="channel-name"]').val(listingcmsblock.streamAPIChannelName);

            review_auto_refresh_frequency_setting(listingcmsblock.autoRefresh, self);

            listingcmsblock_actions_local_listview(listingcmsblock.useLocalListViewData);

            if (!listingcmsblock.commentsInTwoColumns) {
                $('label.value-right-alignment').text(window.translation.value_used_right);
                self.find('.help-text-two-columns').removeClass('hide-custom');
            }
            else {
                $('label.value-right-alignment').text(window.translation.value_second_author);
                self.find('.help-text-two-columns').addClass('hide-custom');
            }

            if (listingcmsblock.stylesCSSCustom) {
                //Show advanced settings container
                self.find('#listingcmsblock-advanced-settings').removeClass('is-hidden');

                editor.setValue(listingcmsblock.stylesCSSCustom);

                //Show advanced settings container
                self.find('#listingcmsblock-advanced-settings').addClass('is-hidden');
            }

            //Load salesforce object select
            if (listingcmsblock.salesforceObject && listingcmsblock.source === 1) {
                //Show rows of Salesforce Object
                self.find('.row_salesforce_source').removeClass('hide-custom');
                self.find('.column-display-round-image').addClass('hide-custom');
                self.find('.local_metadata').removeClass('hide-custom');

                //Hide rows of sorting options
                self.find('.row_order_sort').addClass('hide-custom');
                var isGlobaluser = $('#is-global-user').val() == 'true';

                if (listingcmsblock.format !== 0 && listingcmsblock.format !== 4) {
                    self.find('.row_custom_card_template').removeClass('hide-custom');
                    self.find('.row_custom_card_template .old-card-template').hide();
                    self.find('.available-fields-salesforce-view ul').empty();
                    self.find('.row_custom_column_settings').addClass('hide-custom');
                    self.find('.datatable-editable').addClass('hide-custom');
                    self.find('.display-export-csv-section').addClass('hide-custom');
                }
                else if (listingcmsblock.format == 4) {
                    self.find('.row_custom_column_settings').removeClass('hide-custom');
                    self.find('.datatable-editable').removeClass('hide-custom');
                    self.find('.row_custom_card_template').addClass('hide-custom');
                    self.find('.display-export-csv-section').removeClass('hide-custom');
                }
                else {
                    self.find('.row_custom_card_template').addClass('hide-custom');
                    self.find('.row_custom_column_settings').addClass('hide-custom');
                    self.find('.datatable-editable').addClass('hide-custom');
                    self.find('.display-export-csv-section').addClass('hide-custom');
                }

                //Add option card custom to select 'display-format' if not have the option
                if (self.find('select[name="display-format"]').find('option[value="3"]').length === 0) {
                    var optionCardCustom = '<option value="3">' + window.translation.custom_card_template + '</option>';
                    self.find('select[name="display-format"]').append(optionCardCustom);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }

                //Add option data table to select 'display-format' if not have the option
                if (self.find('select[name="display-format"]').find('option[value="4"]').length === 0) {
                    var optionDatatable = '<option value="4">' + window.translation.datatable + '</option>';
                    self.find('select[name="display-format"]').append(optionDatatable);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }

                //Add option data table to select 'display-format' if not have the option
                if (self.find('select[name="display-format"]').find('option[value="5"]').length === 0) {
                    var optionCalendar = '<option value="5">' + window.translation.calendar  + '</option>';
                    self.find('select[name="display-format"]').append(optionCalendar);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }

                //Add option map to select 'display-format' if not have the option
                if (self.find('select[name="display-format"]').find('option[value="6"]').length === 0) {
                    var optionMap = '<option value="6">' + window.translation.only_map + '</option>';
                    self.find('select[name="display-format"]').append(optionMap);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }

                //Add option "Comments Timeline" to select 'display-format' if not have the option
                if (self.find('select[name="display-format"]').find('option[value="7"]').length === 0 && (isGlobaluser || IS_LLAMAPI_ENABLED)) {
                    var optionComment = '<option value="7">' + window.translation.comments + (!IS_LLAMAPI_ENABLED ? ' ' + getGlobalRestrictedText() : '') + '</option>';
                    self.find('select[name="display-format"]').append(optionComment);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }

                //Add option Bar Chart to select 'display-format' if not have the option
                if (self.find('select[name="display-format"]').find('option[value="8"]').length === 0) {
                    var optionMap = '<option value="8">' + window.translation.bar_chart + '</option>';
                    self.find('select[name="display-format"]').append(optionMap);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }

                //Add option Column Chart to select 'display-format' if not have the option
                if (self.find('select[name="display-format"]').find('option[value="9"]').length === 0) {
                    var optionMap = '<option value="9">' + window.translation.column_chart + '</option>';
                    self.find('select[name="display-format"]').append(optionMap);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }

                //Add option Pie Chart to select 'display-format' if not have the option
                if (self.find('select[name="display-format"]').find('option[value="10"]').length === 0) {
                    var optionMap = '<option value="10">' + window.translation.pie_chart + '</option>';
                    self.find('select[name="display-format"]').append(optionMap);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }

                //Add option Pie Chart to select 'display-format' if not have the option
                if (self.find('select[name="display-format"]').find('option[value="11"]').length === 0) {
                    var optionMap = '<option value="11">' + window.translation.donut_chart + '</option>';
                    self.find('select[name="display-format"]').append(optionMap);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }


                if (self.find('select[name="display-format"]').find('option[value="12"]').length === 0) {
                    var optionMap = '<option value="12">' + window.translation.rss_feed + '</option>';
                    self.find('select[name="display-format"]').append(optionMap);
                    self.find('select[name="display-format"]').val(listingcmsblock.format);
                }

                SetClassForSettingTable(listingcmsblock.format, self);

                //Hide rows of "content types" and "include sub-types"
                self.find('select[name="page-categories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
                self.find('input[name="include-subcategories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');

                //Hide row with read more and summary fields
                self.find('.row_read_more_summary').addClass('hide-custom');

                //Load salesforce objects
                hideProcessingScreen = false;
                listingcmsblock_loadsalesforceobjects(self, listingcmsblock.salesforceObject, listingcmsblock.salesforceView, 'salesforce_object', 'salesforce_view');
            }
            else {
                //Hide rows of Salesforce Object
                self.find('.row_salesforce_source').addClass('hide-custom');
                self.find('.column-display-round-image').removeClass('hide-custom');
                self.find('.local_metadata').addClass('hide-custom');
                self.find('.row_custom_card_template').addClass('hide-custom');

                // Hide Column Settings
                self.find('.row_custom_column_settings').addClass('hide-custom');

                // Hide editable row
                self.find('.datatable-editable').addClass('hide - custom');

                // Hide Column Settings
                self.find('.display-export-csv-section').addClass('hide-custom');

                //Show rows of sorting options
                self.find('.row_order_sort').removeClass('hide-custom');

                //Hide option card custom of format select
                self.find('select[name="display-format"]').find('option[value="3"]').remove();

                //Hide option datatable of format select
                self.find('select[name="display-format"]').find('option[value="4"]').remove();

                //Hide option map of format select
                self.find('select[name="display-format"]').find('option[value="6"]').remove();

                var chartIds = [8, 9, 10, 11];
                //Hide char options in 'display-format' select
                chartIds.forEach(function (chartId) {
                    self.find('select[name="display-format"]').find('option[value="' + chartId + '"]').remove();
                });

                self.find('select[name="display-format"]').find('option[value="12"]').remove();

                //Display fields "content types" and "include sub-types"
                self.find('select[name="page-categories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');
                self.find('input[name="include-subcategories"]').parents('.small-6').first().find('.columns').addClass('hide-custom');

                //Show row with read more and summary fields
                self.find('.row_read_more_summary').removeClass('hide-custom');
            }
        });
    }

    //Populate info of block
    if (jsonResult.blockData) {
        var blockInfo = jsonResult.blockData;

        self.find('input[name="system_name"]').val(blockInfo.SystemName);
        self.find('input[name="sort_weight"]').val(blockInfo.Weight);
        if (blockInfo.ShowTitle) {
            self.find('input[name="listingcms_show_title"]').val(blockInfo.ShowTitle);
            self.find('input.listingcms-show-title').prop('checked', true);
        }
        else {
            self.find('input[name="listingcms_show_title"]').val(null);
            self.find('input.listingcms-show-title').prop('checked', false);
        }
        self.find('input[name="listingcms-enabled"]').prop('checked', blockInfo.Enabled);
        self.find('input[name="listingcms_visible_to"]').prop('checked', false);
        self.find('input#listingcms_visibility_' + blockInfo.Visibility).prop('checked', true);
        self.find('textarea[name="visibility_urls"]').val(blockInfo.VisibilityUrls);
        self.find('select[name="region"]').val(blockInfo.Region);

        if (blockInfo.Visibility != 0) {
            self.find('#listingcms_exception_url_container').removeClass('is-hidden');
        }
        else {
            self.find('#listingcms_exception_url_container').addClass('is-hidden');
        }
    }


    //Populate info of languages block
    if (jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            self.find('input[name="title-' + title.Language + '"]').val(title.Title);
        });
    }

    //Populate info of languages listingcms
    if (jsonResult.blockLanguageListingCMS.length > 0) {
        jsonResult.blockLanguageListingCMS.forEach(function (languageListing) {
            self.find('input[name="read-more-' + languageListing.Language + '"]').val(languageListing.TextReadMore);
            self.find('input[name="no-results-' + languageListing.Language + '"]').val(languageListing.TextNoResults);
            self.find('input[name="pre-content-' + languageListing.Language + '"]').val(languageListing.TextPreContent);

            self.find("#no-results-" + languageListing.Language).val(languageListing.TextNoResults);
            self.find("#no-results-" + languageListing.Language).text(languageListing.TextNoResults);

            self.find("#pre-content-" + languageListing.Language).val(languageListing.TextPreContent);
            self.find("#pre-content-" + languageListing.Language).text(languageListing.TextPreContent);
            //CKEDITOR.instances["no-results-" + languageListing.Language].setData(languageListing.TextNoResults);
        });
    }
}


// This is the first method called to the inital event
function listingcmsblock_load_records_sfview(isAutoRefreshAction, listingCMSId, isAutoSaveAction, partialUpdate) {
    if ($('.listingcmsblock.SALESFORCE').length > 0 || $('.listingcmsblock.SOQL').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        if (isAutoRefreshAction === undefined)
            isAutoRefreshAction = false;


        // Checking if page have chart to load library, if is autoRefreshaction  the chart library already is loaded
        if (isAutoRefreshAction === false && $('.listingcmsblock .chart').length > 0 && typeof google === 'undefined') {
            // This script must be called once by page. 
            $.getScript("https://www.gstatic.com/charts/loader.js")
                .done(function (script, textStatus) {
                    // Load the Visualization API and the corechart package. At this moment the v49 is the most stable version
                    google.charts.load('49', {
                        packages: ['corechart', 'bar'],
                    }).then(function () {
                        iterateListingCmsBloks(urlSite, false);
                    });
                })
                .fail(function (jqxhr, settings, exception) {
                    console.log('exception', exception);
                    Swal.fire({
                        title: "Error",
                        icon: "error",
                        text: window.translation.chart_loading_error,
                        confirmButtonText: "Ok"
                    });
                });
        } else {

            if (isAutoRefreshAction === true && isUserIdle === true) {
                return;
            } else if (isAutoRefreshAction === true) {
                var self = $('.auto-refresh-' + listingCMSId);
                processListingCmsBlok(self, urlSite, isAutoRefreshAction, false);
                
            } else if (isAutoSaveAction === true) {
                var self = $('.auto-save-' + listingCMSId);
                processListingCmsBlok(self, urlSite, false, isAutoSaveAction);
                

            } else {
                if (partialUpdate) {
                    var self = $('input[name="listingcmsid"][value="' + listingCMSId + '"]').parents().first('.listingcmsblock');
                    if (self.find('input[name="totalItems"]').length > 0) {
                        self.find('input[name="totalItems"]').val('');
                    }
                    if (self.find('.paging_salesforce').length > 0) {
                        self.find('.paging_salesforce').remove();
                    }
                    processListingCmsBlok(self, urlSite, isAutoRefreshAction, isAutoSaveAction);
                }
                else if (sessionVarsStatus < 2 && xhrSessionVars !== undefined && xhrSessionVars.length > 0) {
                    $.when.apply($, xhrSessionVars).done(function () {
                        iterateListingCmsBloks(urlSite, isAutoSaveAction);
                    });

                } else {
                    iterateListingCmsBloks(urlSite, isAutoSaveAction);

                }
            }

        }
    }
}

function iterateListingCmsBloks(urlSite, isAutoSaveAction) {
    $('.listingcmsblock.SALESFORCE,.listingcmsblock.SOQL').each(function () {
        var self = $(this);
        processListingCmsBlok(self, urlSite, false, isAutoSaveAction);
    });
}

function PopulateDeveloperName(self, currentDevName) {
    self.find('input[name="salesforce_view_name"]').val(currentDevName);
}

function EventsDeveloperName() {
    $(document).on('change', '#listing-cms-block-conf select[name="salesforce_view"]', function () {
        var currentDevName = $('#listing-cms-block-conf select[name="salesforce_view"] option:selected').data('developer-name');
        $('#listing-cms-block-conf input[name="salesforce_view_name"]').val(currentDevName);
    });
}


function processDataForRowUpdated(record) {
    for (var i = 0; i < record.length; ++i) {
        var currentData = record[i];
        if (currentData.startsWith('{') && currentData.endsWith('}')) {
            var obj = JSON.parse(currentData);
            record[i] = obj;
            /*if (i == 1 && obj.display !== undefined && obj.display !== null) {
                record[i] = obj.display;
            }*/
        }
    }
    return record;
}

function listingcmsblock_dynamic_filters_perform_search(self, filterObject) {
    var totalItems = self.find('input[name="totalItems"]').val();
    var itemsPerPage = self.find('input[name="itemsPerPage"]').val();
    var displayPaging = self.find('input[name="displayPaging"]').val();
    self.find('label.searh-result-number-label').html('');
    let isForSOQL = false;
    if (self.hasClass('SOQL'))
        isForSOQL = true;
    var totalFiltered = totalItems;
    itemsPerPage = (itemsPerPage <= 0) ? totalItems : itemsPerPage;
    var requestReset = false;

    //self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').removeAttr('style');
    if (!filterObject || filterObject.length == 0) {
        self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').removeClass('hidden-by-filter');
        if (displayPaging == 'True' && self.find('.search-section input[type="text"]').length >> 0 && self.find('.search-section input[type="text"]').val() != '') {
            requestReset = true;
            self.find('.search-section button.button').trigger('click');
        }
    }
    else {
        totalFiltered = 0;
        self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').addClass('hidden-by-filter');
        self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').each(function () {
            var itemVisible = true;
            var itemList = $(this);
            filterObject.forEach(function (itemVal) {
                var valueInfo = itemList.find('.listing-filter-values[data-field="' + itemVal.Field + '"]').val();
                itemVisible = itemVisible && validate_listing_search_by_filters(valueInfo, itemVal, ',', isForSOQL);
            });

            if (itemVisible) {
                totalFiltered++;
                itemList.removeClass('hidden-by-filter');
            }
        });
    }

    if (displayPaging == 'True' && !requestReset) {
        var counterVisible = 0;
        //self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').removeAttr('style');
        self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').addClass('is-hidden');
        self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').each(function () {
            if (!$(this).hasClass('hidden-by-filter')) {
                if (counterVisible < itemsPerPage) {
                    $(this).removeClass('is-hidden');
                }
                counterVisible++;
            }
        });
        listingcmsblock_update_pagelinks_action(self, totalFiltered, itemsPerPage);
    }
}

function initializeRangePicker(dateFormat, date_language, currentNameItem, initialDate, finalDate) {
    var optionsDatePicker = {
        format: dateFormat,
        disableDblClickSelection: true,
        language: date_language,
        weekStart: get_start_day_of_week_from_locale()
        //,onRender: function (date) {

        //    var styleDisplay = '';
        //    if (targetDatePicker != null && targetDatePicker != undefined) {
        //        if (!equalDates(date, targetDatePicker))
        //            styleDisplay = 'disabled';
        //    }
        //    return styleDisplay;
        //}

    };

    optionsDatePicker.startDate = initialDate;
    optionsDatePicker.endDate = finalDate;
    $('input[name="' + currentNameItem + '"]').fdatepicker(
        optionsDatePicker
    );

}


function getTicks(currentValue, dateformatVal, isFrom, justValue) {

    if (currentValue && currentValue != '') {

        var dateformatVal = window.MomentDateFormat;
        var momentDate = moment(currentValue, dateformatVal);
        var dateValue = momentDate.toDate();
        var timezoneOffset = dateValue.getTimezoneOffset();
        var offsetValue = 0;
        var ticksPerMillisecond = 10000;
        if (timezoneOffset > 0) {
            offsetValue = - timezoneOffset;
        }
        else {
            offsetValue = timezoneOffset;
        }
        if (!justValue) {
            dateValue.setMinutes(dateValue.getMinutes() + offsetValue);
            if (!isFrom) {
                dateValue.setMinutes(dateValue.getMinutes() + (24 * 60));
            }
        }
        var epochTicks = 621355968000000000;
        var milliseconds = dateValue.getTime();
        
        var ticks = (epochTicks + (milliseconds * ticksPerMillisecond) + offsetValue);
        
        return ticks;
    }
    else {
        return null;
    }
}
function rangeFilterBehavior() {
    $('.facet-range-input').on('change', function (e) {
        var listingCMS = $(this).attr('data-listing-cms-id');
        var isFrom = $(this).hasClass('facet-range-from');
        var facetId = $(this).attr('data-facet-id');
        var currentValue = $(this).val();
        var relatedElement = isFrom ? $('#facet-to' + listingCMS + '-' + facetId) : $('#facet-from' + listingCMS + '-' + facetId);
        var valueRelated = relatedElement.val();

        var dateformatVal = window.MomentDateFormat;
        var momentDate = moment(currentValue, dateformatVal);
        
        var currentTicks = getTicks(currentValue, window.MomentDateFormat, isFrom); 
        var relatedTicks = getTicks(valueRelated, window.MomentDateFormat, isFrom); 

        var initialDate = isFrom ? currentTicks : relatedTicks;
        var finalDate = isFrom ? relatedTicks : currentTicks;


        if (initialDate != null || finalDate != null) {
            $('#facet-id-' + listingCMS + '-' + facetId + ' a.clear-facets').removeClass('hide-custom');
        }
        else {
            $('#facet-id-' + listingCMS + '-' + facetId + ' a.clear-facets').addClass('hide-custom');
        }
        if (initialDate != null && finalDate != null ||
            initialDate == null && finalDate == null)
        {
            var self = $('input[name="listingcmsid"][value="' + listingCMS + '"]').parents('.listingcmsblock');
            var currentFormat = self.find('input[name="listingFormat"]').val();
            if (currentFormat == 'CARD' || currentFormat == 'GRID') {
                var FilterObject = GetAdvancedFilterObject(self);
                listingcmsblock_dynamic_filters_perform_search(self, FilterObject);
            }
            else {
                var idTable = '#dataTable' + listingCMS;
                var datatable = $(idTable).DataTable();
                
                datatable.draw();
            }
        }

    });
}

function getCurrentDateTimeFormatted() {
    const pad = (number) => (number < 10 ? '0' + number : number);
    const now = new Date();
    return now.getFullYear() + '-' +
        pad(now.getMonth() + 1) + '-' +
        pad(now.getDate()) + ' ' +
        pad(now.getHours()) + ':' +
        pad(now.getMinutes()) + ':' +
        pad(now.getSeconds());
}
function listingcmsFacet_LoadDefaults() {
    $('.new-facets-section-content .default-from').each(
        function (e) {
            if ($(this).val() != '') {
                var myDate = new Date($(this).val().substring(0, 4), $(this).val().substring(4, 6) - 1, $(this).val().substring(6, 8))
                $('[name="' + $(this).attr('data-input-name') + '"]').val((moment(myDate).format(window.MomentDateFormat)));
                $('[name="' + $(this).attr('data-input-name') + '"]').trigger('change');

                var valueTo = $(this).attr('name').replace('from', 'to');
                var myDate2 = new Date($('input[name="' + valueTo + '"]').val().substring(0, 4), $('input[name="' + valueTo + '"]').val().substring(4, 6) - 1, $('input[name="' + valueTo + '"]').val().substring(6, 8))
                $('[name="' + $('input[name="' + valueTo + '"]').attr('data-input-name') + '"]').val((moment(myDate2).format(window.MomentDateFormat)));

                $('input[name="' + valueTo + '"]').parents('.fieldset-content').first().find('.facet-range-input').trigger('change');
            }
        }
    )
}
function open_close_more_filter_facets(self){

    let $container = self.find('.facets-section-content-top .row');
    let $children = $container.children();
    let topOffset = $children.first().offset().top;
    let inSecondRow = false;
    $children.each(function() {
        let $el = $(this);
        if (!inSecondRow && $el.offset().top > topOffset) {
            inSecondRow = true;
        }
        if (inSecondRow) {
            $el.addClass('hidden-row').hide();
        }
    });
    self.find(".more-filters").click(function(e) {
        e.preventDefault();
        const $hiddenItems = $container.children('.hidden-row');
        if ($hiddenItems.is(':visible')) {
            $hiddenItems.slideUp(200);
            $(this).find('.ss-add').text('+');
        } else {
            $hiddenItems.slideDown(200);
            $(this).find('.ss-add').text('-');
        }
    });
}

function listingcmsblock_load_dynamic_facets(self, dynamicfacetsString, position, presetFilters) {
    var facetRender = '<div id="facet-id-@listing-id@-@id@" class="fieldset-step @special-facet-class@">'
        + '<fieldset data-title-fieldset="facet-id-@listing-id@-@id@">'
        + '<legend class="hide">@display-name@</legend>'
        + '<div class="fieldset-title">'
        + '<legend tabindex="0" aria-label="@display-name@">@display-name@'
        + '<a class="clear-facets hide-custom">' + window.translation.clear + '</a>'
        + '</legend>'
        + '<div class="open-close-button expandable-button-section">'
        + '<a class="open-button" aria-label="@display-name@" title="@display-name@" data-expandable="section-content-facet-@listing-id@-@id@" href="#" aria-expanded="false" aria-controls="section-content-facet-@listing-id@-@id@"></a>'
        + '</div>'
        + '</div>'
        + '<div id="section-content-facet-@listing-id@-@id@" role="group" aria-label="@display-name@" class="fieldset-content expandable" aria-hidden="true">'
        + '<ul>'
        + '@item-list@'
        + '</ul>'
        + '</div>'
        + '</fieldset>'
        + '</div>';
    var innerFacetRender = '<li>'
        + '<div class="input-group input-group-checkbox minimal-line">'
        + '<input id="facet-id-@listing-id@-@id@-@option-id@" data-Value="@option-value@" name="facet-id-@listing-id@-@id@" type="checkbox" value="@option-value@" data-value-translation="@value-translation@" class="facet-listing-option" data-field-name="@field-name@" data-field-type="@field-type@" />'
        + '<label class="view-identifier" for="facet-id-@listing-id@-@id@-@option-id@">'
        + '<span class="text">@option-label@</span>'
        + '</label>'
        + '</div>'
        + '</li>';
    var innerDateFacetRender = '<li>'
        + '  <div id="date-section-content" class="" aria-hidden="false" style="display: block;">'
        + '    <div class="row inputs-row">'
        + '      <div class="small-12 medium-3 columns">'
        + '        <label class="for-date-range" for="facet-from@listing-id@-@id@" aria-label="' + window.translation.from_label + '">'
        + '        <span class="left-label">' + window.translation.from_label + '</span>'
        + '        </label>'
        + '      </div>'
        + '      <div class="small-12 medium-9 columns date-field-start">'
        + '        <span class="date-picker"></span>'
        + '        <input type="text" class="date-picker-input facet-range-from facet-range-input" id="facet-from@listing-id@-@id@" name="facet-from@listing-id@-@id@" placeholder="' + window.translation.from_label + '" value="" aria-label="' + window.translation.from_label + '" data-field-name="@field-name@" data-field-type="@field-type@" data-listing-cms-id="@listing-id@" data-facet-id="@id@" />'
        + '        <input type="hidden" class="default-from" name="facet-from-default-@listing-id@-@id@" value="@default-from@" data-input-name="facet-from@listing-id@-@id@"/>'
        + '      </div>'
        + '    </div>'
        + '    <div class="row inputs-row">'
        + '      <div class="small-12 medium-3 columns">'
        + '        <label class="for-date-range" for="facet-to@listing-id@-@id@" aria-label="' + window.translation.to_label + '">'
        + '        <span class="right-label">' + window.translation.to_label + '</span>'
        + '        </label>'
        + '      </div>'
        + '      <div class="small-12 medium-9 columns date-field-end">'
        + '        <span class="date-picker"></span>'
        + '        <input type="text" class="date-picker-input facet-range-to facet-range-input" id="facet-to@listing-id@-@id@" name="facet-to@listing-id@-@id@" placeholder="' + window.translation.to_label + '" value="" aria-label="' + window.translation.to_label + '" data-field-name="@field-name@" data-field-type="@field-type@"  data-listing-cms-id="@listing-id@" data-facet-id="@id@" />'
        + '        <input type="hidden" class="default-to" name="facet-to-default-@listing-id@-@id@" value="@default-to@" data-input-name="facet-to@listing-id@-@id@" />'
        + '      </div>'
        + '    </div>'
        + '  </div>'
        + '</li>';

    var currentLanguage = window.translation['language_iso'];

    var listingcmsId = self.find('input[name="listingcmsid"]').val();
    var facetSection = self.find('#facets-section-content-' + position);
    var htmlToAdd = '';
    var index = 0;
    
    var dynamicFacets = JSON.parse(dynamicfacetsString);
    if (dynamicFacets) {
        dynamicFacets.forEach(function (item) {
            var bodyFacet = facetRender;
            bodyFacet = bodyFacet.replaceAll('@special-facet-class@', '');
            bodyFacet = bodyFacet.replaceAll('@id@', item.Configuration.Id);
            bodyFacet = bodyFacet.replaceAll('@listing-id@', listingcmsId);
            var facetLabelValue = item.Configuration.Label[currentLanguage] ? item.Configuration.Label[currentLanguage] : item.Configuration.Label['en-US'];
            bodyFacet = bodyFacet.replaceAll('@display-name@', facetLabelValue);
            var optionList = '';
            var indexOpt = 0;
            if (item.Values && (item.Configuration.Type == 'picklist' || item.Configuration.Type == 'multipicklist')) {
                item.Values.forEach(function (itemOpt) {
                    if (item.Configuration.NumberOfResults != 0) {
                        var optionLabel = innerFacetRender;
                        optionLabel = optionLabel.replaceAll('@id@', item.Configuration.Id);
                        optionLabel = optionLabel.replaceAll('@listing-id@', listingcmsId);
                        optionLabel = optionLabel.replaceAll('@option-id@', indexOpt);
                        optionLabel = optionLabel.replaceAll('@option-value@', itemOpt.Value);
                        optionLabel = optionLabel.replaceAll('@field-name@', item.Configuration.Field);
                        optionLabel = optionLabel.replaceAll('@field-type@', item.Configuration.Type);
                        optionLabel = optionLabel.replaceAll('@value-translation@', itemOpt.Label);
                        indexOpt++;
                        var optionText = itemOpt.Label;
                        if (item.Configuration.IncludeResultsNumber) {
                            optionText += ' (' + itemOpt.NumberOfResults + ')';
                        }
                        optionLabel = optionLabel.replaceAll('@option-label@', optionText);
                        if (!item.Configuration.ShowOnlyWithRecords || item.Configuration.ShowOnlyWithRecords && itemOpt.NumberOfResults > 0) {
                            optionList += optionLabel;
                        }

                    }
                });
            }
            else if (item.Configuration.Type == 'date-range') {
                var optionLabel = innerDateFacetRender;
                optionLabel = optionLabel.replaceAll('@id@', item.Configuration.Id);
                optionLabel = optionLabel.replaceAll('@listing-id@', listingcmsId);
                optionLabel = optionLabel.replaceAll('@option-id@', indexOpt);
                optionLabel = optionLabel.replaceAll('@field-name@', item.Configuration.Field);
                optionLabel = optionLabel.replaceAll('@field-type@', item.Configuration.Type);
                var defaultFrom = '';
                var defaultTo = '';
                if (item.Configuration.PredefinedValue && item.Configuration.PredefinedValue.indexOf('%') != -1) {
                    defaultFrom = item.Configuration.PredefinedValue.split('%')[0];
                    defaultTo = item.Configuration.PredefinedValue.split('%')[1];
                }
                optionLabel = optionLabel.replaceAll('@default-from@', defaultFrom);
                optionLabel = optionLabel.replaceAll('@default-to@', defaultTo);
                indexOpt++;
                optionList += optionLabel;
            }

            bodyFacet = bodyFacet.replaceAll('@item-list@', optionList);

            htmlToAdd += bodyFacet;
            index++;
        });

        var colValue = Math.trunc(12 / index);
        if (colValue == 0) {
            colValue = 1;
        }
        facetSection.empty().append(htmlToAdd);

        expandable_behaviors();

        date_picker_widget();

        rangeFilterBehavior();

        var isMobile = false;

        if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)
            || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0, 4))) {
            isMobile = true;
        }

        if (!isMobile) {
            facetSection.find('.open-button').trigger('click');
        }
        facetSection.removeClass('hide');

        var keepuserfilter = self.find('input[name="keepUserFilters"]').val().toLowerCase() === "true";

        if (keepuserfilter) {
            var keyStorageFacets = 'userfacets-' + listingcmsId;
            var data = localStorage.getItem(keyStorageFacets);

            if (data !== undefined && data !== null && data !== '') {
                var facetsId = data.split(',')

                for (let i = 0; i < facetsId.length; i++) {
                    if ($('input[id="' + facetsId[i] + '"]').length > 0) {
                        $('input[id="' + facetsId[i] + '"]').prop('checked', true)
                    }
                }

                //lets go if is neccesary show the clear buttons
                //facets-section-content  , fieldset-step   , clear-facets
                if ($('.new-facets-section-content div.fieldset-step').length > 0) {
                    $('.new-facets-section-content div.fieldset-step').each(function () {

                        if ($(this).find('input.facet-listing-option:checked').length > 0)
                            $(this).find('.clear-facets').removeClass('hide-custom')
                    })

                }
            }
        }

        if (presetFilters) {
            presetFilters = presetFilters ? JSON.parse(presetFilters) : [];
            const keys = Object.keys(presetFilters);
            keys.forEach(function (item) {
                var currentValues = presetFilters[item] ? presetFilters[item].split(',') : [];
                currentValues.forEach(function (myVal) {
                    let checkExist = facetSection.find('#section-content-facet-' + listingcmsId + '-' + item + ' input[type="checkbox"][value="' + decodeURIComponent(myVal) + '"]');
                    if (checkExist.length>0) {
                        checkExist.prop('checked', true);
                        checkExist.trigger('change');
                    }
                })
                
            });
        }

        listingcmsFacet_LoadDefaults();
    }
}

function listingcmsblock_load_dynamic_filters(self, dynamicFilterDetailVal, presetFilterDefinition) {
    var listingcmsId = self.find('input[name="listingcmsid"]').val();
    var filterSection = self.find('.filters-section');
    var dropdownToAdd = '<div class="row">';
    var index = 0;
    var dynamicFilterDetail = JSON.parse(dynamicFilterDetailVal);
    if (dynamicFilterDetail) {
        var keepuserfilter = self.find('input[name="keepUserFilters"]').val().toLowerCase() === "true";

        dynamicFilterDetail.forEach(function (item) {
            dropdownToAdd += '<div class="small-12 medium-%valcol% columns">'
            //dropdownToAdd += '<label for="filter-' + item.Field + '">' + item.Label + '</label>';
            dropdownToAdd += '<select aria-label="'+item.Label+'" id="filter-' + listingcmsId + '-' + item.Field + '" name="filter-' + listingcmsId + '-' + item.Field + '" class="listing-dynamic-filters" data-field-id="' + item.Field + '" data-field-type="' + item.Type + '" multiple>';
            //dropdownToAdd += '<option value="" selected>' + item.Label.toUpperCase() + '</option>';
            item.Values.forEach(function (itemOpt) {
                if (itemOpt.NumberOfResults != 0) {
                    var optionLabel = itemOpt.Label;
                    if (self.find('input[name="showCountsPerFilter"]').val() == 'true') {
                        optionLabel = itemOpt.Label + ' ' + '(' + itemOpt.NumberOfResults + ')';
                    }
                    dropdownToAdd += '<option  value="' + itemOpt.Value + '">' + optionLabel + '</option>';
                }
            });
            dropdownToAdd += '</select></div>';

            index++;
        });
        dropdownToAdd += '</div>';

        var colValue = Math.trunc(12 / index);
        if (colValue == 0) {
            colValue = 1;
        }
        dropdownToAdd = dropdownToAdd.replaceAll('%valcol%', colValue)
        filterSection.empty().append(dropdownToAdd);
        

    }

    let theArePresetFilters = false;
    let setPrefilters = false;

    if (presetFilterDefinition !== undefined && presetFilterDefinition !== null) {
        presetFilterDefinition = JSON.parse(presetFilterDefinition)
        theArePresetFilters = true;
    }

    if (keepuserfilter) {
        let nullUserFilters = 0;
        let totalUserFilters = 0;

        self.find('select.listing-dynamic-filters').each(function () {
            totalUserFilters++;
            let dataField = $(this).data("field-id");
            var keyStorageFilters = 'userfilters-filter-' + listingcmsId + "-" + dataField;
            data = localStorage.getItem(keyStorageFilters);
            if (data == null && presetFilterDefinition !== undefined && presetFilterDefinition !== null) {
                nullUserFilters++;
                set_selected_values_for_filters($(this), presetFilterDefinition[dataField]);
            } else {
                set_selected_values_for_filters($(this), data);
            }
        });

        if (nullUserFilters > 0 && nullUserFilters == totalUserFilters) {
            setPrefilters = true;
        }

    } else
        setPrefilters = true;

    if (setPrefilters === true && theArePresetFilters == true) {
        const keys = Object.keys(presetFilterDefinition);

        keys.forEach(key => {
            const value = presetFilterDefinition[key];

            let filterElement = self.find('select.listing-dynamic-filters[data-field-id="' + key + '"]');
            if (filterElement != null && filterElement !== undefined && filterElement.length > 0) {
                set_selected_values_for_filters(self, value);
            }
                
        });
    }

    dynamicFilterDetail.forEach(function (item) {
        if ($('#filter-' + listingcmsId + '-' + item.Field).length > 0) {
            new SlimSelect({
                select: '#filter-' + listingcmsId + '-' + item.Field,
                placeholder: item.Label.toUpperCase(),
                showSearch: false
            });
        }
    });

    if (setPrefilters === true && theArePresetFilters == true) {
        var idTable = '#dataTable' + listingcmsId;
        var datatable = $(idTable).DataTable();
        datatable.draw();
    }

}

function listingcmsblock_load_top_facets(self, dynamicFilterDetailVal, presetFilterDefinition) {
    var listingcmsId = self.find('input[name="listingcmsid"]').val();
    var filterSection = self.find('.facets-section-content-top');
    var dropdownToAdd = '<div class="row">';
    var index = 0;
    var dynamicFilterDetail = JSON.parse(dynamicFilterDetailVal);
    var currentLanguage = window.translation['language_iso'];
    if (dynamicFilterDetail) {
        var keepuserfilter = self.find('input[name="keepUserFilters"]').val().toLowerCase() === "true";

        dynamicFilterDetail.forEach(function (item) {
            var facetLabelValue = item.Configuration.Label[currentLanguage] ? item.Configuration.Label[currentLanguage] : item.Configuration.Label['en-US'];
            dropdownToAdd += '<div class="small-12 medium-%valcol% columns">'
            //dropdownToAdd += '<label for="filter-' + item.Field + '">' + item.Label + '</label>';
            dropdownToAdd += '<select aria-label="' + facetLabelValue + '" id="filter-' + listingcmsId + '-' + item.Configuration.Field + '" name="filter-' + listingcmsId + '-' + item.Configuration.Field + '" class="listing-dynamic-filters" data-field-id="' + item.Configuration.Field + '" data-field-type="' + item.Configuration.Type + '" data-facet-id="' + item.Configuration.Id + '" multiple>';
            //dropdownToAdd += '<option value="" selected>' + item.Label.toUpperCase() + '</option>';
            item.Values.forEach(function (itemOpt) {
                if (itemOpt.NumberOfResults != 0) {
                    var optionLabel = itemOpt.Label;
                    if (item.Configuration.IncludeResultsNumber) {
                        optionLabel = itemOpt.Label + ' ' + '(' + itemOpt.NumberOfResults + ')';
                    }
                    dropdownToAdd += '<option data-value-translation="' + itemOpt.Label + '" value="' + itemOpt.Value + '">' + optionLabel + '</option>';
                }
            });
            dropdownToAdd += '</select></div>';

            index++;
        });
        dropdownToAdd += '</div>';

        var colValue = Math.trunc(12 / index);
        if (colValue == 0) {
            colValue = 1;
        }
        dropdownToAdd = dropdownToAdd.replaceAll('%valcol%', colValue)
        filterSection.empty().append(dropdownToAdd);

        setTimeout(function() {
            let firstTop = filterSection.find('.row').children().first().offset().top;
            let hasMoreRows = filterSection.find('.row').children().filter(function(i, el) {return $(el).offset().top > firstTop; }).length > 0;
            if(hasMoreRows){
                filterSection.prepend('<span class="more-filters"><div class="ss-add">+</span>');
                open_close_more_filter_facets(self);
            }
        }, 100);
    }

    let theArePresetFilters = false;
    let setPrefilters = false;

    if (presetFilterDefinition !== undefined && presetFilterDefinition !== null) {
        presetFilterDefinition = JSON.parse(presetFilterDefinition)
        theArePresetFilters = true;
    }

    if (keepuserfilter) {
        let nullUserFilters = 0;
        let totalUserFilters = 0;

        self.find('select.listing-dynamic-filters').each(function () {
            totalUserFilters++;
            let dataField = $(this).data("field-id");
            var keyStorageFilters = 'userfilters-filter-' + listingcmsId + "-" + dataField;
            data = localStorage.getItem(keyStorageFilters);
            if (data == null && presetFilterDefinition !== undefined && presetFilterDefinition !== null) {
                nullUserFilters++;
                set_selected_values_for_filters($(this), presetFilterDefinition[dataField]);
            } else {
                set_selected_values_for_filters($(this), data);
            }
        });

        if (nullUserFilters > 0 && nullUserFilters == totalUserFilters) {
            setPrefilters = true;
        }

    } else
        setPrefilters = true;

    if (presetFilterDefinition && presetFilterDefinition!=null && (setPrefilters === true || theArePresetFilters == true)) {
        const keys = Object.keys(presetFilterDefinition);

        keys.forEach(key => {
            const value = presetFilterDefinition[key];

            let filterElement = self.find('select.listing-dynamic-filters[data-field-id="' + key + '"]');
            let filterElementFacet = self.find('select.listing-dynamic-filters[data-facet-id="' + key + '"]');
            if (filterElementFacet != null && filterElementFacet !== undefined && filterElementFacet.length > 0) {
                new_set_selected_values_for_filters(self, value, key);
            }
            else if (filterElement != null && filterElement !== undefined && filterElement.length > 0) {
                set_selected_values_for_filters(self, value);
            }

        });
    }

    dynamicFilterDetail.forEach(function (element) {
        var item = element.Configuration;
        var facetLabelValue = element.Configuration.Label[currentLanguage] ? element.Configuration.Label[currentLanguage] : element.Configuration.Label['en-US'];
        if ($('#filter-' + listingcmsId + '-' + item.Field).length > 0) {
            new SlimSelect({
                select: '#filter-' + listingcmsId + '-' + item.Field,
                placeholder: facetLabelValue.toUpperCase(),
                showSearch: false
            });
        }
    });

    if (setPrefilters === true && theArePresetFilters == true) {
        var idTable = '#dataTable' + listingcmsId;
        var datatable = $(idTable).DataTable();
        datatable.draw();
    }

}


function set_selected_values_for_filters(self, data) {
    if (data !== undefined && data !== null && data !== '') {
        var filtersValue = data.split(',');

        for (let i = 0; i < filtersValue.length; i++) {
            let optionItem = self.find('option[value="' + filtersValue[i] + '"]');
            if (optionItem !== null && optionItem !== undefined) {
                optionItem.prop("selected", "selected");
            }
        }
    }
}

function new_set_selected_values_for_filters(self, data, key) {
    if (data !== undefined && data !== null && data !== '') {
        var filtersValue = data.split(',');
        var triggerItem = false;
        for (let i = 0; i < filtersValue.length; i++) {
            let optionItem = self.find('select[data-facet-id="' + key + '"] option[value="' + decodeURIComponent(filtersValue[i]) + '"]');
            if (optionItem !== null && optionItem !== undefined) {
                optionItem.prop("selected", "selected");
                triggerItem = true;
            }
        }
        if (triggerItem)
            self.find('select[data-facet-id="' + key + '"]').trigger('change');
    }
}


function processListingCmsBlok(self, urlSite, isAutoRefreshAction, isAutoSaveAction) {
    var listingcmsId = self.find('input[name="listingcmsid"]').val();
    var loadOnDatatable = self.find('input[name="loadOnDatatable"]').val() == 'true';
    var traceToStore = 'LISTING' + (loadOnDatatable ? '(D)' : '')+'>' + listingcmsId + ';BEGIN>' + getCurrentDateTimeFormatted() + ';';
    var blockId = self.attr('data-block-id');
    var objectSF = self.find('input[name="salesforce_object"]').val();
    var objectSFView = self.find('input[name="salesforce_view"]').val();
    var format = self.find('input[name="listingFormat"]').val();
    var totalItems = self.find('input[name="totalItems"]').val();
    var itemsPerPage = self.find('input[name="itemsPerPage"]').val();
    var customCardTemplate = self.find('input[name="custom_card_template"]').val();
    var displayPaging = self.find('input[name="displayPaging"]').val();
    var displayRoundImage = self.find('input[name="displayRoundImage"]').val();
    var displaySearchSectionValue = self.find('input[name="displaySearchSection"]').val();
    var searchAutoSuggestValue = self.find('input[name="searchAutoSuggest"]').val();
    var searchAutoSuggestFieldValue = self.find('input[name="searchAutoSuggestField"]').val();
    var specialLogTrace = self.find('input[name="specialLogTrace"]').val(); 
    var displayExportCSVValue = self.find('input[name="displayExportCSV"]').val();
    var enforcedbyContactOrAccount = self.find('input[name="enforcedbyContactOrAccount"]').val();
    var autoSave = self.find('input[name="isAutoSave"]').val();
    var displaySaveButton = self.find('input[name="displaySaveButton"]').val();
    var saveAfter = self.find('input[name="autoSaveAfter"]').val();
    var secondaryDisplayFormat = null;
    if (self.find('input[name="second_display_format"]').length > 0) {
        secondaryDisplayFormat = self.find('input[name="second_display_format"]').val();
    }
    var parametersUrl = getQueryString();
    var parametersUrlString = (Object.keys(parametersUrl).length) ? JSON.stringify(parametersUrl) : '';
    var parametersRequiredByBlock = [];
    var parametersRequiredByBlockForInput = (self.find('input[name="requireURLParameters"]').val()) ? self.find('input[name="requireURLParameters"]').val().split(',') : [];
    for (var i = 0; i < parametersRequiredByBlockForInput.length; i++) {
        if (parametersRequiredByBlock.indexOf(parametersRequiredByBlockForInput[i]) == -1) {
            parametersRequiredByBlock.push(parametersRequiredByBlockForInput[i]);
        }
    }
    var fieldEnforceFilteringContactId = self.find('input[name="fieldSFForEnforceContactId"]').val();
    var fieldEnforceFilteringAccountId = self.find('input[name="fieldSFForEnforceAccountId"]').val();
    var contactIdUserLogged = sessionStorage.getItem('Salesforce Contact ID');
    var accountIdUserLogged = sessionStorage.getItem('Salesforce Organization ID');
    var accountContactLogged = sessionStorage.getItem('Salesforce Contact Account ID');

    var accountNameUserLogged = null;
    var autoRefresh = self.find('input[name="AutoRefresh"]').val() == "True" ? true : false;
    var lastMaxSystemStamp = "";
    var autoRefreshFrequency = self.find('input[name="AutoRefreshFrequency"]').val();
    var channelName = self.find('input[name="ChannelName"]').val();
    var lastFetchTime = self.find('input[name="LastFetchTime"]').val();
    var calendarOpenAs = self.find('input[name="CalendarOpenAs"]').val();
    var sourceListing = self.find('input[name="source"]').val();
    var buttonposition = self.find('input[name="buttonposition"]').val();
    if (calendarOpenAs === undefined || calendarOpenAs === '' || calendarOpenAs === null)
        calendarOpenAs = 'Month';

    if (autoRefresh === true) {
        if (isAutoRefreshAction === true) {
            lastMaxSystemStamp = self.find('input[name="LastMaxSystemStamp"]').val();

            if (autoRefreshBlocks[listingcmsId].counter < MAX_AUTO_REFRESH_CALLS) {
                autoRefreshBlocks[listingcmsId].counter++;
            } else {
                cancel_future_autorefresh(listingcmsId);
                //removing to avoid next iterations
                return;
            }

        }
        else if (autoRefreshBlocks[listingcmsId] === undefined)// it means is the first time, so we need schedule the cron
        {
            autoRefreshBlocks[listingcmsId] = { frequency: autoRefreshFrequency, timerId: -1, counter: 0 };
        }
    }

    var CustomFilters = self.find('input[name="CustomFilters"]').val();

    var isNeededContactAccountId = false;

    if (CustomFilters) {
        CustomFilters = JSON.parse(CustomFilters);

        if (CustomFilters != null && CustomFilters !== undefined) {
            isNeededContactAccountId = CustomFilters.filters.findIndex(filter => filter.comparisonValue === "s:currentContactAccountID") > -1;
        }
    }

    if (fieldEnforceFilteringAccountId || isNeededContactAccountId === true) {

        accountNameUserLogged = sessionStorage.getItem('Salesforce Contact Account Name');
        if (isNeededContactAccountId === true && (accountContactLogged === null || accountContactLogged === 'null' || accountContactLogged === undefined)) {
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetAccountIdUserLogged",
                beforeSend: function () {
                    if (isAutoRefreshAction !== true)
                        self.find('.processing_screen').removeClass('is-hidden');
                },
                async: false
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                if (jsonResult.code == 200) {
                    sessionStorage.setItem('Salesforce Contact Account ID', jsonResult.AccountId);
                    sessionStorage.setItem('Salesforce Contact Account Name', jsonResult.AccountName);
                    accountContactLogged = jsonResult.AccountId;
                    accountNameUserLogged = jsonResult.AccountName;
                }

                if (isAutoRefreshAction !== true)
                    self.find('.processing_screen').addClass('is-hidden');
            });
        }
    }

    var allParametersInUrl = true;
    var calendarEventUrl = self.find('input[name="calendarEventUrl"]').val();
    var isEditable = self.find('input[name="isEditable"]').val();
    var dateToGroupResults = self.find('input[name="dateToGroupResults"]').val();
    var calendarEventTitle = self.find('input[name="calendarEventTitle"]').val();
    var rewriteUrlParameters = self.find('input[name="rewriteParameters"]').val();
    var objectNameRelatedFiles = "";

    if (self.find('input[name="ObjectNameRelatedFiles"]').length > 0)
        objectNameRelatedFiles = self.find('input[name="ObjectNameRelatedFiles"]').val();

    var fieldNameObjectRelatedFiles = "";
    if (self.find('input[name="FieldNameToObjectRelatedFiles"]').length > 0)
        fieldNameObjectRelatedFiles = self.find('input[name="FieldNameToObjectRelatedFiles"]').val();

    var relatedFilesId = "";
    if (self.find('input[name="RelatedFilesId"]').length > 0)
        relatedFilesId = self.find('input[name="RelatedFilesId"]').val();
    var includeRelatedFiles = false;
    if (self.find('input[name="IncludeRelatedFiles"]').length > 0)
        includeRelatedFiles = self.find('input[name="IncludeRelatedFiles"]').val();
    var limit = null, offset = null;
    if (format === 'DATATABLE') {
        limit = $('#tableInformation' + listingcmsId + ' input#limitDataTable').val();
        offset = $('#tableInformation' + listingcmsId + ' input#offsetDataTable').val();
    }

    self.find('.selected-items-check').addClass('is-hidden')
    var orderBy = self.find('input[name="OrderFieldCT"]').val();
    var orderDirection = self.find('input[name="OrderDirectionCT"]').val();

    // Validate if all url parameters required by block is in URL
    if (parametersRequiredByBlock.length > 0) {
        if (Object.keys(parametersUrl).length < parametersRequiredByBlock.length) {
            allParametersInUrl = false;
        } else {
            //finding the parameters
            if (rewriteUrlParameters !== undefined && rewriteUrlParameters !== null && rewriteUrlParameters.trim() !== '') {
                var data = JSON.parse(rewriteUrlParameters);
                if (parametersRequiredByBlock.length > data.length) {
                    allParametersInUrl = false;
                } else {
                    parametersRequiredByBlock.forEach(function (item) {
                        data.forEach(function (itemR) {
                            if (itemR.Original == item) {
                                if (!parametersUrl[itemR.Rewrite]) {
                                    allParametersInUrl = false;
                                }
                            }
                        });
                    });
                }
            } else {
                parametersRequiredByBlock.forEach(function (item) {
                    if (!parametersUrl[item]) {
                        allParametersInUrl = false;
                    }
                });

            }
        }
    }
    var parametersUrlEnforceOr = {};
    var parametersUrlEnforceOrString = "";
    var enforceFilterStatus = true;
    // Validate if exists enforcing of "ContactId" and "AccountId"
    if (fieldEnforceFilteringContactId && contactIdUserLogged && contactIdUserLogged !== 'null') {
        //Modify parametersURLString to set contactId
        if (enforcedbyContactOrAccount === true || enforcedbyContactOrAccount.toLowerCase() == 'true') {
            parametersUrlEnforceOr[fieldEnforceFilteringContactId] = contactIdUserLogged;
        }
        else {
            parametersUrl[fieldEnforceFilteringContactId] = contactIdUserLogged;
        }

    }
    var recalculateCurrentAccountId = false;
    if (accountIdUserLogged && accountIdUserLogged !== 'null' && $('#managedOrganizationField').length > 0 && accountIdUserLogged != $('#managedOrganizationField').val() && $('#managedOrganizationField').val() != '') {
        recalculateCurrentAccountId = true;
    }
    else if ($('#managedOrganizationField').length == 0) {
        var profile = window.sessionStorage.getItem('User Profile');
        if (CustomFilters && CustomFilters['filters'] && CustomFilters['filters'].length > 0) {
            $(CustomFilters['filters']).each(function (index, el) {
                if (el.comparisonValue == "s:currentAccountID") {
                    recalculateCurrentAccountId = accountIdUserLogged == null && (profile == 'Partner Staff' || profile == 'System Administrator');
                }
            });
        }
    }

    if (recalculateCurrentAccountId) {
        // Need to update account
        window.sessionStorage.removeItem('Salesforce Contact ID');
        var LISTING_RELOADED = window.sessionStorage.getItem('LISTING_RELOADED' + blockId);
        verify_session_storage_variables();
        if (LISTING_RELOADED == null || LISTING_RELOADED == '0') {
            window.sessionStorage.setItem('LISTING_RELOADED' + blockId, 1);
            window.location.reload();
            return;
        }
    }
    else {
        window.sessionStorage.removeItem('LISTING_RELOADED' + blockId);
    }

    if (fieldEnforceFilteringAccountId && accountIdUserLogged && accountIdUserLogged !== 'null') {
        //Modify parametersURLString to set accountId
        if (enforcedbyContactOrAccount === true || enforcedbyContactOrAccount.toLowerCase() == 'true') {
            parametersUrlEnforceOr[fieldEnforceFilteringAccountId] = accountIdUserLogged;
        }
        else {
            parametersUrl[fieldEnforceFilteringAccountId] = accountIdUserLogged;
        }
    }
    if (enforcedbyContactOrAccount === true || enforcedbyContactOrAccount.toLowerCase() == 'true') {

        if ((fieldEnforceFilteringContactId !== '' && (contactIdUserLogged === 'null' || contactIdUserLogged === null || contactIdUserLogged === ''))
            && fieldEnforceFilteringAccountId !== '' && (accountIdUserLogged === 'null' || accountIdUserLogged === null || accountIdUserLogged === '')) {
            enforceFilterStatus = false;
        }
    }
    else {
        // Validating if enforcing of "ContactId" and "AccountId" are configured and there are values to compare
        if (fieldEnforceFilteringContactId !== '' && (contactIdUserLogged === 'null' || contactIdUserLogged === null || contactIdUserLogged === '')) {
            enforceFilterStatus = false;
        } else {
            if (fieldEnforceFilteringAccountId !== '' && (accountIdUserLogged === 'null' || accountIdUserLogged === null || accountIdUserLogged === '')) {
                enforceFilterStatus = false;
            }
        }
    }

    //System  tokens s:currentUserID , s:currentAccountID , s:currentDateTime
    var today = new Date();
    var today_date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
    var today_time = today.getHours() + ":" + today.getMinutes();
    var today_dateTime = today_date + ' ' + today_time;
    var valuesForSpecialButtons = detectItemsToSend(listingcmsId);
    var additionalFields = valuesForSpecialButtons ? valuesForSpecialButtons.join() : null;
    $(CustomFilters['filters']).each(function (index, el) {
        var value = el.comparisonValue;
        if (value == 's:currentUserID') {
            if (contactIdUserLogged != null && contactIdUserLogged != undefined) { Object.assign(parametersUrl, { currentUserID: contactIdUserLogged }); }
        } else if (value == 's:currentAccountID') {
            if (accountIdUserLogged != null && contactIdUserLogged != undefined) { Object.assign(parametersUrl, { currentAccountID: accountIdUserLogged }); }
        } else if (value == 's:currentDateTime') {
            Object.assign(parametersUrl, { currentDateTime: today_dateTime });
        } else if (value == 's:currentManagingOrg') {
            var managingOrg = localStorage.getItem('llama-sp-current-org');
            if (managingOrg !== undefined && managingOrg !== null && managingOrg !== '') {
                var objMO = JSON.parse(managingOrg);
                Object.assign(parametersUrl, { currentManagingOrg: objMO.id });
            }
        } else if (value == 's:today' || value == 's:thisMonth' || value == 's:thisWeek' || value == 's:thisYear') {
            if (el.operator == '=') {
                if (value == 's:today')
                    Object.assign(parametersUrl, { today: today_date });
                else if (value == 's:thisWeek')
                    Object.assign(parametersUrl, { thisWeek: today_date });
                else if (value == 's:thisMonth')
                    Object.assign(parametersUrl, { thisMonth: today_date });
                else if (value == 's:thisYear')
                    Object.assign(parametersUrl, { thisYear: today_date });
            } else {
                console.error("Listing CMS: Wrong configurarion for the token:" + value);
            }
        } else if (value == 's:currentContactAccountID') {
            Object.assign(parametersUrl, { currentContactAccountID: accountContactLogged });
        }
    });
    // Parse again parametersUrl to string
    parametersUrlString = (Object.keys(parametersUrl).length) ? JSON.stringify(parametersUrl) : '';
    parametersUrlEnforceOrString = (Object.keys(parametersUrlEnforceOr).length) ? JSON.stringify(parametersUrlEnforceOr) : '';
    if (!allParametersInUrl) {
        self.find('.block-wrapper').append('<span>' + window.translation.url_parameters_missing + '</span>');
    } else if (!enforceFilterStatus) {
        self.find('.block-wrapper').append(window.translation.there_is_not_items_to_display);
    }
    else if (sourceListing == 'SOQL' || objectSFView && objectSF) {
        var recordIds = [];
        if (format == "DATATABLE" && autoRefresh && lastMaxSystemStamp != null && lastMaxSystemStamp != '' && lastMaxSystemStamp != undefined) {
            recordIds = $("table#dataTable" + listingcmsId).DataTable().rows({ selected: true }).ids().toArray();
        } else if (format == "CARD" || format == "GRID" || format == "COMMENTS") {
            //.listingcmsblock.auto-refresh-205 .block-wrapper li.custom-row
            $('.listingcmsblock.auto-refresh-' + listingcmsId + ' .block-wrapper li.custom-row').each(function () {
                recordIds.push($(this).data("id"))
            });
        } else if (format == "CALENDAR") {
            $('.listingcmsblock.auto-refresh-' + listingcmsId + ' .block-wrapper  a.fc-event').each(function () {
                recordIds.push($(this).data("id"));
            });
        }
        //Get records of SFView
        if (!loadOnDatatable || format != 'DATATABLE' || isAutoSaveAction || isAutoRefreshAction) {
            $.ajax({
                method: "POST",
                url: urlSite + "admin/GetSalesforceViewRecords",
                data: { blockId: blockId, Sfobject: objectSF, Sfview: objectSFView, ParametersUrl: parametersUrlString, formatToDisplay: format, listingCmsId: listingcmsId, totalItems: totalItems, limit: limit, offset: offset, isEditable: isEditable, calendarEventUrl: calendarEventUrl, orderBy: orderBy, orderDirection: orderDirection, rewriteParameters: rewriteUrlParameters, objectNameRelatedFiles: objectNameRelatedFiles, relatedFilesId: relatedFilesId, FieldNameToObjectRelatedFiles: fieldNameObjectRelatedFiles, includeRelatedFiles: includeRelatedFiles, ParametersUrlEnforceOr: parametersUrlEnforceOrString, EnforcedbyContactOrAccount: enforcedbyContactOrAccount, AccountNameUserLogged: accountNameUserLogged, AutoRefresh: autoRefresh, LastMaxSystemStamp: lastMaxSystemStamp, ChannelName: channelName, LastFetchTime: lastFetchTime, autoSaveRequest: isAutoSaveAction, searchAutoSuggestFieldValue: searchAutoSuggestFieldValue, RecordIds: JSON.stringify(recordIds), AdditionalFields: additionalFields },
                beforeSend: function () {
                    if (isAutoRefreshAction !== true && isAutoSaveAction !== true) {
                        self.find('.processing_screen').removeClass('is-hidden');
                        self.find('.processing_screen').addClass('always_show');
                        self.find('.pages').empty();
                    }
                }
            }).done(function (data) {
                traceToStore += ('RETURNED>' + getCurrentDateTimeFormatted() + ";");
                var jsonResult = JSON.parse(data);
                if (jsonResult.customCardTemplate !== null && jsonResult.customCardTemplate !== undefined && jsonResult.customCardTemplate !== '') {
                    self.find('input[name="custom_card_template"]').val(jsonResult.customCardTemplate);
                    customCardTemplate = jsonResult.customCardTemplate;


                }
                var isthereTabMultilanguage = false;
                if (jsonResult.MultilanguageValues !== null && jsonResult.MultilanguageValues !== undefined && jsonResult.MultilanguageValues !== '' && customCardTemplate !== '') {
                    var multilangData = JSON.parse(jsonResult.MultilanguageValues);
                    if (multilangData != null) {
                        if (jsonResult.SiteLanguages !== null && jsonResult.SiteLanguages !== undefined && jsonResult.SiteLanguages !== '') {
                            isthereTabMultilanguage = true;
                            var langData = JSON.parse(jsonResult.SiteLanguages);
                            var outputMultiLang = '<div id="tabs-detail-multilanguage" class="multilanguage-fields"><ul class="tabs" id="field-tabs-multilanguage">';
                            langData.forEach(function (item) {
                                outputMultiLang += '<li class="tabs-title ' +
                                    (item.IsDefault === true ? 'is-active' : '') +
                                    '"><a class="' + (item.IsDefault === true ? 'is-default' : '') + '" data-language-id="' + item.LanguageID +
                                    '" data-language-iso="' + item.Language.Iso +
                                    '" href="#detail-multilanguage-' + item.LanguageID + '" aria-selected="' + item.IsDefault + '">' + item.Language.Name + '</a></li>';
                            });
                            outputMultiLang += '</ul>';
                            outputMultiLang += '<div class="tabs-content field-tabs-content" data-tabs-content="field-tabs-multilanguage">';
                            langData.forEach(function (item) {
                                var languageContent = '<table class="detail-view"><tbody>';

                                var classActive = '';
                                if (item.IsDefault === true) {
                                    classActive = 'is-active';
                                    languageContent += '<tr>';
                                    languageContent += '<th class="header-multi-lang-title"><b>Opportunity Name</b></th>';
                                    languageContent += '<td>' + multilangData.OpportunityName + '</td>';
                                    languageContent += '</tr>';
                                    languageContent += '<tr>';
                                    languageContent += '<th class="header-multi-lang-title"><b>Description</b></th>';
                                    languageContent += '<td>' + multilangData.OpportunityDescription + '</td>';
                                    languageContent += '</tr>';
                                } else {
                                    if (multilangData.Translations !== undefined && multilangData.Translations !== null) {
                                        var labelToFind = [];
                                        labelToFind.push('Volunteer Opportunity Name');
                                        labelToFind.push('Description');
                                        labelToFind.forEach(function (lb) {
                                            multilangData.Translations.forEach(function (itLan) {
                                                if (itLan.IsoLanguage === item.Language.Iso) {
                                                    if (itLan.FieldName === 'Volunteer Opportunity Name' && itLan.FieldName == lb) {
                                                        languageContent += '<tr>';
                                                        languageContent += '<th class="header-multi-lang-title"><b>Opportunity Name</b></th>';
                                                        languageContent += '<td>' + itLan.FieldValue + '</td>';
                                                        languageContent += '</tr>';
                                                    } else if (itLan.FieldName === 'Description' && itLan.FieldName == lb) {
                                                        languageContent += '<tr>';
                                                        languageContent += '<th class="header-multi-lang-title"><b>Description</b></th>';
                                                        languageContent += '<td>' + itLan.FieldValue + '</td>';
                                                        languageContent += '</tr>';
                                                    }
                                                }
                                            });
                                        });

                                    }
                                }

                                languageContent += '</tbody></table>';
                                outputMultiLang += '<div class="tabs-panel ' + classActive + '" id="detail-multilanguage-' + item.LanguageID + '">';
                                outputMultiLang += languageContent;
                                outputMultiLang += '</div>';
                            });
                            outputMultiLang += '</div></div>';

                            customCardTemplate = customCardTemplate.replace('{multilanguagesection}', outputMultiLang);
                        }
                    }
                }
                var processing_screen = self.find('.processing_screen');
                var isChartFormat = (format === 'COLUMN_CHART' || format === 'BAR_CHART' || format === 'PIE_CHART' || format === 'DONUT_CHART');

                if (jsonResult.HideIfNotResults === true && (jsonResult.status == 'notfound' || jsonResult.status == 'ok' && jsonResult.records && jsonResult.records.length == 0)) {
                    $('input[name="listingcmsid"][value=' + listingcmsId + ']').parents('.container-block-section').first().addClass('is-hidden')
                }
                if (jsonResult.status === 'ok') {
                    var listing = self.find('.pages').first();
                    var keepuserfilter = self.find('input[name="keepUserFilters"]').val().toLowerCase() === "true";

                    if (jsonResult.dynamicFacetsDataLeft) {
                        listingcmsblock_load_dynamic_facets(self, jsonResult.dynamicFacetsDataLeft, "left", jsonResult.prefilterDefinition);
                    }
                    if (jsonResult.dynamicFacetsDataTop) {
                        listingcmsblock_load_top_facets(self, jsonResult.dynamicFacetsDataTop, jsonResult.prefilterDefinition);
                    }
                    if (jsonResult.dynamicFacetsDataRight) {
                        listingcmsblock_load_dynamic_facets(self, jsonResult.dynamicFacetsDataRight, "right", jsonResult.prefilterDefinition);
                    }
                    if (autoRefresh === true) {

                        if (jsonResult.lastMaxSystemStamp !== undefined)
                            self.find('input[name="LastMaxSystemStamp"]').val(jsonResult.lastMaxSystemStamp);

                        if (jsonResult.lastFetchTime !== undefined)
                            self.find('input[name="LastFetchTime"]').val(jsonResult.lastFetchTime);
                    }

                    if (format === 'STANDARD') {
                        if (isAutoRefreshAction !== true) {
                            listingcmsblock_render_sfviews_list(listing, jsonResult.records, totalItems, itemsPerPage, displayPaging, processing_screen, searchAutoSuggestValue, searchAutoSuggestFieldValue);
                            if (autoRefresh === true) {
                                autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                            }
                        }
                        else {
                            //invoke the methodwith autorefresh
                            listingcmsblock_render_sfviews_list_auto_refresh(listing, jsonResult.records, jsonResult.recordsDeleted);
                            autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                        }
                    }
                    else if (format === 'DATATABLE') {
                        var noResultsText = self.find('#noResultsText').val();
                        if (noResultsText === undefined || noResultsText === null || noResultsText === '')
                            noResultsText = window.translation.there_is_not_items_to_display;

                        if (jsonResult.pickListsInfo != undefined && jsonResult.pickListsInfo != null) {
                            localStorage.setItem('picklist-info-' + listingcmsId, JSON.stringify(jsonResult.pickListsInfo));
                        }

                        if (jsonResult.isEditable != undefined && jsonResult.isEditable == true) {
                            if (isAutoRefreshAction !== true && isAutoSaveAction !== true) {
                                listingcmsblock_render_sfviews_datatable(listing, jsonResult.columns, jsonResult.records, totalItems, itemsPerPage, displayPaging, displaySearchSectionValue, processing_screen, listingcmsId, jsonResult.defaultSort, jsonResult.firstValue, jsonResult.lastValue, jsonResult.size, displayExportCSVValue, noResultsText, jsonResult.columnsName, true, searchAutoSuggestValue, searchAutoSuggestFieldValue, jsonResult.dynamicFilterList, jsonResult.columnFilterHeaders, jsonResult.columnFilterHeadersWithPreset);

                                if (autoRefresh === true) {
                                    autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                                }
                            }
                        }
                        else {
                            if (isAutoRefreshAction !== true && isAutoSaveAction !== true) {
                                listingcmsblock_render_sfviews_datatable(listing, jsonResult.columns, jsonResult.records, totalItems, itemsPerPage, displayPaging, displaySearchSectionValue, processing_screen, listingcmsId, jsonResult.defaultSort, jsonResult.firstValue, jsonResult.lastValue, jsonResult.size, displayExportCSVValue, noResultsText, jsonResult.columnsName, false, searchAutoSuggestValue, searchAutoSuggestFieldValue, jsonResult.dynamicFilterList, jsonResult.columnFilterHeaders, jsonResult.columnFilterHeadersWithPreset);
                                if (autoRefresh === true) {
                                    autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                                }
                            }
                        }

                        if (isAutoRefreshAction === true || isAutoSaveAction === true) {
                            //record-id,iterate over record and found the tr parent,if tr parent exist then update,  if not exist then store in other var to add
                            var dataTableElement = $('#dataTable' + listingcmsId).DataTable();
                            var idsToDraw = [];
                            var idsToDeleted = [];
                            var columnsNameInfo = JSON.parse(jsonResult.columnsName);
                            for (var index in jsonResult.records) {
                                if (jsonResult.records.hasOwnProperty(index)) {

                                    var recordvalue = jsonResult.records[index];
                                    var record = JSON.parse(recordvalue)
                                    var rowElement = dataTableElement.row('#' + record[0]);
                                    if (rowElement !== undefined && rowElement.length > 0) {
                                        record = processDataForRowUpdated(record);
                                        dataTableElement.row('#' + record[0]).data(record);
                                        idsToDraw.push('#' + record[0]);
                                    } else if (isAutoRefreshAction === true &&
                                        (rowElement === undefined || rowElement == null || (rowElement !== null && rowElement.length === 0))) {
                                        //Add Row
                                        dataTableElement.row.add(record).node().id = record[0];
                                        idsToDraw.push('#' + record[0]);
                                    }

                                }
                            }
                            if (isAutoSaveAction === true) {
                                dataTableElement.rows().every(function (rowIdx, tableLoop, rowLoop) {
                                    var data = this.data();
                                    var idRow = data["DT_RowId"];
                                    if (!idsToDraw.includes('#' + idRow)) {
                                        idsToDeleted.push('#' + idRow);
                                    }
                                });
                            }
                            else if (isAutoRefreshAction === true && jsonResult.recordsDeleted !== null && jsonResult.recordsDeleted !== undefined) {
                                jsonResult.recordsDeleted.forEach(function (it) {
                                    idsToDeleted.push('#' + it)
                                });
                            }

                            if (idsToDeleted.length > 0) {
                                idsToDeleted.forEach(function (value, index) {
                                    rowElement = dataTableElement.row(value);
                                    if (rowElement !== undefined && rowElement.length > 0) {
                                        dataTableElement.row(value).remove();
                                        idsToDraw.push(value);
                                    }
                                });
                            }

                            dataTableElement.rows(idsToDraw).invalidate().draw(false);
                            if (isAutoSaveAction === true) {
                                self.find('table.listing-cms-datatable').find('td.datatable-cell-edited').removeClass('datatable-cell-edited');
                                self.find('table.listing-cms-datatable').find('tr.datatable-row-edited').removeClass('datatable-row-edited');
                            }
                            if (autoRefresh === true) {
                                autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                            }

                        }

                        if (jsonResult.isEditable != undefined && jsonResult.isEditable == true) {
                            if (autoSave !== null && autoSave !== undefined && autoSave === 'true') {
                                if (displaySaveButton !== undefined && displaySaveButton !== null && displaySaveButton === 'true') {
                                    //display button
                                    self.find('.listing-cms-datatable .dataTables_wrapper .dt-buttons button.buttons-html5.auto-save-button').show();
                                }
                                else if (displaySaveButton !== undefined && displaySaveButton !== null && displaySaveButton === 'false') {
                                    //hide button
                                    self.find('.listing-cms-datatable .dataTables_wrapper .dt-buttons button.buttons-html5.auto-save-button').hide();
                                }
                            }
                        }

                        hocvolunteer_manage_checkbox_in_table(self);
                    }
                    else if (format === 'CALENDAR') {
                        if (isAutoRefreshAction !== true) {
                            var calendarWidget = listingcmsblock_display_calendar(calendarOpenAs, self, dateToGroupResults, jsonResult, orderBy, calendarEventTitle, orderDirection, processing_screen, jsonResult.initialDateForCalendar);
                            if (autoRefresh === true) {
                                calendarAutoRefreshBlocks[listingcmsId] = calendarWidget;

                                autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                            }
                        } else {
                            listingcmsblock_display_calendar_auto_refresh(calendarOpenAs, self, jsonResult.records, processing_screen, jsonResult.recordsDeleted, dateToGroupResults, jsonResult, orderBy, calendarEventTitle, orderDirection);
                            autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                        }

                    }
                    else if (format === 'MAP') {
                        listingcmsblock_process_map(jsonResult, self, blockId, processing_screen);
                        if (isAutoRefreshAction !== true) {
                            if (autoRefresh === true) {
                                autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                            }
                        } else {
                            autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                        }

                    }
                    else if (format === 'COMMENTS') {
                        if (isAutoRefreshAction !== true) {
                            listingcmsblock_render_sfviews_comment_timeline(listing, jsonResult.records, totalItems, itemsPerPage, displayPaging, customCardTemplate, processing_screen);
                            if (autoRefresh === true) {
                                autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                            }
                        } else {
                            listingcmsblock_render_sfviews_comment_timeline_autorefresh(listing, jsonResult.records, customCardTemplate, processing_screen, jsonResult.recordsDeleted);
                            autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                        }

                    }
                    else if (isChartFormat) {
                        processing_screen.addClass('is-hidden');
                        processing_screen.removeClass('always_show');
                        self.find('.chart-wrapper .error').remove();
                        self.find('.chart-wrapper .not-data-available').remove();

                        if (jsonResult.dataChart) {

                            // Checking if there is data availabel to display
                            if (jsonResult.dataChart.data && jsonResult.dataChart.data.length > 1) {
                                drawChart(jsonResult.dataChart, isAutoRefreshAction);
                            } else if (isAutoRefreshAction === false) {
                                /*var noDataAvailable = '<p class="not-data-available">' + window.translation.there_is_not_items_to_display; +'</p>';
                                self.find('.chart-wrapper').append(noDataAvailable);*/
                                self.find('.no-result-section').removeClass('is-hidden');
                            }

                            if (autoRefresh === true) {
                                autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                            }
                        }
                    }
                    else {
                        if (isAutoRefreshAction !== true) {
                            listingcmsblock_render_sfviews_grid_slider_card(listing, format, jsonResult.records, totalItems, itemsPerPage, displayPaging, customCardTemplate, processing_screen, self, searchAutoSuggestValue, searchAutoSuggestFieldValue, jsonResult.dynamicFilterList, jsonResult.dynamicFacetsData);
                            if (autoRefresh === true) {
                                autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                            }
                        } else {
                            listingcmsblock_render_sfviews_grid_slider_card_auto_refresh(listing, format, jsonResult.records, totalItems, itemsPerPage, displayPaging, customCardTemplate, orderDirection, jsonResult.recordsDeleted);
                            autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                        }

                        if (keepuserfilter && (format === "GRID" || format === "CARD")) {
                            var FilterObject = GetAdvancedFilterObject(self);
                            listingcmsblock_dynamic_filters_perform_search(self, FilterObject);
                        }
                    }

                    //These events should be applied after populating the views
                    if (jsonResult.dynamicFacetsDataLeft) {
                        listingcmsblock_load_dynamic_facets(self, jsonResult.dynamicFacetsDataLeft, "left", jsonResult.prefilterDefinition);
                    }
                    if (jsonResult.dynamicFacetsDataTop) {
                        listingcmsblock_load_top_facets(self, jsonResult.dynamicFacetsDataTop, jsonResult.prefilterDefinition);
                    }
                    if (jsonResult.dynamicFacetsDataRight) {
                        listingcmsblock_load_dynamic_facets(self, jsonResult.dynamicFacetsDataRight, "right", jsonResult.prefilterDefinition);
                    }
                    //Load methods by theme after listingCMS with SF data is loaded
                    // 1 - VNY
                    if (typeof events_after_listingcmssf_loaded_vny === 'function') {
                        events_after_listingcmssf_loaded_vny();
                    }

                    listingcmsFacet_LoadDefaults();

                    if (isthereTabMultilanguage === true) {
                        self.find('#tabs-detail-multilanguage').tabs();
                    }
                }
                else {
                    //Display error
                    if (isAutoRefreshAction === true) {
                        autoRefreshBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_load_records_sfview, (autoRefreshBlocks[listingcmsId].frequency * 1000), true, listingcmsId, false);
                    } else {

                        var noResultsText = self.find('#noResultsText').val();
                        if (noResultsText == undefined || noResultsText == null || noResultsText == '')
                            noResultsText = window.translation.there_is_not_items_to_display;

                        if (jsonResult.status == 'error') {
                            var noResultsText = window.translation.please_check_block_configuration;
                            if (jsonResult.message && $('body').hasClass('backend-page')) {
                                noResultsText = noResultsText + ' (' + window.translation.error + "): " + jsonResult.message;
                            }
                        }

                        var emptyItem = '<li class="empty-item">' + noResultsText + '</li>';
                        if (format === 'MAP') {
                            emptyItem = '<div class="empty-item">' + noResultsText + '</div>';
                            self.find('.sf_mapping_map').first().append(emptyItem);
                            self.find('.map-listing-block').remove();
                        } else if (isChartFormat) {
                            var errorMessage = window.translation.please_check_block_configuration;
                            if (jsonResult.message) {
                                errorMessage = errorMessage + ' (' + window.translation.error + "): " + jsonResult.message;
                            }
                            var errorItem = '<p class="error">' + errorMessage + '</p>';
                            self.find('.chart-wrapper').append(errorItem);
                            // cleaning session storage
                            var chartId = self.find('.chart').first().attr('id');
                            sessionStorage.removeItem('listingcmsblock-' + chartId);
                        } else {
                            //Append empty item
                            self.find('.pages').first().append(emptyItem);
                        }

                        //Hide processing screen
                        processing_screen.addClass('is-hidden');
                        processing_screen.removeClass('always_show');
                    }
                }

                traceToStore += ('FINISHED>' + getCurrentDateTimeFormatted() + ';');
                if (specialLogTrace) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "save-trace",
                        data: { listingCmsId: listingcmsId, traceDetail: traceToStore }
                    });
                }
            });
        }
        else {
            idTable = "dataTable" + listingcmsId;
            var processing_screen = self.find('.processing_screen');
            load_listing_cms_datatable_slim(urlSite, self, self.find('.pages').first(), totalItems, itemsPerPage, displayPaging, displaySearchSectionValue, processing_screen, listingcmsId, displayExportCSVValue,
                searchAutoSuggestValue, searchAutoSuggestFieldValue
                , blockId, objectSF, objectSFView, parametersUrlString, format, limit, offset, isEditable, calendarEventUrl, orderBy, orderDirection, rewriteUrlParameters, objectNameRelatedFiles, relatedFilesId, fieldNameObjectRelatedFiles, includeRelatedFiles, parametersUrlEnforceOrString, enforcedbyContactOrAccount, accountNameUserLogged,
                autoRefresh, lastMaxSystemStamp, channelName, lastFetchTime, isAutoSaveAction, searchAutoSuggestFieldValue, JSON.stringify(recordIds), additionalFields,
                traceToStore, specialLogTrace,buttonposition);
        }
    }
}

function listingcmsblock_display_calendar_auto_refresh(calendarOpenAs, self, records, processing_screen, recordsDeleted, dateToGroupResults, jsonResult, orderBy, calendarEventTitle, orderDirection) {
    var blockListingID = self.find('input[name="listingcmsid"]').val();
    var calendarListing = calendarAutoRefreshBlocks[blockListingID];
    if (recordsDeleted !== null && recordsDeleted !== undefined && recordsDeleted.length > 0) {
        recordsDeleted.forEach(function (item) {
            removeEventFromCalendar(item, calendarListing);
        });
    }

    if (records !== null && records !== undefined && records.length > 0) {
        var currentLanguage = window.translation['language_iso'];
        var timeFormat = 'hh:mm a'; //default value for most sites
        var lastDate = null;
        var prefixLang = currentLanguage.split('-')[0];
        var localeForCalendar = $('body').attr('data-locale');

        if (prefixLang === 'en') {
            if (localeForCalendar === 'en-GB') {
                localeForCalendar = 'en-gb';
            } else if (localeForCalendar === 'en-GB') {
                localeForCalendar = 'en-gb';
            } else if (localeForCalendar === 'en-AU') {
                localeForCalendar = 'en-au';
            } else {
                localeForCalendar = prefixLang;
            }
        } else if (currentLanguage === 'zh-CHT') {
            localeForCalendar = 'zh-tw';
        } else {
            localeForCalendar = prefixLang;
        }

        moment.locale(localeForCalendar);

        if (currentLanguage == 'nl-NL') {
            if (moment.localeData()._config.longDateFormat.LT !== undefined) {
                timeFormat = moment.localeData()._config.longDateFormat.LT;
            }
            timeFormat += ' uur'; //HOC3-6291
        }

        var eventToDisplay = [];
        if (dateToGroupResults !== '') {
            var dateToGroupElement = jsonResult.columns.find(function (element) { return element.Key == dateToGroupResults })
            var dateToGroupIsDateTime = true;

            if (dateToGroupElement !== null && dateToGroupElement !== undefined)
                dateToGroupIsDateTime = dateToGroupElement ? !(dateToGroupElement.Type.toLowerCase() == "date") : false;

            var fieldToSortByday = jsonResult.columns.find(function (element) { return element.Key == orderBy })
            var fieldToSortBydayIsDateTime = false;
            var fieldToSortBydayIsDate = false;

            if (fieldToSortByday !== null && fieldToSortByday !== undefined) {

                fieldToSortBydayIsDate = fieldToSortByday && fieldToSortByday.Type ? fieldToSortByday.Type.toLowerCase() == "date" : false;
                fieldToSortBydayIsDateTime = fieldToSortByday && fieldToSortByday.Type ? fieldToSortByday.Type.toLowerCase() == "datetime" : false;

            }

            $.each(records, function (index, record) {
                var idRecord = '';
                var dateToGroup = record.Columns.find(x => x.FieldNameOrPath === dateToGroupResults);
                var event = {};
                var _title = record.Columns.find(x => x.FieldNameOrPath === calendarEventTitle);
                var _url = record.Columns.find(x => x.FieldNameOrPath === 'CalendarEventUrl');
                var colId = record.Columns.find(x => x.FieldNameOrPath === "Id");
                if (colId !== null && colId !== undefined)
                    idRecord = colId.Value;
                $.each(record.Columns, function (indexCol, column) {
                    var col = jsonResult.columns.find(x => x.Key === column.FieldNameOrPath);
                    if (col !== null && col !== undefined) {
                        var colName = col.Value;
                        var colType = (col && col.Type) ? col.Type.toLowerCase() : '';
                        var isDateTimeField = colType == "datetime";
                        var isDateField = colType == "date";
                        if (column.Value !== '' && typeof column.Value !== 'undefined') {
                            if (isDateTimeField) {
                                event[colName] = ((window.translation['time_zone'] == null || window.translation['time_zone'] == undefined) ? moment(column.Value).format(window.MomentDateTimeFormat) : toTimeZone(column.Value, window.translation['time_zone'], window.MomentDateTimeFormat));

                            } else if (isDateField) {
                                event[colName] = toTimeZone(column.Value, 'GMT', window.MomentDateFormat)
                            } else {
                                event[colName] = column.Value;
                            }
                        }
                    }
                });


                var transformedDateToGroupvalue = null;
                if (dateToGroupIsDateTime) {
                    transformedDateToGroupvalue = (window.translation['time_zone'] == null || window.translation['time_zone'] == undefined) ? toTimeZoneOnly(dateToGroup.Value, 'GMT') : toTimeZoneOnly(dateToGroup.Value, window.translation['time_zone'])
                }
                else {
                    transformedDateToGroupvalue = toTimeZoneOnly(dateToGroup.Value, 'GMT')
                }

                var _orderValue = null;
                var applyDefaultOrder = false;
                if (orderBy !== '' && orderBy !== dateToGroupResults) {
                    if (fieldToSortByday !== null && fieldToSortByday !== undefined) {
                        var fieldToSortBydayFromRecord = record.Columns.find(x => x.FieldNameOrPath === orderBy)

                        if (!fieldToSortBydayIsDate && !fieldToSortBydayIsDateTime) {
                            _orderValue = fieldToSortBydayFromRecord.Value;
                        } else if (fieldToSortBydayIsDateTime) {
                            _orderValue = ((window.translation['time_zone'] == null || window.translation['time_zone'] == undefined) ? moment(fieldToSortBydayFromRecord.Value).format('YYYY-MM-DD HH:mm:ss') : toTimeZone(fieldToSortBydayFromRecord.Value, window.translation['time_zone'], 'YYYY-MM-DD HH:mm:ss'));
                        } else if (fieldToSortBydayIsDateTime) {
                            _orderValue = toTimeZone(fieldToSortBydayFromRecord.Value, 'GMT', 'YYYY-MM-DD HH:mm:ss')
                        } else
                            applyDefaultOrder = true;
                    }
                    else {
                        //try to find the order field in the record columns
                        var fieldToSortBydayFromRecord = record.Columns.find(x => x.FieldNameOrPath === orderBy)
                        if (fieldToSortBydayFromRecord !== null && fieldToSortBydayFromRecord !== undefined) {
                            _orderValue = fieldToSortBydayFromRecord.Value;
                        } else
                            applyDefaultOrder = true;
                    }
                } else
                    applyDefaultOrder = true;

                if (applyDefaultOrder == true)
                    _orderValue = transformedDateToGroupvalue.format("YYYY-MM-DD HH:mm:ss");

                var _startValue = transformedDateToGroupvalue.format(window.MomentDateTimeFormat);

                var _startForCriteria = transformedDateToGroupvalue.format("YYYY-MM-DD HH:mm");
                var _timeForCriteria = transformedDateToGroupvalue.format("hh:mm A") + ' - ' + transformedDateToGroupvalue.add(1, 'hours').format("hh:mm A");
                event["configurationInformationCMS"] = jsonResult.columns;
                eventToDisplay.push({
                    id: idRecord,
                    title: _title ? _title.Value : '',
                    start: _startForCriteria,
                    time: _timeForCriteria,
                    data: event,
                    className: 'black-key',
                    customUrl: _url,
                    customStart: _startValue,
                    customOrder: _orderValue,
                    occId: idRecord,
                });



            });
        }

        var finalCustomOrder = 'customOrder';
        if (orderDirection == '1')
            finalCustomOrder = '-' + finalCustomOrder;

        if (eventToDisplay.length > 0) {
            eventToDisplay.forEach(function (item) {
                var idOcc = item.occId;
                removeEventFromCalendar(idOcc, calendarListing);
                calendarListing.addEvent(item);
            });
        }
    }
}


function removeEventFromCalendar(idEvent, calendarListing) {
    var itemRetrieved = calendarListing.getEventById(idEvent);
    if (itemRetrieved !== null && itemRetrieved !== undefined) {
        itemRetrieved.remove();
    }
}




function listingcmsblock_display_calendar(calendarOpenAs, self, dateToGroupResults, jsonResult, orderBy, calendarEventTitle, orderDirection, processing_screen, defaultCalendarDate) {
    var currentLanguage = window.translation['language_iso'];
    var timeFormat = 'hh:mm a'; //default value for most sites
    var lastDate = null;
    var calendarSearchSessionStorage = getCalendarSearchLastDateSessionStorage();

    var prefixLang = currentLanguage.split('-')[0];
    var localeForCalendar = $('body').attr('data-locale');

    if (prefixLang === 'en') {
        if (localeForCalendar === 'en-GB') {
            localeForCalendar = 'en-gb';
        } else if (localeForCalendar === 'en-GB') {
            localeForCalendar = 'en-gb';
        } else if (localeForCalendar === 'en-AU') {
            localeForCalendar = 'en-au';
        } else {
            localeForCalendar = prefixLang;
        }
    } else if (currentLanguage === 'zh-CHT') {
        localeForCalendar = 'zh-tw';
    } else {
        localeForCalendar = prefixLang;
    }

    moment.locale(localeForCalendar);
    if (currentLanguage == 'nl-NL') {
        if (moment.localeData()._config.longDateFormat.LT !== undefined) {
            timeFormat = moment.localeData()._config.longDateFormat.LT;
        }
        timeFormat += ' uur'; //HOC3-6291
    }

    if (calendarSearchSessionStorage != null && calendarSearchSessionStorage.last_date != null) {
        lastDate = calendarSearchSessionStorage.last_date;
    }
    else {
        sessionStorage.setItem("calendar-search-last-date", '');
        lastDate = null;
        if (defaultCalendarDate !== undefined && defaultCalendarDate !== '' && defaultCalendarDate !== null) {
            try {
                let tmpDate = moment(defaultCalendarDate, window.MomentDateFormat)
                const today = moment();

                let isAfter = moment(tmpDate.format('YYYY-MM-DD')).isAfter(today.format('YYYY-MM-DD'))

                if (isAfter === true) // if not, then the initial date shouldn't be used
                    lastDate = tmpDate.format('YYYY-MM-DD');

            } catch (error) {
                lastDate = null;
            }

        }
    }
    //dayGridMonth,dayGridWeek,dayGridDay
    var initialViewForBlock = 'dayGridMonth';
    if (calendarOpenAs === 'Week')
        initialViewForBlock = 'dayGridWeek';
    else if (calendarOpenAs === 'Day')
        initialViewForBlock = 'dayGridDay';


    var blockListingID = self.find('input[name="listingcmsid"]').val();
    var calendarID = 'full-calendar-widget-listing-block-' + blockListingID;

    var timeFormatCalendar = process_time_format(timeFormat);

    var calendarEl = document.getElementById(calendarID);

    var eventToDisplay = [];

    if (dateToGroupResults !== '') {
        var dateToGroupElement = jsonResult.columns.find(function (element) { return element.Key == dateToGroupResults })
        var dateToGroupIsDateTime = true;

        if (dateToGroupElement !== null && dateToGroupElement !== undefined)
            dateToGroupIsDateTime = dateToGroupElement ? !(dateToGroupElement.Type.toLowerCase() == "date") : false;

        var fieldToSortByday = jsonResult.columns.find(function (element) { return element.Key == orderBy })
        var fieldToSortBydayIsDateTime = false;
        var fieldToSortBydayIsDate = false;

        if (fieldToSortByday !== null && fieldToSortByday !== undefined) {

            fieldToSortBydayIsDate = fieldToSortByday && fieldToSortByday.Type ? fieldToSortByday.Type.toLowerCase() == "date" : false;
            fieldToSortBydayIsDateTime = fieldToSortByday && fieldToSortByday.Type ? fieldToSortByday.Type.toLowerCase() == "datetime" : false;

        }

        $.each(jsonResult.records, function (index, record) {
            var idRecord = '';
            var dateToGroup = record.Columns.find(x => x.FieldNameOrPath === dateToGroupResults);

            var event = {};
            var _title = record.Columns.find(x => x.FieldNameOrPath === calendarEventTitle);
            var _url = record.Columns.find(x => x.FieldNameOrPath === 'CalendarEventUrl');
            var colId = record.Columns.find(x => x.FieldNameOrPath === "Id");
            if (colId !== null && colId !== undefined)
                idRecord = colId.Value;
            
            record.Columns = record.Columns.reverse();
            $.each(record.Columns, function (indexCol, column) {
                var col = jsonResult.columns.find(x => x.Key === column.FieldNameOrPath);
                if (col !== null && col !== undefined) {
                    var colName = col.Value;


                    var colType = (col && col.Type) ? col.Type.toLowerCase() : '';
                    var isDateTimeField = colType == "datetime";
                    var isDateField = colType == "date";

                    if (column.Value !== '' && typeof column.Value !== 'undefined') {
                        if (isDateTimeField) {
                            event[colName] = ((window.translation['time_zone'] == null || window.translation['time_zone'] == undefined) ? moment(column.Value).format(window.MomentDateTimeFormat) : toTimeZone(column.Value, window.translation['time_zone'], window.MomentDateTimeFormat));

                        } else if (isDateField) {
                            event[colName] = toTimeZone(column.Value, 'GMT', window.MomentDateFormat)
                        } else {
                            event[colName] = column.Value;
                        }
                    }

                }
            });

            var transformedDateToGroupvalue = null;
            if (dateToGroupIsDateTime) {
                transformedDateToGroupvalue = (window.translation['time_zone'] == null || window.translation['time_zone'] == undefined) ? toTimeZoneOnly(dateToGroup.Value, 'GMT') : toTimeZoneOnly(dateToGroup.Value, window.translation['time_zone'])
            }
            else {
                transformedDateToGroupvalue = toTimeZoneOnly(dateToGroup.Value, 'GMT')
            }

            var _orderValue = null;
            var applyDefaultOrder = false;

            if (orderBy !== '' && orderBy !== dateToGroupResults) {

                // If the field defined to sort is available into the visible fields
                if (fieldToSortByday !== null && fieldToSortByday !== undefined) {
                    var fieldToSortBydayFromRecord = record.Columns.find(x => x.FieldNameOrPath === orderBy)

                    if (!fieldToSortBydayIsDate && !fieldToSortBydayIsDateTime) {
                        _orderValue = fieldToSortBydayFromRecord.Value;
                    } else if (fieldToSortBydayIsDateTime) {
                        _orderValue = ((window.translation['time_zone'] == null || window.translation['time_zone'] == undefined) ? moment(fieldToSortBydayFromRecord.Value).format('YYYY-MM-DD HH:mm:ss') : toTimeZone(fieldToSortBydayFromRecord.Value, window.translation['time_zone'], 'YYYY-MM-DD HH:mm:ss'));
                    } else if (fieldToSortBydayIsDateTime) {
                        _orderValue = toTimeZone(fieldToSortBydayFromRecord.Value, 'GMT', 'YYYY-MM-DD HH:mm:ss')
                    } else
                        applyDefaultOrder = true;
                }
                else {
                    //try to find the order field in the record columns
                    var fieldToSortBydayFromRecord = record.Columns.find(x => x.FieldNameOrPath === orderBy)
                    if (fieldToSortBydayFromRecord !== null && fieldToSortBydayFromRecord !== undefined) {
                        _orderValue = fieldToSortBydayFromRecord.Value;
                    } else
                        applyDefaultOrder = true;
                }
            } else
                applyDefaultOrder = true;

            if (applyDefaultOrder == true)
                _orderValue = transformedDateToGroupvalue.format("YYYY-MM-DD HH:mm:ss");

            var _startValue = transformedDateToGroupvalue.format(window.MomentDateTimeFormat);

            var _startForCriteria = transformedDateToGroupvalue.format("YYYY-MM-DD HH:mm");
            var _timeForCriteria = transformedDateToGroupvalue.format("hh:mm A") + ' - ' + transformedDateToGroupvalue.add(1, 'hours').format("hh:mm A");
            event["configurationInformationCMS"] = jsonResult.columns;
            eventToDisplay.push({
                id: idRecord,
                title: _title ? _title.Value : '',
                start: _startForCriteria,
                time: _timeForCriteria,
                data: event,
                className: 'black-key',
                customUrl: _url,
                customStart: _startValue,
                customOrder: _orderValue,
                occId: idRecord,
            });

        });

    }

    var finalCustomOrder = 'customOrder';
    if (orderDirection == '1')
        finalCustomOrder = '-' + finalCustomOrder;
    var calendarListing = new FullCalendar.Calendar(calendarEl, {
        firstDay: get_start_day_of_week_from_locale(),
        locale: localeForCalendar,
        height: 'auto',
        initialDate: lastDate,
        eventOrder: finalCustomOrder,
        eventOrderStrict: true,
        initialView: initialViewForBlock,
        headerToolbar: {
            left: 'title',
            center: 'dayGridMonth,dayGridWeek,dayGridDay',
            right: 'prev,next today'
        },
        displayEventTime: false,
        views: {
            dayGridMonth: {
                titleFormat: { year: 'numeric', month: 'short' },
                dayMaxEventRows: 6
            },
            dayGridDay: {
                titleFormat: { year: 'numeric', month: 'short', day: 'numeric' },
                slotEventOverlap: false
            }

        },
        eventClick: function (info) {
            var props = info.event.extendedProps;
            if (props.customUrl && props.customUrl.Value !== null && props.customUrl.Value !== undefined && props.customUrl.Value !== '') {
                window.location.assign(props.customUrl.Value);
            }


        },
        eventDidMount: function (data) {
            var props = data.event.extendedProps;
            var publicId = props.occId;
            var element = $(data.el);
            element.attr('data-id', publicId);
            element.addClass('event-custom-' + publicId);
            var description = '';
            var startDay = parseInt(new Date(props.customStart).getDay());
            var myPosition = 'right center';
            var atPosition = 'center left';

            if (startDay === 6) startDay = 0;
                else startDay = startDay + 1;
            if (startDay <= 2) {
                myPosition = 'left center';
                atPosition = 'center right';
            }
            if ($('body').hasClass('tablet') || $('body').hasClass('mobile')) {
                myPosition = 'bottom center';
                atPosition = 'top center';
            }

            if (props.data["configurationInformationCMS"] !== null && props.data["configurationInformationCMS"] !== undefined && props.data["configurationInformationCMS"].length > 0) {
                $.each(props.data["configurationInformationCMS"], function (indexCol, columnConfigurated) {
                    if (props.data[columnConfigurated.Value] !== null && props.data[columnConfigurated.Value] !== undefined)
                        if (columnConfigurated.Value == '') {
                            description = description + '<p class="minimal-space">' + props.data[columnConfigurated.Value] + '</p>';
                        }
                        else {
                            description = description + '<p class="minimal-space"><strong>' + columnConfigurated.Value + ':</strong> ' + props.data[columnConfigurated.Value] + '</p>';
                        }
                });
            }

            if ($(window).width() >= 639) {
                $(data.el).qtip({
                    content: {
                        title: '<strong>' + data.event.title + '</strong>',
                        text: description
                    },
                    position: {
                        my: myPosition,
                        at: atPosition,
                    },
                    hide: {
                        delay: 50,
                        fixed: true,
                        effect: function () { $(this).fadeOut(50); }
                    }
                });
            }
            var customUrl = '';
            if(props.customUrl !== null && props.customUrl !==  undefined && props.customUrl.Value !== null && props.customUrl.Value !== undefined){
                 customUrl = props.customUrl.Value;
            }

            data.el.setAttribute('data-description', description);
            data.el.setAttribute('data-customurl', customUrl);
            $(data.el).find('span.fc-title').html(data.event.title);



        },
        events: eventToDisplay
    });

    calendarListing.render();
    processing_screen.addClass('is-hidden');
    processing_screen.removeClass('always_show');
    if ($(window).width() < 1024 || $("body").hasClass('tablet') || $("body").hasClass('mobile')) {
        $(document).ajaxStop(function () {
            responsive_calendar_listView(self);
        });
        self.find('button.fc-next-button,button.fc-prev-button,button.fc-button').on('click', function (e) {
            e.preventDefault();
            responsive_calendar_listView(self);
        });
    }
    return calendarListing;
}

function responsive_calendar_listView(self) {
    self.find('.block_processing').removeClass('hide-custom');
    if (self.find('.opportunity-calendar-content .calendar-container-responsive').length > 0) {
        self.find('.opportunity-calendar-content .calendar-container-responsive').empty();
    } else {
        var container = '<div class="opportunity-calendar-content"><div class="calendar-container-responsive"></div></div>';
        self.find('.full-calendar-widget .fc-view-harness').prepend(container);

    }
    var hidePastOccurrenceMobile = self.find('input[name="HidePastOccurrenceMobile"]').val();
    var calendarResponsive = self.find('.calendar-container-responsive');
    //self.find('.block_processing').show();
    if (self.find('.full-calendar-widget .fc-view').hasClass('fc-dayGridMonth-view')) {
        self.find('table.fc-scrollgrid tbody tr td.fc-day').each(function () {
            if (!$(this).hasClass('fc-day-other')) {
                var countEventToDisplay = 0;
                var datejc = $(this).attr('data-date');
                var day = '';
                if ($(this).hasClass('fc-day-sun')) { day = window.translation.sun + ': '; }
                if ($(this).hasClass('fc-day-mon')) { day = window.translation.mon + ': '; }
                if ($(this).hasClass('fc-day-tue')) { day = window.translation.tue + ': '; }
                if ($(this).hasClass('fc-day-wed')) { day = window.translation.wed + ': '; }
                if ($(this).hasClass('fc-day-thu')) { day = window.translation.thu + ': '; }
                if ($(this).hasClass('fc-day-fri')) { day = window.translation.fri + ': '; }
                if ($(this).hasClass('fc-day-sat')) { day = window.translation.sat + ': '; }
                if (day !== '') {
                    var dayNumber = $(this).find('.fc-daygrid-day-top a.fc-daygrid-day-number').text();
                    day = day + dayNumber;
                    var bodyAdd = '<div class="item-calen type-month day-num-' + datejc + '"><div class="title">' + day + '</div>';
                    $(this).find('.fc-daygrid-event-harness').each(function () {
                        var isPastEvent = false;
                        var date = $(this).find('.fc-event-time').text();
                        var title = $(this).find('.fc-event-title').text();
                        var link = $(this).find('a.fc-event');
                        var description = $(this).find('a.fc-event').attr('data-description');
                        var customUrl = $(this).find('a.fc-event').attr('data-customurl');
                        customUrl = (customUrl)?' href="'+customUrl+'"':'';
                        var event_past = '';
                        var green_key = '';
                        var blue_key = '';
                        var black_key = '';
                        if (link.hasClass('fc-past')) { event_past = 'fc-past event_past'; isPastEvent = true; }
                        if (link.hasClass('green-key')) { green_key = 'green_key'; }
                        if (link.hasClass('blue-key')) { blue_key = 'blue_key'; }
                        if (link.hasClass('black-key')) { black_key = 'black_key'; }
                        var urlOpp = link.attr('url-opp');
                        if ((hidePastOccurrenceMobile !== 'true') || (hidePastOccurrenceMobile === 'true' && isPastEvent === false)) {
                            bodyAdd += '<a arial-label="' + title + '" class="fc-event ' + event_past + ' ' + green_key + ' ' + blue_key + ' ' + black_key + '" '+customUrl+'>';
                            bodyAdd += '<div class="fc-content">';
                            if (date !== undefined && date !== null && date !== '') {
                                bodyAdd += '<span class="fc-time"> ' + date + '</span>';
                            }
                            if (title !== null && title !== undefined && title !== '') {
                                bodyAdd += '<span class="fc-title">' + title + '</span>';
                            }
                            bodyAdd += '</div>';
                            bodyAdd += '</a>';
                            bodyAdd += '<span class="fc-description">' + description + '</span>';
                            countEventToDisplay++;
                        } 
                    });
                    if (countEventToDisplay > 0) {
                        bodyAdd += '<span class="more">More</span></div>';
                        calendarResponsive.append(bodyAdd);
                    }
                }
            }
        });
    }
    else if (self.find('.full-calendar-widget .fc-view').hasClass('fc-dayGridWeek-view')) {
        self.find('table.fc-scrollgrid thead table.fc-col-header tr th').each(function () {
            var daynum = $(this).attr('data-date');
            var bodyAdd = '<div class="item-calen type-Week day-num-' + daynum + '">';
            bodyAdd += '<div class="title"> ' + $(this).find('a.fc-col-header-cell-cushion').text() + '</div>';
            var countEventToDisplay = 0;
            self.find('table.fc-scrollgrid tbody tr td.fc-daygrid-day').each(function () {
                var isPastEvent = false;
                if ($(this).attr('data-date') == daynum) {
                    $(this).find('.fc-daygrid-event-harness a.fc-event').each(function () {
                        var event_past = '';
                        var green_key = '';
                        var blue_key = '';
                        var black_key = '';
                        //var link = $(this).find('.fc-daygrid-event-harness a.fc-event');
                        if ($(this).hasClass('fc-past')) { event_past = 'event_past'; isPastEvent = true;}
                        if ($(this).hasClass('green-key')) { green_key = 'green_key'; }
                        if ($(this).hasClass('blue-key')) { blue_key = 'blue_key'; }
                        if ($(this).hasClass('black-key')) { black_key = 'black_key'; }
                        if ((hidePastOccurrenceMobile !== 'true') || (hidePastOccurrenceMobile === 'true' && isPastEvent === false)) {
                            var description = $(this).attr('data-description');
                            var customUrl = $(this).attr('data-customurl');
                            customUrl = (customUrl)?' href="'+customUrl+'"':'';
                            var urlOpp = $(this).attr('url-opp');
                            bodyAdd += '<a class="fc-event ' + event_past + ' ' + green_key + ' ' + blue_key + ' ' + black_key + '" '+customUrl+'>';
                            var date = $(this).find('.fc-event-time').text();
                            var title = $(this).find('.fc-event-title').text();
                            bodyAdd += '<div class="fc-content">';
                            if (date !== undefined && date !== null && date !== '') {
                                bodyAdd += '<span class="fc-time"> ' + date + '</span>';
                            }
                            if (title !== null && title !== undefined && title !== '') {
                                bodyAdd += '<span class="fc-title">' + title + '</span>';
                            }
                            bodyAdd += '</div>';
                            bodyAdd += '</a>';
                            bodyAdd += '<span class="fc-description">' + description + '</span>';
                            countEventToDisplay++;
                        }
                    });
                }           
            });
            if (countEventToDisplay>0) {
                bodyAdd += '<span class="more"> More</span ></div>';
                calendarResponsive.append(bodyAdd);
            }        });
    }
    else if (self.find('.full-calendar-widget .fc-view').hasClass('fc-dayGridDay-view')) {
        self.find('table.fc-scrollgrid thead table.fc-col-header tr th').each(function () {
            var daynum = $(this).attr('data-date');
            var bodyAdd = '<div class="item-calen type-Week day-num-' + daynum + '">';
            bodyAdd += '<div class="title"> ' + $(this).find('a.fc-col-header-cell-cushion').text() + '</div>';
            self.find('table.fc-scrollgrid tbody tr td.fc-daygrid-day .fc-daygrid-event-harness a.fc-event').each(function () {
                var event_past = '';
                var green_key = '';
                var blue_key = '';
                var black_key = '';
                //var link = $(this).find('.fc-daygrid-event-harness a.fc-event');
                if ($(this).hasClass('fc-past')) { event_past = 'event_past'; }
                if ($(this).hasClass('green-key')) { green_key = 'green_key'; }
                if ($(this).hasClass('blue-key')) { blue_key = 'blue_key'; }
                if ($(this).hasClass('black-key')) { black_key = 'black_key'; }
                var urlOpp = $(this).attr('url-opp');
                var date = $(this).find('.fc-event-time').text();
                var title = $(this).find('.fc-event-title').text();
                var description = $(this).attr('data-description');
                var customUrl = $(this).attr('data-customurl');
                customUrl = (customUrl)?' href="'+customUrl+'"':'';

                bodyAdd += '<a class="fc-event ' + event_past + ' ' + green_key + ' ' + blue_key + ' ' + black_key + '" '+customUrl+'>';
                bodyAdd += '<div class="fc-content">';
                if (date !== undefined && date !== null && date !== '') {
                    bodyAdd += '<span class="fc-time"> ' + date + '</span>';
                }
                if (title !== null && title !== undefined && title !== '') {
                    bodyAdd += '<span class="fc-title">' + title + '</span>';
                }
                bodyAdd += '</div>';
                bodyAdd += '</a>';
                bodyAdd += '<span class="fc-description">' + description + '</span>';

            });
            bodyAdd += '<span class="more"> More</span ></div>';
            calendarResponsive.append(bodyAdd);
        });

    }
    self.find('.calendar-container-responsive > .item-calen').each(function () {
        if ($(this).find('.fc-event').length > 0) {
            $(this).find('.fc-event').each(function (index5, el5) {
                if (index5 < 3) {
                    $(this).addClass('active');
                    $(this).siblings('.more').hide();
                } else {
                    $(this).addClass('hide');
                    $(this).siblings('.more').show();
                }
            });
        } else {
            $(this).find('.more').hide();
        }
    });
    calendarResponsive.find('span.more').on('click', function(){
        var i_last = $(this).siblings('.active').last();
        i_last.nextAll("*:lt(3)").removeClass('hide').addClass('active');
        if ($(this).siblings('.fc-event').last().hasClass('active')) {
            $(this).hide();
        }
    });
    if (self.hasClass('search-block-as-corporate'))
        self.find('.block_processing').hide();
    self.find('.full-calendar-widget .fc-view').hide();
} 

function listingcmsblock_auto_save_handler(self, listingcmsId, idTable, listingCMS) {
    autoSaveBlocks[listingcmsId].timerId = -1;
    //datatable_editable_event($('#' + idTable), afterEdit, e);
    var dataTableValues = $('#' + idTable).DataTable();
    listingcmsblock_process_save_changes(dataTableValues, idTable, listingCMS, listingcmsId, true);

}

function listingcmsblock_clear_interval_auto_save(self, listingcmsId) {
    var autoSave = self.find('input[name="isAutoSave"]').val();
    var isEditable = self.find('input[name="isEditable"]').val();
    if (isEditable === 'True' && autoSave === 'true') {
        if (counterAutoSaveBlocks[listingcmsId].timerId != -1) {
            clearInterval(counterAutoSaveBlocks[listingcmsId].timerId);
            counterAutoSaveBlocks[listingcmsId].timerId = -1;
            counterAutoSaveBlocks[listingcmsId].timeInitial = -1;
        }

    }

}

function listingcmsblock_clear_auto_save(self, listingcmsId) {
    var autoSave = self.find('input[name="isAutoSave"]').val();
    var isEditable = self.find('input[name="isEditable"]').val();

    if (isEditable === 'True' && autoSave === 'true') {
        if (autoSaveBlocks[listingcmsId].timerId != -1) {
            clearTimeout(autoSaveBlocks[listingcmsId].timerId);
            autoSaveBlocks[listingcmsId].timerId = -1;
        }

    }
}

function listingcmsblock_generate_auto_save(self, listingcmsId, idTable, listingCMS) {
    var autoSave = self.find('input[name="isAutoSave"]').val();
    var saveAfter = self.find('input[name="autoSaveAfter"]').val();
    var isEditable = self.find('input[name="isEditable"]').val();

    if (isEditable === 'True' && autoSave === 'true') {
        let saveAfterValue = 1000;
        if (saveAfter !== undefined && saveAfter !== null && saveAfter.trim() !== '') {
            saveAfterValue = parseInt(saveAfter) * 1000;
        }

        if (autoSaveBlocks[listingcmsId] === undefined)// it means is the first time, so we need schedule the cron
        {
            autoSaveBlocks[listingcmsId] = { timerId: -1 };
        } else {
            listingcmsblock_clear_auto_save(self, listingcmsId);
        }
        if (counterAutoSaveBlocks[listingcmsId] === undefined) {
            counterAutoSaveBlocks[listingcmsId] = { timerId: -1, timeInitial: -1 }
        }

        autoSaveBlocks[listingcmsId].timerId = setTimeout(listingcmsblock_auto_save_handler, saveAfterValue, self, listingcmsId, idTable, listingCMS);

    } else {
        console.log("AutoSave is not enabled!");
    }


}

function validateThClass(htmlHeader, index, className) {
    var thElement = $(htmlHeader).find('th').eq(index);
    return thElement.hasClass(className);
}

function load_listing_cms_datatable_slim(urlSite, self, list, totalItems, itemsPerPage, displayPaging, displaySearchSectionValue, processing_screen, listingcmsId, displayExportCSVValue,
    searchAutoSuggestValue, searchAutoSuggestFieldValue,
    blockId, objectSF, objectSFView, parametersUrlString, format, limit, offset, isEditable, calendarEventUrl, orderBy, orderDirection, rewriteUrlParameters, objectNameRelatedFiles, relatedFilesId, fieldNameObjectRelatedFiles, includeRelatedFiles, parametersUrlEnforceOrString, enforcedbyContactOrAccount, accountNameUserLogged,
    autoRefresh, lastMaxSystemStamp, channelName, lastFetchTime, isAutoSaveAction, searchAutoSuggestFieldValue, recordIds, additionalFields,
    traceToStore, specialLogTrace,buttonposition)
{

    //----- BEFORE DATA
    var idTable = 'dataTable' + listingcmsId;
    let isMobile = $('body').hasClass('mobile') ? true : false;
    var listingCMS = list.parents('.listingcmsblock');

    //--- Custom No Result Text:
    var noResultsText = self.find('#noResultsText').val();
    if (noResultsText === undefined || noResultsText === null || noResultsText === '')
        noResultsText = window.translation.there_is_not_items_to_display;
    itemsPerPage = (itemsPerPage && parseInt(itemsPerPage) > 0) ? itemsPerPage : 10;
    itemsPerPage = Number(itemsPerPage);

    var onlyFirst = false;
    var onlyLast = false;

    //-- Sort Configuration
    var defaultSort = parseInt(listingCMS.find('input[name="defaultSorteableColumn"]').val()); 
    var sortConfigured = 'asc';
    if ($('input[name="SortDirection-' + listingcmsId + '"]').length > 0) {
        if ($('input[name="SortDirection-' + listingcmsId + '"]').val() != '' &&
            $('input[name="SortDirection-' + listingcmsId + '"]').val() != "ASCENDING") {
            sortConfigured = "desc";
        }
    }
    if (defaultSort == null || defaultSort == undefined)
        defaultSort = 1;
    //Detect if the grid have the axiliar automatic check box header, then add 1 to sortcolumn
    if (listingCMS.find('input[name="SelectCheck"]').length > 0) {
        defaultSort++
    }

    //--- Edit Actions
    var autoSave = listingCMS.find('input[name="isAutoSave"]').val();
    var displaySaveButton = listingCMS.find('input[name="displaySaveButton"]').val();
    var afterEdit = function () {
        if (($('#' + idTable + ' td.datatable-cell-edited').length > 0 || $('#' + idTable + ' td.datatable-cell-edited-checkbox').length > 0) && $('#' + idTable + ' td label.error').length == 0) {
            $('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').hide();

            if ((displaySaveButton === 'true' && autoSave === 'true') || autoSave === 'false') {
                //$('#' + idTable + 'SaveChanges').show();
                $('#' + idTable + '_wrapper .dt-buttons').find('#' + idTable + 'SaveChanges').show();
            }
            if (autoSave === 'true') {
                listingcmsblock_generate_auto_save(listingCMS, listingcmsId, idTable, listingCMS);
            }

            //$('#cancel-button').show();
        } else {
            $('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').show();
            $('#' + idTable + 'SaveChanges').hide();
            //$('#cancel-button').hide();
            listingcmsblock_clear_auto_save(listingCMS, listingcmsId);
        }
        if ($('#' + idTable + '  tr.error').length == 0) {
            $(".validation-summary-errors").hide();
        }
    };

    //--- Paging
    var paging = displayPaging == "True";

    //--- Search Section
    var search = displaySearchSectionValue == "True";


    //---- Separator for CSV files
    var fieldSeparatorValue = ',';
    var configuredSeparator = listingCMS.find('input[name="customSeparatorCSV"]').val();
    switch (configuredSeparator) {
        case 'semicolon': fieldSeparatorValue = ';';
            break;
        case 'tab': fieldSeparatorValue = '\t';
            break;
        case 'space': fieldSeparatorValue = ' ';
            break;
        case 'comma': fieldSeparatorValue = ',';
            break;
        case '': fieldSeparatorValue = ',';
            break;
    }


    //----- CSV Buttons
    var defaultButtons = [];
    if (displayExportCSVValue == "True") {
        defaultButtons = [{
            extend: 'csv',
            charset: 'UTF-8',
            bom: true,
            text: window.translation.export_csv,
            fieldSeparator: fieldSeparatorValue,
            exportOptions: {
                orthogonal: "myExport",
                columns: '.is-exportable',
                format: {
                    body: function (data, row, column, node) {

                        var $div = $(node).find('.show-for-small-only');
                        if ($div.length) {
                            // Remove the div and its content
                            data = data.replace($div.text(), '');
                        }
                        var $divFilter = $(node).find('.filter-value');
                        if ($divFilter.length) {
                            // Remove the div and its content
                            data= data.replace($divFilter.text(), '');
                        }
                        return data;
                    }
                }
            }
        }];
    }


    //--- Column configurations
    var columnSettings = [];
    var indexColumn = 0;
    var autoWidth = true;
    $('#' + idTable + ' thead th').each(function () {
        var widthData = $(this).attr('data-column-width');
        if (widthData && widthData != 0 && widthData != '') {
            //$(this).attr('style', 'min-width: ' + widthData + 'px; max-width: ' + widthData + 'px; width: ' + widthData + 'px !important;');
            var columnInfo = new Object();
            columnInfo.targets = indexColumn;
            columnInfo.width = widthData + "%";
            columnSettings.push(columnInfo);
            autoWidth = false;
        }

        var sorteableData = $(this).attr('data-not-sorteable');
        if (sorteableData && sorteableData == 'True') {
            var columnInfo = new Object();
            columnInfo.targets = indexColumn;
            columnInfo.orderable = false;
            columnSettings.push(columnInfo);
        }
        indexColumn++;
    });


    columnSettings.push({
        targets: "decimal-column",
        type: "decimal-num"
    });
    columnSettings.push({
        targets: "datepicker-column",
        type: "custom-order"
    });
    columnSettings.push({
        targets: "onlydatepicker-column",
        type: "custom-order"
    });
    columnSettings.push({
        targets: 0,
        visible: false
    });
    columnSettings.push({
        targets: "_all",
        render: function (data, type, row) {
            if (type === 'myExport') {
                var el = $('<div></div>');
                if (el.html(data).find('input[type="checkbox"].checkbox-cell-value').length > 0) {
                    if (el.html(data).find('input[type="checkbox"].checkbox-cell-value:checked').length > 0) {
                        return "true";
                    }
                    else {
                        return "false";
                    }
                }
                el.html(data).find('.show-for-small-only').remove();
                el.html(data).find('.filter-value').remove()
                return el.text();
            }
            return data;
        }
    });


    var autosugged_items = [];

    if ($.fn.DataTable.isDataTable($('#' + idTable))) {
        $('#' + idTable).DataTable().destroy();
        $('#' + idTable).find('tbody').empty();
    }
    if(!autoWidth){
        $('#' + idTable).addClass('break-word-table');
    }

    var datatable = $('#' + idTable).DataTable({
        "bFilter": true,
        "ajax": {
            method: "POST",
            url: urlSite + "admin/GetSalesforceViewRecords",
            data: { blockId: blockId, Sfobject: objectSF, Sfview: objectSFView, ParametersUrl: parametersUrlString, formatToDisplay: format, listingCmsId: listingcmsId, totalItems: totalItems, limit: limit, offset: offset, isEditable: isEditable, calendarEventUrl: calendarEventUrl, orderBy: orderBy, orderDirection: orderDirection, rewriteParameters: rewriteUrlParameters, objectNameRelatedFiles: objectNameRelatedFiles, relatedFilesId: relatedFilesId, FieldNameToObjectRelatedFiles: fieldNameObjectRelatedFiles, includeRelatedFiles: includeRelatedFiles, ParametersUrlEnforceOr: parametersUrlEnforceOrString, EnforcedbyContactOrAccount: enforcedbyContactOrAccount, AccountNameUserLogged: accountNameUserLogged, AutoRefresh: autoRefresh, LastMaxSystemStamp: lastMaxSystemStamp, ChannelName: channelName, LastFetchTime: lastFetchTime, autoSaveRequest: isAutoSaveAction, searchAutoSuggestFieldValue: searchAutoSuggestFieldValue, RecordIds: JSON.stringify(recordIds), AdditionalFields: additionalFields },
            beforeSend: function () {
                processing_screen.removeClass('is-hidden');
            },
            dataSrc: function (json) {                
                if (json.status == 'error') {
                    var noResultsText = window.translation.please_check_block_configuration;
                    if (json.message && $('body').hasClass('backend-page')) {
                        noResultsText = noResultsText + ' (' + window.translation.error + "): " + json.message;
                    }
                    json.data = [];
                    self.find('.no-result-section').html('<label>' + noResultsText + '</label>');
                    self.find('.no-result-section').removeClass('is-hidden');
                }
                return json.data || json;
            }
        },
        "bPaginate": paging,
        "bLengthChange": false,
        "bProcessing": false,
        "pageLength": itemsPerPage,
        order: [[defaultSort, sortConfigured]],
        "columnDefs": columnSettings,
        autoWidth: autoWidth,
        dom: 'Bfrtip',
        buttons: defaultButtons,
        "oLanguage": {
            "oPaginate": {
                "sPrevious": window.translation.sPrevious,
                "sNext": window.translation.sNext
            },
            "sZeroRecords": noResultsText,
            "sInfoFiltered": window.translation.sInfoFiltered,
            "sInfo": window.translation.sInfo,
            "sLoadingRecords": window.translation.sLoadingRecords,
            "sSearch": window.translation.search
        },
        drawCallback: function (settings) {
            datatable_add_cells_data_for_mobile_headers(this);
        },
        initComplete: function (settings, json) {
            if (json.data && json.status != 'error') {
                //validate
                traceToStore += ('RETURNED>' + getCurrentDateTimeFormatted() + ";");
                var isEditable = json.isEditable;
                var columns = json.columns;
                var records = json.data;
                var firstValue = json.firstValue;
                var lastValue = json.lastValue;
                var size = json.size;
                var columnsName = JSON.parse(json.columnsName);
                var dynamicFilterList = json.dynamicFilterList;
                var columnFilterHeaders = json.columnFilterHeaders;
                var columnFilterHeadersWithPreset = json.columnFilterHeadersWithPreset;


                if (json.HideIfNotResults === true && (json.status == 'notfound' || json.status == 'ok' && json.data && json.data.length == 0)) {
                    //$('input[name="listingcmsid"][value=' + listingcmsId + ']').closest('.container-block-section').find('.block-wrapper').addClass('is-hidden');
                    $('input[name="listingcmsid"][value=' + listingcmsId + ']').parents('.container-block-section').first().addClass('is-hidden');
                }
                //---- Logic to load more settings Part II
                $('#tableInformation' + listingcmsId + ' input#firstValue').val(firstValue);
                $('#tableInformation' + listingcmsId + ' input#lastValue').val(lastValue);
                var limit = $('#tableInformation' + listingcmsId + ' input#limitDataTable').val();
                var offset = $('#tableInformation' + listingcmsId + ' input#offsetDataTable').val();

                for (var l = 0; l < columnsName.length; l++) {
                    addDataTypeToColumnCells(idTable, l, columnsName[l] + ": ", 'data-column-name-field')
                }

                //--- Logic to load more settings
                totalItems = (parseInt(totalItems) === 0) ? records.length : (parseInt(totalItems) <= records.length) ? parseInt(totalItems) : records.length;
                onlyFirst = totalItems < limit && offset != 0;
                onlyLast = totalItems >= limit && offset == 0;
                $('#tableInformation' + listingcmsId + ' input#totalData').val(totalItems);
                if (totalItems == 0) {
                    $('#' + idTable + '_wrapper .dataTables_info').html(window.translation.sInfo.replaceAll('_START_', 0).replaceAll('_END_', 0).replaceAll('_TOTAL_', 0));
                }


                //--- Store picklist data for edit
                if (json.pickListsInfo != undefined && json.pickListsInfo != null) {
                    localStorage.setItem('picklist-info-' + listingcmsId, JSON.stringify(json.pickListsInfo));
                }

                var includeDynamicFilter = dynamicFilterList != undefined;
                var includeColumnFilters = columnFilterHeaders != undefined;
                var includePresetColumnFilters = columnFilterHeadersWithPreset != undefined;


                //--- Remove default search filters
                $('#' + idTable).closest('.dataTables_wrapper').find(".dataTables_filter").remove();

                //-- Add styles of buttons
                $('#' + idTable).closest('.dt-buttons').find("button.buttons-html5").addClass('button');
                if ($('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').length > 0) {
                    $('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').addClass('button');
                }
                if ($('#' + idTable + '_wrapper .dt-buttons').length > 0 && isEditable) {
                    if (autoSave == 'true' && isEditable) {
                        var message = listingCMS.find('input[name="initial_message_auto_save"]').val();
                        if (displaySaveButton === 'false') {
                            $('#' + idTable + '_wrapper .dt-buttons').append('<p class="auto-save-message">' + message + '</p>');
                        }
                    }
                    var buttonSaveChanges = '<button id="' + idTable + 'SaveChanges" class="button primary-button dt-button buttons-csv buttons-html5 auto-save-button">' + '<span>' + window.translation.save_changes + '</span>';
                    if (displaySaveButton === 'true' && autoSave == 'true') {
                        buttonSaveChanges += '<span class="auto-save-message"></span>';
                    }
                    buttonSaveChanges += '</button>';
                    $('#' + idTable + '_wrapper .dt-buttons').append(buttonSaveChanges);
                    $('#' + idTable + '_wrapper .dt-buttons').find('#' + idTable + 'SaveChanges').hide();

                    if (displaySaveButton === 'false') {
                        $('#' + idTable + 'SaveChanges').hide();
                    }
                }


                //--- Make Visible Table
                $('#' + idTable).closest('.scrolledTable').removeAttr('style');


                //--- Logic to action to load more
                if (offset != 0 || totalItems >= limit) {
                    listingcmsblock_add_load_more_datatable(listingcmsId, onlyFirst, onlyLast);
                    var fromValue = $('#tableInformation' + listingcmsId + ' input#firstValue').val();
                    var toValue = $('#tableInformation' + listingcmsId + ' input#lastValue').val();
                    var infoText = window.translation.loaded_records + ": " + window.translation.from_text + " '" + fromValue + "' " + window.translation.to_text + " '" + toValue + "'";
                    if ($("#dataTable" + listingcmsId + "_info").text() != '') {
                        var currentInfoText = $("#dataTable" + listingcmsId + "_info").text().split('.')[0];
                        $("#dataTable" + listingcmsId + "_info").text(currentInfoText + ". " + infoText);
                        $("#dataTable" + listingcmsId + "_info").attr('tabindex', '0');
                    }
                }

                //-- Logic for editable
                if (isEditable) {
                    init_datatable_editable(this, afterEdit);
                }

                populateTableNoValue(idTable);

                //-- Add filter dynamics
                if (json.dynamicFilterDetail) {
                    listingcmsblock_load_dynamic_filters(self, json.dynamicFilterDetail, json.prefilterDefinition);
                }

                //-- Add facet filters
                if (json.dynamicFacetsDataLeft) {
                    listingcmsblock_load_dynamic_facets(self, json.dynamicFacetsDataLeft, "left", json.prefilterDefinition);
                }
                if (json.dynamicFacetsDataTop) {
                    listingcmsblock_load_top_facets(self, json.dynamicFacetsDataTop, json.prefilterDefinition);
                }
                if (json.dynamicFacetsDataRight) {
                    listingcmsblock_load_dynamic_facets(self, json.dynamicFacetsDataRight, "right", json.prefilterDefinition);
                }

                //--- Autorefresh
                if (autoRefresh === true) {

                    if (json.lastMaxSystemStamp !== undefined)
                        self.find('input[name="LastMaxSystemStamp"]').val(json.lastMaxSystemStamp);

                    if (json.lastFetchTime !== undefined)
                        self.find('input[name="LastFetchTime"]').val(json.lastFetchTime);
                }

                //---  Hide processing screen
                processing_screen.addClass('is-hidden');
                processing_screen.removeClass('always_show');

                if (listingCMS.hasClass('occs-by-volunteer-opportunity-sp')) {
                    activate_cancel_link_for_occurrences(listingCMS);
                } else if (listingCMS.hasClass('account-overview-history')) {
                    activate_report_hours_for_connection(listingCMS);
                }

                

                //---- Adding trace
                traceToStore += ('FINISHED>' + getCurrentDateTimeFormatted() + ';');
                if (specialLogTrace) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "save-trace",
                        data: { listingCmsId: listingcmsId, traceDetail: traceToStore }
                    });
                }

                //--- Column Filters
                if (includeColumnFilters) {
                    add_column_filters_datatable_listing(this, columnFilterHeaders, columnFilterHeadersWithPreset);
                }
            }
            else {

                //---  Hide processing screen
                processing_screen.addClass('is-hidden');
                processing_screen.removeClass('always_show');
            }
        },
        "fnDrawCallback": function () {
            if ((offset != 0 || totalItems >= limit) && !$('#tableInformation' + listingcmsId).closest('.listingcmsblock.blockContainer').hasClass('SOQL')
                && (totalItems == 1000 || totalItems < 1000 && offset != 0)) {

                listingcmsblock_add_load_more_datatable(listingcmsId, onlyFirst, onlyLast);

                var fromValue = $('#tableInformation' + listingcmsId + ' input#firstValue').val();
                var toValue = $('#tableInformation' + listingcmsId + ' input#lastValue').val();
                var infoText = window.translation.loaded_records + ": " + window.translation.from_text + " '" + fromValue + "' " + window.translation.to_text + " '" + toValue + "'";


                if ($("#dataTable" + listingcmsId + "_info").text() != '') {
                    var currentInfoText = $("#dataTable" + listingcmsId + "_info").text().split('.')[0];
                    $("#dataTable" + listingcmsId + "_info").text(currentInfoText + ". " + infoText);
                    $("#dataTable" + listingcmsId + "_info").attr('tabindex', '0');
                }
            }
            populateTableNoValue(idTable);
            addCheckBoxForEditable($('#' + idTable), afterEdit);
            addButtonsForEditable($('#' + idTable), afterEdit);
            //custom_dropdown_button();


            //---
            if (offset && Number(offset) > 0) {
                var startElementNumber = Number(offset) + 1;
                var api = this.api();
                var $pagination = $(api.table().container()).find('.dataTables_paginate');
                var pageLength = api.page.len(); // Get the number of elements per page
                var currentPage = api.page.info().page; // Get the current page index

                // Calculate the starting page number based on the starting element number
                var startPage = Math.ceil(startElementNumber / pageLength);

                // Modify pagination buttons
                $pagination.find('a.paginate_button').each(function () {
                    var $button = $(this);
                    var text = $button.text();
                    if ($button.hasClass('previous') || $button.hasClass('next')) {
                        return; // Skip the previous and next buttons
                    }

                    var pageNum = parseInt(text, 10);
                    if (!isNaN(pageNum)) {
                        var newPageNum = startPage + pageNum - 1;
                        $button.text(newPageNum);
                    }
                });
            }
            //--
            if (paging === true) {
                //accesibility
                var api = this.api();
                var $pagination = $(api.table().container()).find('.dataTables_paginate');
                $pagination.find('a.paginate_button').each(function () {
                    var $button = $(this);
                    if ($button.hasClass('previous')) {
                        $button.attr('aria-label', window.translation.pa_item_previous_option);
                    } else if ($button.hasClass('next')) {
                        $button.attr('aria-label', window.translation.pa_item_next_option);
                    } else {
                        var text = $button.text();
                        $button.attr('aria-label', window.translation.pag_item_next_number + ' ' + text);
                    }
                });
            }

            $('#' + idTable).find('thead tr th').each(function (index, item) {
                if ($(this).find('input.header-group-checker').length > 0) {
                    $(this).attr('aria-label', window.translation.listing_select_all_rows);

                } else {
                    let fieldName = $(this).attr('data-aria-label');
                    if (fieldName !== null && fieldName !== undefined && fieldName !== '') {
                        let currentAriaLabel = $(this).attr('aria-label');
                        if (currentAriaLabel !== null && currentAriaLabel !== undefined && currentAriaLabel !== '') {
                            let refinedAriaLabel = currentAriaLabel.replace(fieldName, "");
                            refinedAriaLabel = refinedAriaLabel.trim();
                            refinedAriaLabel = refinedAriaLabel.replaceAll(' ', '_');
                            if (window.translation[refinedAriaLabel] !== null && window.translation[refinedAriaLabel] !== undefined) {
                                let newAriaLabel = fieldName + ' ' + window.translation[refinedAriaLabel];
                                $(this).attr('aria-label', newAriaLabel);
                            }
                        }
                    }
                }
            });

        },
        createdRow: function (row, data, dataIndex) {
            updateDataSortAttributes($(row), isEditable);
            var rowId = $(row).find('input.record-id').val();
            $(row).attr('id', rowId);
            $(row).find('td').each(function () {
                let currentHtml = $(this).prop('outerHTML');
                let tabIndexText = validateTextForDataTable(currentHtml) === false ? 'tabindex="0"' : "";
                if (isEmptyData(currentHtml) === true) {
                    tabIndexText = "";
                }
                if (tabIndexText !== '') {
                    $(this).attr('tabindex', '0');
                }
            });
            if ($(row).find('input.record-id').length > 0) {
                var inputRecordId = $(row).find('input.record-id');
                if (inputRecordId !== null && inputRecordId !== undefined) {
                    var title = inputRecordId.attr('data-suggest');
                    if (title !== undefined && title !== null && title !== '') {
                        if (title.includes(';')) {
                            let array_values = title.split(';');
                            for (var i = array_values.length - 1; i >= 0; i--) {
                                if (array_values[i] !== null && array_values[i] !== undefined && array_values[i] !== '' && !autosugged_items.includes(array_values[i])) {
                                    autosugged_items.push(array_values[i]);
                                }
                            }
                        } else {

                            if (title) {
                                title = title.replaceAll('~', ';');
                            }
                            if (!autosugged_items.includes(title)) {
                                autosugged_items.push(title);
                            }
                        }
                    }
                }
            }

        }
    });
    if (isEditable && (buttonposition == 'FOOTER' || buttonposition == 'BOTH')) {
        var buttonsContainer = $('#' + idTable + '_wrapper .dt-buttons').first();
        if (buttonposition == 'FOOTER') {
            $('#' + idTable + '_wrapper').append(buttonsContainer);
        } else {
            var clonedButtons = buttonsContainer.clone();
            $('#' + idTable + '_wrapper').append(clonedButtons);
        }
    }

    //----- AFTER DATA
   
    custom_dropdown_button();

        $('#' + idTable + ' .truncate-column').each(function () {
            var theContent = $(this).text();
            var numberCharacters = $(this).data('val-truncate');
            var n = theContent.substr(0, numberCharacters);
            $(this).html(n);
        });

        var blockTable = $('#' + idTable).parents('.listingcmsblock');
        if (blockTable !== undefined && blockTable !== null) {
            var hideSummary = blockTable.find('input[name="disableSumaryResult"]').val() === 'True';
            if (hideSummary === true) {
                blockTable.find('.dataTables_info.custom-info').hide();
                blockTable.find('.dataTables_info').hide();
            }
        }

        if (isEditable) {

            $(document).on('click','#' + idTable + 'SaveChanges', function (e) {
                listingcmsblock_clear_auto_save(listingCMS, listingcmsId);
                datatable_editable_event($('#' + idTable), afterEdit, e);
                var dataTableValues = $('#' + idTable).DataTable();
                listingcmsblock_process_save_changes(dataTableValues, idTable, listingCMS, listingcmsId, false);
            });
        }


        if (searchAutoSuggestValue == 'True' && searchAutoSuggestFieldValue != "") {
            let search_input = listingCMS.find('.search-section input[type="text"]');
            asign_autosugged_search_field(search_input, autosugged_items)
        }


        if ($('#' + idTable + " input[name='select-all-visibles']").length > 0) {

            $('#' + idTable).on('click', "input[name='select-all-visibles']", function () {
                // Get all rows with search applied
                var rows = datatable.rows({ search: 'applied' }).nodes();

                // Check/uncheck checkboxes for all rows in the table
                $('input.check-record[type="checkbox"]', rows).prop('checked', this.checked);
            });
            $('#' + idTable).on('change', 'tbody input.check-record[type="checkbox"]', function () {

                var total_checked = datatable.$('input.check-record[type="checkbox"]:checked').length;
                var total_rows = datatable.rows().count();
                if (total_checked == total_rows) {
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('indeterminate', false);
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('checked', true);
                } else if (total_checked > 0) {
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('checked', false);
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('indeterminate', true);
                } else {
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('indeterminate', false);
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('checked', false);
                }
            });
        }
}

function addDataTypeToColumnCells(tableId, columnIndex, dataType, attributeName) {
    // Get the table element by its ID
    var table = document.getElementById(tableId);
    if (!table) return; // Exit if table not found

    // Get all the rows in the table's body
    var rows = table.getElementsByTagName('tbody')[0].getElementsByTagName('tr');

    // Loop through each row
    for (var i = 0; i < rows.length; i++) {
        // Get the cells in the row
        var cells = rows[i].cells;
        // Check if the cell at columnIndex exists
        if (cells.length > columnIndex) {
            // Add the data-type-of-data attribute to the cell at columnIndex
            cells[columnIndex].setAttribute(attributeName, dataType);
        }
    }
}

function updateDataSortAttributes(row, isEditable) {
    // Use jQuery to find all spans with the class 'span-data-date' within the given row
    $(row).find('.span-data-date').each(function () {
        // Retrieve the 'data-date-for-sort' attribute from the span
        var dataDateForSort = $(this).attr('data-date-for-sort');
        if (dataDateForSort == '') {
            dataDateForSort = '0000000000';
        }
        // Set the 'data-sort' attribute of the closest td element
        $(this).closest('td').attr('data-sort', dataDateForSort);
    });


    $(row).find('.boolean-attr-data').each(function () {
        // Retrieve the 'data-boolean-for-search' attribute from the span
        var dataBool = $(this).attr('data-boolean-for-search');
        // Set the 'data-sort' / 'data-search' attribute of the closest td element
        $(this).closest('td').attr('data-search', dataBool);
        $(this).closest('td').attr('data-sort', dataBool);
    });

    $(row).find('.span-data-number').each(function () {
        // Retrieve the 'data-number-for-sort' attribute from the span
        var dataNumberForSort = $(this).attr('data-number-for-sort');
        dataNumberForSort = (dataNumberForSort) ? dataNumberForSort : 0;
        // Set the 'data-sort' attribute of the closest td element
        $(this).closest('td').attr('data-search', dataNumberForSort);
        $(this).closest('td').attr('data-sort', dataNumberForSort);
    });

    $(row).find('.cell-edit-btn').each(function () {
        if (isEditable)
            $(this).closest('td').addClass('datatable-cell-editable');
    });
}

function ensureString(input) {
    if (input === "True" || input === "False") {
        return input;
    } else {
        return String(input);
    }
}

function listingcmsblock_render_sfviews_datatable(list, columns, records, totalItems, itemsPerPage, displayPaging, displaySearchSectionValue, processing_screen, listingcmsId, defaultSort, firstValue, lastValue, size, displayExportCSVValue, noResultsText, columnsName, isEditable, searchAutoSuggestValue, searchAutoSuggestFieldValue, dynamicFilterList, columnFilterHeaders, columnFilterHeadersWithPreset) {
    var htmlHeader = columns;
    if (records) {
        let isMobile = $('body').hasClass('mobile') ? true : false;

        let visibles = [];
        if (displayExportCSVValue === 'True') {
            //verifying the hidden columns
            if (columns.indexOf('item-is-hidden') !== -1) {
                let tmpTable = $("<div/>").html(columns);
                tmpTable.find('th').each(function () {
                    if ($(this).hasClass('item-is-visible')) {
                        visibles.push('true');
                    } else if ($(this).hasClass('item-is-hidden')) {
                        visibles.push('false');
                    } else {
                        visibles.push('Id');
                    }

                });

            }
        }

        var includeDynamicFilter = dynamicFilterList != undefined;
        var includeColumnFilters = columnFilterHeaders != undefined;
        var includePresetColumnFilters = columnFilterHeadersWithPreset != undefined;
        var autosugged_items = [];
        // Parameters to get more records from view
        $('#tableInformation' + listingcmsId + ' input#firstValue').val(firstValue);
        $('#tableInformation' + listingcmsId + ' input#lastValue').val(lastValue);
        var limit = $('#tableInformation' + listingcmsId + ' input#limitDataTable').val();
        var offset = $('#tableInformation' + listingcmsId + ' input#offsetDataTable').val();

        var htmlBody = '';
        var numberRecords = records.length;
        var countItems = 0;
        totalItems = (parseInt(totalItems) === 0) ? records.length : (parseInt(totalItems) <= records.length) ? parseInt(totalItems) : records.length;
        itemsPerPage = (parseInt(itemsPerPage) <= totalItems && parseInt(itemsPerPage)) ? parseInt(itemsPerPage) : parseInt(totalItems);
        $('#tableInformation' + listingcmsId + ' input#totalData').val(totalItems);
        var onlyFirst = totalItems < limit && offset != 0;
        var onlyLast = totalItems >= limit && offset == 0;
        var columnsNameInfo = JSON.parse(columnsName);

        var idTable = 'dataTable' + listingcmsId;

        var sortConfigured = 'asc';
        if ($('input[name="SortDirection-' + listingcmsId + '"]').length > 0) {
            if ($('input[name="SortDirection-' + listingcmsId + '"]').val() != '' &&
                $('input[name="SortDirection-' + listingcmsId + '"]').val() != "ASCENDING") {
                sortConfigured = "desc";
            }
        }

        var listingCMS = list.parents('.listingcmsblock');
        var autoSave = listingCMS.find('input[name="isAutoSave"]').val();
        var displaySaveButton = listingCMS.find('input[name="displaySaveButton"]').val();
        var afterEdit = function () {
            if (($('#' + idTable + ' td.datatable-cell-edited').length > 0 || $('#' + idTable + ' td.datatable-cell-edited-checkbox').length > 0) && $('#' + idTable + ' td label.error').length == 0) {
                $('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').hide();
                if ((displaySaveButton === 'true' && autoSave === 'true') || autoSave === 'false') {
                    $('#' + idTable + 'SaveChanges').show();
                }
                if (autoSave === 'true') {
                    listingcmsblock_generate_auto_save(listingCMS, listingcmsId, idTable, listingCMS);
                }

                //$('#cancel-button').show();
            } else {
                $('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').show();
                $('#' + idTable + 'SaveChanges').hide();
                //$('#cancel-button').hide();
                listingcmsblock_clear_auto_save(listingCMS, listingcmsId);
            }
            if ($('#' + idTable + '  tr.error').length == 0) {
                $(".validation-summary-errors").hide();
            }
        };

        if (defaultSort == null || defaultSort == undefined)
            defaultSort = 1; // defaultSort = 0; tgis is due to we've added teh id as first coluns as default but hidden


        //--- Detect if the grid have the axiliar automatic check box header, then add 1 to sortcolumn
        if (htmlHeader.indexOf('SelectCheck') != -1) {
            defaultSort++
        }

        for (var i = 0; i < totalItems; i++) {
            var itemResult = JSON.parse(records[i]);
            if (itemResult) {
                var rowHtmltd = "";
                $.each(itemResult, function (index, item) {
                    var classTd = ((isEditable && item.indexOf('cell-edit-btn') != -1) ? 'datatable-cell-editable' : '');
                    var data_attr = '';
                    var data_attr_search = '';
                    if (item != null && item.includes('data-date-for-sort')) {
                        var val_attr = $(item).filter('.span-data-date').attr('data-date-for-sort');
                        data_attr = (val_attr) ? 'data-sort="' + val_attr + '"' : 'data-sort="0000000000"';
                    }

                    if (item != null && item.includes('data-boolean-for-search')) {
                        var val_attr_bool = $(item).filter('.boolean-attr-data').attr('data-boolean-for-search');
                        data_attr = 'data-search="' + val_attr_bool + '" data-sort="' + val_attr_bool + '" ';
                    }

                    if (item != null && item.includes('data-number-for-sort')) {
                        var val_attr_number = $(item).filter('.span-data-number').attr('data-number-for-sort');
                        val_attr_number = (val_attr_number) ? val_attr_number : 0;
                        data_attr = 'data-search="' + val_attr_number + '" data-sort="' + val_attr_number + '" ';
                    }

                    if (searchAutoSuggestValue == 'True' && searchAutoSuggestFieldValue != "" && item.includes('data-suggest')) {
                        var tmpDiv = document.createElement('div');
                        tmpDiv.innerHTML = item;
                        if ($(tmpDiv).find('input.record-id').length > 0) {
                            var inputRecordId = $(tmpDiv).find('input.record-id');
                            if (inputRecordId !== null && inputRecordId !== undefined) {
                                var title = inputRecordId.attr('data-suggest');
                                if (title !== undefined && title !== null && title !== '') {
                                    data_attr_search = title.replaceAll('~', ';');

                                    if (title.includes(';')) {
                                        let array_values = title.split(';');
                                        for (var i = array_values.length - 1; i >= 0; i--) {
                                            if (array_values[i] !== null && array_values[i] !== undefined && array_values[i] !== '' && !autosugged_items.includes(array_values[i])) {
                                                autosugged_items.push(array_values[i]);
                                            }
                                        }
                                    } else {

                                        if (title) {
                                            title = title.replaceAll('~', ';');
                                        }
                                        if (!autosugged_items.includes(title)) {
                                            autosugged_items.push(title);
                                        }
                                    }
                                }
                            }
                        }

                        data_attr_search = (data_attr_search) ? 'data-search="' + data_attr_search + ' {specialkeytosearch}"' : '';
                        item = $("<div/>").html(item).html();
                        var value_a = $("<textarea/>").html(item.replace(/<.*?>/g, '')).text().trim();
                        data_attr_search = data_attr_search.replace('{specialkeytosearch}', '-' + value_a + '-');
                        var columnNameItem = "";
                        var indexColum = index - 1;
                        if (indexColum > -1)
                            columnNameItem = (columnsNameInfo[indexColum] !== null && columnsNameInfo[indexColum] !== undefined && columnsNameInfo[indexColum] !== '') ? columnsNameInfo[indexColum] + ": " : "";
                        let additionClass = "";
                        if (displayExportCSVValue === 'True') {
                            if (visibles[index] !== null && visibles[index] !== undefined && visibles[index] !== 'Id') {
                                if (visibles[index] === 'false') {
                                    additionClass = 'item-is-hidden';
                                }
                            }
                        }
                        let tabIndexText = validateTextForDataTable(item) === false ? 'tabindex="0"' : "";
                        if (item === '') {
                            tabIndexText = "";
                        }
                        if (isMobile === false)
                            rowHtmltd += "<td " + data_attr + " " + data_attr_search + " " + tabIndexText + " class='" + classTd + " " + additionClass + "' data-column-name-field='" + columnNameItem + "'><span class='show-for-small-only'>-" + value_a + "-</span>" + item + "</td>";
                        else
                            rowHtmltd += "<td " + data_attr + " " + data_attr_search + " " + tabIndexText + " class='" + classTd + " " + additionClass + "'><strong class='show-for-small-only'>" + columnNameItem + " </strong>" + item + "</td>";
                    } else {
                        var useFtlerValue = false;
                        var value_a = $("<textarea/>").html(item.replace(/<.*?>/g, '')).text().trim();
                        if (item.indexOf('boolean-attr-data') != -1) {
                            value_a = "False";
                            if (item.indexOf('data-boolean-for-search=True') != -1) {
                                value_a = "True";
                            }
                            useFtlerValue = true;
                        }
                        item = $("<div/>").html(item).html();
                        var columnNameItem = "";
                        var indexColum = index - 1;
                        if (indexColum > -1)
                            columnNameItem = (columnsNameInfo[indexColum] !== null && columnsNameInfo[indexColum] !== undefined && columnsNameInfo[indexColum] !== '') ? columnsNameInfo[indexColum] + ": " : "";
                        let additionClass = "";
                        if (displayExportCSVValue === 'True') {
                            if (visibles[index] !== null && visibles[index] !== undefined && visibles[index] !== 'Id') {
                                if (visibles[index] === 'false') {
                                    additionClass = 'item-is-hidden';
                                }
                            }
                        }
                        let tabIndexText = validateTextForDataTable(item) === false ? 'tabindex="0"' : "";
                        if (item === '') {
                            tabIndexText = "";
                        }
                        if (isMobile === false) {
                            if (useFtlerValue) {
                                rowHtmltd += "<td " + data_attr + " " + data_attr_search + " " + tabIndexText + " class='" + classTd + " " + additionClass +"' data - column - name - field='" + columnNameItem + "' > " + item + " < span class='filter-value' > -" + ensureString(value_a) + " -</span ></td > ";
                            }
                            else {
                                rowHtmltd += "<td " + data_attr + " " + data_attr_search + " " + tabIndexText + " class='" + classTd + " " + additionClass + "' data-column-name-field='" + columnNameItem + "'><span class='show-for-small-only'>-" + value_a + "-</span>" + item + "</td>";
                            }
                        }
                        else
                            rowHtmltd += "<td " + data_attr + " " + data_attr_search + " " + tabIndexText + " class='" + classTd + " " + additionClass + "'><strong class='show-for-small-only'>" + columnNameItem + " </strong>" + item + "</td>";
                    }
                });
                var rowHtml = "<tr id='" + itemResult[0] + "'>";
                rowHtml += rowHtmltd;
                rowHtml += "</tr>";
                htmlBody += rowHtml;
            }

        }
        var htmlTable = '<table id="' + idTable + '" class="listing-cms-datatable mobile-styles ' + '">' + htmlHeader + '<tbody>' + htmlBody + '</tbody>' + '</table>';
        list.append(htmlTable);

        var paging = displayPaging == "True";
        var search = displaySearchSectionValue == "True";

        itemsPerPage = (itemsPerPage == 0) ? 10 : itemsPerPage;
        var fieldSeparatorValue = ',';
        var configuredSeparator = listingCMS.find('input[name="customSeparatorCSV"]').val();

        switch (configuredSeparator) {
            case 'semicolon': fieldSeparatorValue = ';';
                break;
            case 'tab': fieldSeparatorValue = '\t';
                break;
            case 'space': fieldSeparatorValue = ' ';
                break;
            case 'comma': fieldSeparatorValue = ',';
                break;
            case '': fieldSeparatorValue = ',';
                break;
        }

        var defaultButtons = [];
        if (displayExportCSVValue == "True") {
            defaultButtons = [{
                extend: 'csv',
                charset: 'UTF-8',
                bom: true,
                text: window.translation.export_csv,
                fieldSeparator: fieldSeparatorValue,
                exportOptions: {
                    orthogonal: "myExport",
                    columns: '.is-exportable',
                    format: {
                        body: function (data, row, column, node) {                         

                            var $div = $(node).find('span.show-for-small-only');
                            if ($div.length) {
                                // Remove the div and its content
                                return data.replace($div.text(), '');
                            }
                        }
                    }
                }
            }];
        }

        var columnSettings = [];
        var indexColumn = 0;
        $('#' + idTable + ' thead th').each(function () {
            var widthData = $(this).attr('data-column-width');
            if (widthData && widthData != 0 && widthData != '') {
                //$(this).attr('style', 'min-width: ' + widthData + 'px; max-width: ' + widthData + 'px; width: ' + widthData + 'px !important;');
                var columnInfo = new Object();
                columnInfo.targets = indexColumn;
                columnInfo.width = widthData + "%";
                columnSettings.push(columnInfo);
            }

            var sorteableData = $(this).attr('data-not-sorteable');
            if (sorteableData && sorteableData == 'True') {
                var columnInfo = new Object();
                columnInfo.targets = indexColumn;
                columnInfo.orderable = false;
                columnSettings.push(columnInfo);
            }
            indexColumn++;
        });

        /*
               columnSettings.push({
                   targets: "datepicker-column",
                   type: "numeric"
               });
               columnSettings.push({
                   targets: "onlydatepicker-column",
                   type: "datetime"
               });
       */
        columnSettings.push({
            targets: "decimal-column",
            type: "decimal-num"
        });
        columnSettings.push({
            targets: 0,
            visible: false
        });
        columnSettings.push({
            targets: "_all",
            render: function (data, type, row) {
                if (type === 'myExport') {
                    var el = $('<div></div>');
                    if (el.html(data).find('input[type="checkbox"].checkbox-cell-value').length > 0) {
                        if (el.html(data).find('input[type="checkbox"].checkbox-cell-value:checked').length > 0) {
                            return "true";
                        }
                        else {
                            return "false";
                        }
                    }
                    el.html(data).find('.show-for-small-only').remove();
                    el.html(data).find('.filter-value').remove()
                    return el.text();
                }
                return data;
            }
        });


        var datatable = $('#' + idTable).DataTable({
            "bFilter": true,
            "bPaginate": paging,
            "bLengthChange": false,
            "bProcessing": true,
            "pageLength": itemsPerPage,
            order: [[defaultSort, sortConfigured]],
            "columnDefs": columnSettings,
            dom: 'Bfrtip',
            buttons: defaultButtons,
            "oLanguage": {
                "oPaginate": {
                    "sPrevious": window.translation.sPrevious,
                    "sNext": window.translation.sNext
                },
                "sZeroRecords": noResultsText,
                "sInfoFiltered": window.translation.sInfoFiltered,
                "sInfo": window.translation.sInfo,
                "sLoadingRecords": window.translation.sLoadingRecords,
                "sSearch": window.translation.search
            },
            drawCallback: function (settings) {
                datatable_add_cells_data_for_mobile_headers(this);
            },
            initComplete: function (settings, json) {
                if (totalItems == 0) {
                    $('#' + idTable + '_wrapper .dataTables_info').html(window.translation.sInfo.replaceAll('_START_', 0).replaceAll('_END_', 0).replaceAll('_TOTAL_', 0));
                }
                if (includeColumnFilters) {
                    add_column_filters_datatable_listing(this, columnFilterHeaders, columnFilterHeadersWithPreset);
                }

                $('#' + idTable).wrap("<div class='scrolledTable'></div>");
                $('#' + idTable).closest('.dataTables_wrapper').find(".dataTables_filter").remove();
                $('#' + idTable).closest('.dt-buttons').find("button.buttons-html5").addClass('button');
                if ($('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').length > 0) {
                    $('#' + idTable + '_wrapper .dt-buttons button.buttons-html5').addClass('button');
                }


                if ($('#' + idTable + '_wrapper .dt-buttons').length > 0 && isEditable) {
                    if (autoSave == 'true' && isEditable) {
                        var message = listingCMS.find('input[name="initial_message_auto_save"]').val();
                        if (displaySaveButton === 'false') {
                            $('#' + idTable + '_wrapper .dt-buttons').append('<p class="auto-save-message">' + message + '</p>');
                        }

                    }

                    var buttonSaveChanges = '<button id="' + idTable + 'SaveChanges" class="button primary-button dt-button buttons-csv buttons-html5 auto-save-button">' + '<span>' + window.translation.save_changes + '</span>';

                    if (displaySaveButton === 'true' && autoSave == 'true') {
                        buttonSaveChanges += '<span class="auto-save-message"></span>';
                    }

                    buttonSaveChanges += '</button>';


                    $('#' + idTable + '_wrapper .dt-buttons').append(buttonSaveChanges);
                    $('#' + idTable + '_wrapper .dt-buttons').find('#' + idTable + 'SaveChanges').hide();
                }


                if (offset != 0 || totalItems >= limit) {
                    listingcmsblock_add_load_more_datatable(listingcmsId, onlyFirst, onlyLast);
                }
                if (isEditable) {
                    init_datatable_editable(this, afterEdit);
                }
                populateTableNoValue(idTable);
                //custom_dropdown_button();
                processing_screen.addClass('is-hidden');
                processing_screen.removeClass('always_show');

                if (listingCMS.hasClass('occs-by-volunteer-opportunity-sp')) {
                    activate_cancel_link_for_occurrences(listingCMS);
                } else if (listingCMS.hasClass('account-overview-history')) {
                    activate_report_hours_for_connection(listingCMS);
                }
            },
            "fnDrawCallback": function () {
                if ((offset != 0 || totalItems >= limit) && !$('#tableInformation' + listingcmsId).closest('.listingcmsblock.blockContainer').hasClass('SOQL')
                    && (offset != 0 || totalItems == 1000)) {
                    listingcmsblock_add_load_more_datatable(listingcmsId, onlyFirst, onlyLast);

                    var fromValue = $('#tableInformation' + listingcmsId + ' input#firstValue').val();
                    var toValue = $('#tableInformation' + listingcmsId + ' input#lastValue').val();
                    var infoText = window.translation.loaded_records + ": " + window.translation.from_text + " '" + fromValue + "' " + window.translation.to_text + " '" + toValue + "'";


                    if ($("#dataTable" + listingcmsId + "_info").text() != '') {
                        var currentInfoText = $("#dataTable" + listingcmsId + "_info").text().split('.')[0];
                        $("#dataTable" + listingcmsId + "_info").text(currentInfoText + ". " + infoText);
                        $("#dataTable" + listingcmsId + "_info").attr('tabindex', '0');
                    }
                }
                populateTableNoValue(idTable);
                addCheckBoxForEditable($('#' + idTable), afterEdit);
                addButtonsForEditable($('#' + idTable), afterEdit);

                if (offset && Number(offset) > 0) {
                    var startElementNumber = Number(offset) + 1;
                    var api = this.api();
                    var $pagination = $(api.table().container()).find('.dataTables_paginate');
                    var pageLength = api.page.len(); // Get the number of elements per page
                    var currentPage = api.page.info().page; // Get the current page index

                    // Calculate the starting page number based on the starting element number
                    var startPage = Math.ceil(startElementNumber / pageLength);

                    // Modify pagination buttons
                    $pagination.find('a.paginate_button').each(function () {
                        var $button = $(this);
                        var text = $button.text();
                        if ($button.hasClass('previous') || $button.hasClass('next')) {
                            return; // Skip the previous and next buttons
                        }

                        var pageNum = parseInt(text, 10);
                        if (!isNaN(pageNum)) {
                            var newPageNum = startPage + pageNum - 1;
                            $button.text(newPageNum);
                        }
                    });
                }

                $('#' + idTable).find('thead tr th').each(function (index, item) {
                    if ($(this).find('input.header-group-checker').length > 0) {
                        $(this).attr('aria-label', window.translation.listing_select_all_rows);
                    } else {
                        let fieldName = $(this).attr('data-aria-label');
                        if (fieldName !== null && fieldName !== undefined && fieldName !== '') {
                            let currentAriaLabel = $(this).attr('aria-label');
                            if (currentAriaLabel !== null && currentAriaLabel !== undefined && currentAriaLabel !== '') {
                                let refinedAriaLabel = currentAriaLabel.replace(fieldName, "");
                                refinedAriaLabel = refinedAriaLabel.trim();
                                refinedAriaLabel = refinedAriaLabel.replaceAll(' ', '_');
                                if (window.translation[refinedAriaLabel] !== null && window.translation[refinedAriaLabel] !== undefined) {
                                    let newAriaLabel = fieldName + ' ' + window.translation[refinedAriaLabel];
                                    $(this).attr('aria-label', newAriaLabel);
                                }
                            }
                        }

                    }
                });


            }
        }).on('draw.dt', function () {
            // This function will be executed when a paginate button is clicked
            let blockParent = $(this).parents('.listingcmsblock');
            if (blockParent !== undefined && blockParent.length > 0) {
                if (blockParent.hasClass('occs-by-volunteer-opportunity-sp'))
                    activate_cancel_link_for_occurrences($(this));
                else if (blockParent.hasClass('account-overview-history')) {
                    activate_report_hours_for_connection(blockParent);
                }
            }
                
        });
        custom_dropdown_button();

        $('#' + idTable + ' .truncate-column').each(function () {
            var theContent = $(this).text();
            var numberCharacters = $(this).data('val-truncate');
            var n = theContent.substr(0, numberCharacters);
            $(this).html(n);
        });

        var blockTable = $('#' + idTable).parents('.listingcmsblock');
        if (blockTable !== undefined && blockTable !== null) {
            var hideSummary = blockTable.find('input[name="disableSumaryResult"]').val() === 'True';
            if (hideSummary === true) {
                blockTable.find('.dataTables_info.custom-info').hide();
                blockTable.find('.dataTables_info').hide();
            }
        }

        if (isEditable) {

            $('#' + idTable + 'SaveChanges').on('click', function (e) {
                listingcmsblock_clear_auto_save(listingCMS, listingcmsId);
                datatable_editable_event($('#' + idTable), afterEdit, e);
                var dataTableValues = $('#' + idTable).DataTable();
                listingcmsblock_process_save_changes(dataTableValues, idTable, listingCMS, listingcmsId, false);
            });
        }


        if (searchAutoSuggestValue == 'True' && searchAutoSuggestFieldValue != "") {
            let search_input = listingCMS.find('.search-section input[type="text"]');
            asign_autosugged_search_field(search_input, autosugged_items)
        }


        if ($('#' + idTable + " input[name='select-all-visibles']").length > 0) {

            $('#' + idTable).on('click', "input[name='select-all-visibles']", function () {
                // Get all rows with search applied
                var rows = datatable.rows({ search: 'applied' }).nodes();

                // Check/uncheck checkboxes for all rows in the table
                $('input.check-record[type="checkbox"]', rows).prop('checked', this.checked);
            });
            $('#' + idTable).on('change', 'tbody input.check-record[type="checkbox"]', function () {

                var total_checked = datatable.$('input.check-record[type="checkbox"]:checked').length;
                var total_rows = datatable.rows().count();
                if (total_checked == total_rows) {
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('indeterminate', false);
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('checked', true);
                } else if (total_checked > 0) {
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('checked', false);
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('indeterminate', true);
                } else {
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('indeterminate', false);
                    $('#' + idTable).find("thead input[name='select-all-visibles']").prop('checked', false);
                }
            });
        }
    }
}


$(document).on('click', 'th .header-group-checker', function () {
    const $headerCheckbox = $(this);
    const listingcmsId = $headerCheckbox.attr('data-table-id');
    const dataTable = $('#dataTable' + listingcmsId).DataTable();
    const itemName = $headerCheckbox.attr('name');

    var th = $headerCheckbox.parents('th').first();
    var columnIndex = th.index();

    // Get current page checkboxes for this column
    var checkboxes = dataTable.rows({ page: 'current' }).nodes().to$()
        .find('.checkbox-cell-value[data-parent-header="' + itemName + '"]');

    if (checkboxes.length == 0) {
        checkboxes = dataTable.rows({ page: 'current' }).nodes().to$()
            .find('td:eq(' + columnIndex + ') input[type="checkbox"]:not(.datatable-item-readonly)');
    }
    // Count checked state
    const checkedCount = checkboxes.filter(':checked').length;
    const totalCheckboxes = checkboxes.length;
    const allChecked = checkedCount === totalCheckboxes;
    const noneChecked = checkedCount === 0;

    // Determine new state based on rules
    let newState;
    if ($headerCheckbox.prop('checked')) {
        // Header is being checked/indeterminated
        newState = !allChecked; // Check all if any unchecked
    } else {
        // Header is being unchecked
        newState = false; // Uncheck all
    }

    // Special case for "all unchecked" scenario
    if (noneChecked) newState = true;

    // Update checkboxes and trigger events
    checkboxes.prop('checked', newState).trigger('change');

    // Update header state
    const newCheckedCount = checkboxes.filter(':checked').length;
    $headerCheckbox.prop('checked', newCheckedCount === totalCheckboxes);
    $headerCheckbox.prop('indeterminate',
        newCheckedCount > 0 && newCheckedCount < totalCheckboxes
    );
});

$(document).on('change', 'table.listing-cms-datatable tbody input[type="checkbox"]', function () {
    
    if ($(this).parents('table.listing-cms-datatable').length > 0) {
        var tableId = $(this).parents('table.listing-cms-datatable').attr('id');
        var datatable = $('#' + tableId).DataTable();

        var td = $(this).parents('td').first();
        var columnIndex = td.index();
        if ($('#' + tableId).find("thead th:eq(" + columnIndex + ") input[type='checkbox']").length > 0) {
            var total_checked = datatable.$('td:eq(' + columnIndex + ') input[type="checkbox"]:checked').length;
            var total_rows = datatable.rows().count();
            if (total_checked == total_rows) {
                $('#' + tableId).find("thead th:eq(" + columnIndex + ") input[type='checkbox']").prop('indeterminate', false);
                $('#' + tableId).find("thead th:eq(" + columnIndex + ") input[type='checkbox']").prop('checked', true);
            } else if (total_checked > 0) {
                $('#' + tableId).find("thead th:eq(" + columnIndex + ") input[type='checkbox']").prop('checked', false);
                $('#' + tableId).find("thead th:eq(" + columnIndex + ") input[type='checkbox']").prop('indeterminate', true);
            } else {
                $('#' + tableId).find("thead th:eq(" + columnIndex + ") input[type='checkbox']").prop('indeterminate', false);
                $('#' + tableId).find("thead th:eq(" + columnIndex + ") input[type='checkbox']").prop('checked', false);
            }
            var showCount = $('#' + tableId).find("thead th:eq(" + columnIndex + ") input[type='checkbox']").attr('data-show-count');
            if (total_checked > 0 && showCount) {
                $('#' + tableId).parents('.blockContainer').first().find('.selected-items-check label').html(window.translation.number_items_selected.replaceAll('{0}', total_checked));
                $('#' + tableId).parents('.blockContainer').first().find('.selected-items-check').removeClass('is-hidden')
            }
            else {
                $('#' + tableId).parents('.blockContainer').first().find('.selected-items-check').addClass('is-hidden')
            }
        }
    }
});

function listingcmsblock_process_save_changes(dataTableValues, idTable, listingCMS, listingcmsId, fromAutoSave) {
    var autoSave = listingCMS.find('input[name="isAutoSave"]').val();
    if (dataTableValues.$('tr.datatable-row-edited').length > 0 && (dataTableValues.$('td.datatable-cell-edited').length > 0 || dataTableValues.$('td.datatable-cell-edited-checkbox').length > 0)) {
        var records = new Array();
        var dateFields = new Array();
        var multipickFields = new Array();
        var booleanFields = new Array();
        var dateTimeFields = new Array();
        dataTableValues.$('tr.datatable-row-edited').each(function () {
            if ($(this).find('td.datatable-cell-edited').length > 0 || dataTableValues.$('td.datatable-cell-edited-checkbox').length > 0) {
                var rec = {};
                rec.RecordSfId = $(this).find('.record-id').val();
                if ($(this).find('.additional-fields').length > 0) {
                    rec.AdditionalFields = $(this).find('.additional-fields').val();
                }
                rec.Fields = {};
                $(this).find('td.datatable-cell-edited-checkbox').each(function (index, element) {
                    var th = $('#' + idTable).find('thead th').eq($(this).index());
                    if (th.data('original-type') == 'boolean') {
                        rec.Fields[th.data('field-name')] = $(this).find('input.checkbox-cell-value').prop('checked');
                        if (booleanFields.indexOf(th.data('field-name')) == -1) {
                            booleanFields.push(th.data('field-name'));
                        }
                    } else if (th.data('original-type') == 'button') {
                        var foundValue = false;
                        if ($(this).find('input.switch-input-toggle').length > 0) {
                            rec.Fields[th.data('field-name')] = $(this).find('input.switch-input-toggle').prop('checked');
                            foundValue = true;
                        }
                        else if ($(this).find('input.switch-input-button').length > 0) {
                            rec.Fields[th.data('field-name')] = $(this).find('input.switch-input-button').prop('checked');
                            foundValue = true;
                        }

                        if (foundValue === true && booleanFields.indexOf(th.data('field-name')) == -1) {
                            booleanFields.push(th.data('field-name'));
                        }
                    }
                });

                $(this).find('td.datatable-cell-edited').each(function (index, element) {
                    var th = $('#' + idTable).find('thead th').eq($(this).index());
                    var specialSymbol = th.attr('data-symbol-special');
                    var valueToSend = $(this).find('span.cell-value').text().trim();
                    if (specialSymbol) {
                        valueToSend = valueToSend.replaceAll(specialSymbol, '').trim();
                    }
                    rec.Fields[th.data('field-name')] = valueToSend;
                    if (th.data('original-type') == 'date' && dateFields.indexOf(th.data('field-name')) == -1) {
                        dateFields.push(th.data('field-name'));
                    }
                    if (th.data('original-type') == 'datetime' && dateFields.indexOf(th.data('field-name')) == -1) {
                        dateTimeFields.push(th.data('field-name'));
                    }
                    if (th.data('original-type') == 'multipicklist' && multipickFields.indexOf(th.data('field-name')) == -1) {
                        multipickFields.push(th.data('field-name'));
                    }
                    if (th.data('original-type') == 'boolean' && booleanFields.indexOf(th.data('field-name')) == -1) {
                        booleanFields.push(th.data('field-name'));
                    }
                });
                records.push(rec);
            }
        });
        if (autoSave === 'true' && fromAutoSave === true) {
            listingcmsblock_save_list_records(records, listingcmsId, dateFields, dateTimeFields, multipickFields, booleanFields, true, listingCMS);
        } else {
            var title = window.translation.you_will_update_x_records.replace("{0}", records.length);

            Swal.fire({
                title: title,
                icon: "warning",
                showCancelButton: true,
                confirmButtonClass: 'btn-danger',
                confirmButtonText: window.translation.yes,
                cancelButtonText: window.translation.no,
                closeOnConfirm: false,
                showLoaderOnConfirm: true,
                closeOnCancel: true,
                customClass: {
                    container: 'popup-element-id-'+listingcmsId, // Class containner popup
                }
            }).then(function (result) {
                if (result.isConfirmed) {
                    listingcmsblock_save_list_records(records, listingcmsId, dateFields, dateTimeFields, multipickFields, booleanFields, false, listingCMS);
                }
            });

        }


    }
    else {
        Swal.fire({
            title: '',
            icon: "info",
            text: 'There are no rows to update'
        });
    }
}

function listingcmsblock_process_timer_auto_save(self, listingcmsId) {
    var autoSave = self.find('input[name="isAutoSave"]').val();
    var isEditable = self.find('input[name="isEditable"]').val();
    var displayButton = self.find('input[name="displaySaveButton"]').val();
    if (isEditable === 'True' && autoSave === 'true') {
        if (counterAutoSaveBlocks[listingcmsId].timerId != -1) {
            var initialTime = counterAutoSaveBlocks[listingcmsId].timeInitial;
            var currentTime = new Date();

            var diffTime = currentTime.getTime() - initialTime.getTime();
            var sec = diffTime / 1000;
            var seconds = Math.abs(sec);
            var suffix = window.translation.auto_save_seconds;
            if (seconds >= 60) {
                timeAfter = seconds / 60;
                suffix = window.translation.auto_save_minutes;
                if (timeAfter >= 60) {
                    timeAfter = timeAfter / 60;
                    suffix = window.translation_auto_save_hours;
                }
            } else
                timeAfter = seconds;
            var timeAfter = parseInt(timeAfter);
            var messageAgo = window.translation.auto_save_message_after_ago;
            messageAgo = messageAgo.replace('{time}', timeAfter);
            messageAgo = messageAgo.replace('{suffix}', suffix);
            if (displayButton === 'true')
                self.find('.auto-save-message').html('<br/>(' + messageAgo + ')');
            else
                self.find('.auto-save-message').html('<b>' + messageAgo + '</b>');

        }
    }
}

function listingcmsblock_generate_timer(self, listingcmsId) {
    var displayButton = self.find('input[name="displaySaveButton"]').val();
    listingcmsblock_clear_interval_auto_save(self, listingcmsId);
    counterAutoSaveBlocks[listingcmsId].timeInitial = new Date();
    counterAutoSaveBlocks[listingcmsId].timerId = setInterval(listingcmsblock_process_timer_auto_save, 30000, self, listingcmsId);
    var messageAgo = window.translation.auto_save_message_after_ago;
    messageAgo = messageAgo.replace('{time}', '1');
    messageAgo = messageAgo.replace('{suffix}', window.translation.auto_save_seconds);
    if (displayButton === 'true')
        self.find('.auto-save-message').html('<br/>(' + messageAgo + ')');
    else
        self.find('.auto-save-message').html('<b>' + messageAgo + '</b>');
    self.find('.reset-btn').addClass('hide');
}

function listingcmsblock_save_list_records(records, listingcmsId, dateFields, dateTimeFields, multipickFields, booleanFields, autoSave, self) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        type: 'POST',
        url: urlSite + 'Admin/UpdateRecordsInSalesforce',
        dataType: "json",
        data: {
            records: JSON.stringify(records), listingCmsId: listingcmsId, dateFields: JSON.stringify(dateFields), dateTimeFields: JSON.stringify(dateTimeFields)
            , multipickFields: JSON.stringify(multipickFields), booleanFields: JSON.stringify(booleanFields)
        },
        success: function (response) {
            if (response.code !== null && (response.code == "200")) {
                if (autoSave === true) {
                    listingcmsblock_load_records_sfview(false, listingcmsId, true);
                    listingcmsblock_generate_timer(self, listingcmsId);

                    //update 
                } else {
                    Swal.fire({
                        title: window.translation.success,
                        text: response.message,
                        icon: "success",
                        closeOnConfirm: true
                    }).then(function (result) {
                        swal.close();
                        window.location.reload();

                    });

                }
            } else {
                var text = "";
                if (response.errorsDetail !== null && response.errorsDetail.length > 0) {
                    response.errorsDetail.forEach(function (errorInfo) {
                        text += '<br/> - ' + errorInfo.Message;
                    });
                }
                if ((text !== '')) {
                    text = response.message + ((text != '') ? '<br/>' + text : '');
                    text = "<div style='overflow-y: scroll; max-height:150px'>" + text + "</div>";
                }
                else {
                    text = response.message;
                }

                Swal.fire({
                    title: window.translation.error,
                    html: text,
                    icon: "error",
                    closeOnConfirm: true
                }).then(function (result) {
                    Swal.close();
                    window.location.reload();

                });

            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            Swal.fire({
                title: textStatus,
                icon: "error",
                text: errorThrown
            });
        }
    });

}

function isHTML(str) {
    try {
        var $html = $(str);
        return $html.length > 0;
    } catch (error) {

    }
    return false;
}

function listingcmsblock_render_sfviews_list(list, records, totalItems, itemsPerPage, displayPaging, processing_screen, searchAutoSuggestValue, searchAutoSuggestFieldValue) {
    if (records) {
        var autosugged_items = [];
        var listingResult = '';
        var numberRecords = records.length;
        var countItems = 0;
        var itemResult_li = "";
        totalItems = (parseInt(totalItems) === 0) ? records.length : (parseInt(totalItems) <= records.length) ? parseInt(totalItems) : records.length;
        itemsPerPage = (parseInt(itemsPerPage) <= totalItems && parseInt(itemsPerPage)) ? parseInt(itemsPerPage) : parseInt(totalItems);

        for (var i = 0; i < totalItems; i++) {
            var Val_AutoSuggest = "";
            var record = records[i];
            var classItem = (countItems < itemsPerPage || itemsPerPage == 0 || displayPaging === 'False') ? '' : 'is-hidden';
            var recordId = '';
            var itemResult = '';
            if (record.Columns) {
                $.each(record.Columns, function (index, item) {
                    var title = item.FieldNameOrPath;
                    var value = item.Value;

                    if (title === 'Id') {
                        recordId = value;
                    }

                    if (searchAutoSuggestValue == 'True' && searchAutoSuggestFieldValue != "") {

                        if (title == searchAutoSuggestFieldValue) {
                            Val_AutoSuggest = value;
                            if (value.indexOf(';') !== -1) {
                                let array_value = value.split(';');
                                for (var i = array_value.length - 1; i >= 0; i--) {
                                    if (array_value[i] != "" && !autosugged_items.includes(array_value[i])) {
                                        autosugged_items.push(array_value[i]);
                                    }
                                }
                            } else {
                                if (value != "" && !autosugged_items.includes(value)) {
                                    autosugged_items.push(value);
                                }
                            }
                        }
                    }
                    //Fix to modify text of content when has ; (Multiselects in SF)
                    if (value && !isHTML(value)) value = (value.indexOf(';') !== -1) ? value.replaceAll(';', ', ') : value;

                    var spanTitle = '<span class="title">' + title + '</span>';
                    var spanValue = '<span class="value">' + value + '</span>';

                    itemResult = itemResult + '<div class="property">' + spanTitle + spanValue + '</div>';
                });
            }

            var classAdditional = '';
            if (recordId !== '') {
                classAdditional = 'row-' + recordId;
            }


            itemResult_li += '<li class="' + classItem + ' ' + classAdditional + ' item-format-standard custom-row" data-id="' + recordId + '" data-suggest="' + Val_AutoSuggest + '">' + itemResult + '</li>';
            if (itemsPerPage != 0) countItems++;
        }

        list.append(itemResult_li);

        //Validation to displayPaging
        if (displayPaging === 'True') {
            var totalPages = Math.ceil(totalItems / itemsPerPage);
            var pagingHTML = '<div class="paging_salesforce"><ul>';
            var firstPage = '<li class="first-item"><a role="button" aria-label="' + window.translation.pa_item_first_option +'" href="#" data-number-page="1">' + window.translation.first_option + '</a></li>';
            var previousPage = '<li class="previous-item"><a role="button" aria-label="' + window.translation.pa_item_previous_option +'" href="#" data-number-page="1">' + window.translation.previous_option + '</a></li>';
            var nextPage = '<li class="next-item"><a role="button" href="#" aria-label="' + window.translation.pa_item_next_option +'" data-number-page="2">' + window.translation.next_option + '</a></li>';
            var lastPage = '<li class="last-item"><a role="button" href="#" aria-label="' + window.translation.pa_item_last_page +'" data-number-page="' + totalPages + '">' + window.translation.last_option + '</a></li>';
            var countLinks = 0;
            var pages = '';

            for (var i = 1; i <= totalPages && countLinks < 5; i++) {
                var classLink = (i == 1) ? 'current-page' : '';
                var link = '<li class="page-number"><a role="button" aria-label="' + window.translation.pag_item_next_number + ' ' + i + '" class="' + classLink + '" href="#" data-number-page="' + i + '">' + i + '</a></li>';

                pages = pages + link;
                countLinks++;
            }

            //Concat other links
            pages = firstPage + previousPage + pages + nextPage + lastPage;
            pagingHTML = pagingHTML + pages + '</ul></div>';

            if (countLinks > 0) {
                list.after(pagingHTML);
            }
        }

        //Update total items to be used in paging event
        list.parents('.listingcmsblock').first().find('input[name="totalItems"]').val(totalItems);

        //Hide processing screen
        processing_screen.addClass('is-hidden');
        processing_screen.removeClass('always_show');
        if (searchAutoSuggestValue == 'True' && searchAutoSuggestFieldValue != "") {
            let search_input = '.listingcmsblock .search-section input[type="text"]';
            asign_autosugged_search_field(search_input, autosugged_items)
        }
    }
}


function listingcmsblock_render_sfviews_list_auto_refresh(list, records, recordsDeleted) {
    if (records) {
        var existPagination = false;
        var pageElement = list.parents('.block-wrapper').find('.paging_salesforce');
        var itemPerPage = 0;
        var isAutoRefresh = false;
        var listContainer = list.parents('.listingcmsblock.blockContainer');

        if (pageElement !== undefined && pageElement.length > 0) {
            existPagination = true;

            itemPerPage = listContainer.find('input[name="itemsPerPage"]').val();
            isAutoRefresh = listContainer.find('input[name="AutoRefresh"]').val();
        }

        if (recordsDeleted !== null && recordsDeleted !== undefined) {
            let elementsToDelete = [];
            recordsDeleted.forEach(function (element) {
                elementsToDelete.push('.row-' + element);
            });

            if (elementsToDelete.length > 0) {
                let toDeleteSelector = '';
                elementsToDelete.forEach(function (item) {
                    toDeleteSelector = item;
                    listContainer.find('li' + toDeleteSelector).remove();
                });
            }
        }


        for (var i = 0; i < records.length; i++) {
            var record = records[i];
            var recordId = '';

            var itemResult = '';
            if (record.Columns) {
                $.each(record.Columns, function (index, item) {
                    var title = item.FieldNameOrPath;
                    var value = item.Value;

                    if (title === 'Id') {
                        recordId = value;
                    }

                    if (value && !isHTML(value)) value = (value.indexOf(';') !== -1) ? value.replaceAll(';', ', ') : value;
                    var spanTitle = '<span class="title">' + title + '</span>';
                    var spanValue = '<span class="value">' + value + '</span>';

                    itemResult = itemResult + '<div class="property">' + spanTitle + spanValue + '</div>';

                });
            }

            if (recordId != '' && itemResult !== '') {
                var selector = 'li.row-' + recordId;
                listContainer.find(selector).html(itemResult);
            }
        }



    }
}



function listingcmsblock_process_map(jsonResult, self, blockId, processing_screen) {
    const locations = [];
    if (jsonResult.records) {
        const titleMapFiled = self.find('input[name="titleMapField"]').val();
        const descriptionMapField = self.find('input[name="descriptionMapField"]').val();
        const latitudeMapField = self.find('input[name="latitudeMapField"]').val();
        const longitudeMapField = self.find('input[name="longitudeMapField"]').val();
        $.each(jsonResult.records, function (index, record) {
            let title = '';
            let description = '';
            let latitude = null;
            let longitude = null;
            let idRecord = '';
            const titleObj = record.Columns.find(x => x.FieldNameOrPath === titleMapFiled);
            const descriptionObj = record.Columns.find(x => x.FieldNameOrPath === descriptionMapField);
            const latitudenObj = record.Columns.find(x => x.FieldNameOrPath === latitudeMapField);
            const longitudeObj = record.Columns.find(x => x.FieldNameOrPath === longitudeMapField);
            const idObj = record.Columns.find(x => x.FieldNameOrPath.toLowerCase() === "id");
            if (titleObj) { title = titleObj.Value; }
            if (descriptionObj) { description = descriptionObj.Value; }
            if (latitudenObj) { latitude = latitudenObj.Value; }
            if (longitudeObj) { longitude = longitudeObj.Value; }

            if (idObj) { idRecord = idObj.Value; }
            let urlLink = null;

            const urlLinkObj = (jsonResult.LinkList) ? jsonResult.LinkList.find(x => x.Id === idRecord) : null;
            if (urlLinkObj != null && urlLinkObj) {
                urlLink = urlLinkObj.MapRedirecttUrl;
            }

            if (latitude && longitude && title) {
                const latValue = parseFloat(latitude);
                const lngValue = parseFloat(longitude)
                if (!isNaN(latValue) && !isNaN(lngValue)) {
                    locations.push({
                        lat: latitude,
                        lng: longitude,
                        title: title,
                        description: description,
                        urlLink: urlLink
                    });
                }
            }
        });
    }
    set_google_map_listing_opportunities(blockId, locations);
    //Hide processing screen
    if (locations.length === 0) {

        //Display error
        var noResultsText = self.find('#noResultsText').val();
        if (noResultsText == undefined || noResultsText == null || noResultsText == '')
            noResultsText = window.translation.there_is_not_items_to_display;

        var emptyItem = '<div class="empty-item">' + noResultsText + '</div>';

        //Append empty item
        self.find('.sf_mapping_map').first().append(emptyItem);
    }
    processing_screen.addClass('is-hidden');
    processing_screen.removeClass('always_show');
    if (self.find('.map-listing-block').length > 0) {
        self.find('.map-listing-block').removeClass('is-hidden');
    }

}

function listingcmsblock_render_sfviews_comment_timeline_autorefresh(list, records, customCard, processing_screen, recordsDeleted) {
    if (records) {
        var existPagination = false;
        var pageElement = list.parents('.block-wrapper').find('.paging_salesforce');
        var listContainer = list.parents('.listingcmsblock.blockContainer');

        if (recordsDeleted !== null && recordsDeleted !== undefined) {
            let elementsToDelete = [];
            recordsDeleted.forEach(function (element) {
                elementsToDelete.push('.row-'.element);
            })

            if (elementsToDelete.length > 0) {
                elementsToDelete.forEach(function (item) {
                    listContainer.find('li' + item).remove();
                });
            }
        }

        for (var i = 0; i < records.length; i++) {
            var record = records[i];
            var idRecord = record.recordId;
            var itemFormated = record.itemFormated;

            var selector = 'li.row-' + idRecord;
            var classId = 'row-' + idRecord;
            if (listContainer.find(selector).length > 0) {
                //existing item
                listContainer.find(selector).html(itemFormated);
            } else {
                var customCard = '<li class="comment-box custom-row ' + classId + ' " data-id="' + idRecord + '">' + itemFormated + '</div>';
                listContainer.find('ul.pages.comments-timeline-container').append(customCard);
            }
        }

    }

}


function listingcmsblock_render_sfviews_comment_timeline(list, records, totalItems, itemsPerPage, displayPaging, customCard, processing_screen) {
    if (records) {
        var listingResult = '';
        var countItems = 0;
        totalItems = (parseInt(totalItems) === 0) ? records.length : (parseInt(totalItems) <= records.length) ? parseInt(totalItems) : records.length;
        itemsPerPage = (parseInt(itemsPerPage) <= totalItems && parseInt(itemsPerPage)) ? parseInt(itemsPerPage) : parseInt(totalItems);

        for (var i = 0; i < totalItems; i++) {
            var recordId = records[i].recordId;
            var customCardItemHTML = records[i].itemFormated;
            var classItem = (countItems < itemsPerPage || itemsPerPage == 0 || displayPaging === 'False') ? '' : 'is-hidden';
            var classId = 'row-' + recordId;
            if (customCardItemHTML) {
                customCardItemHTML = '<li class=" comment-box ' + classItem + ' custom-row ' + classId + '" data-id="' + recordId + '">' + customCardItemHTML + '</li>';
                list.append(customCardItemHTML);
            }

            if (itemsPerPage != 0) countItems++;
        }

        //list.find('li.comment-box:not(:first-child)').each(function () {
        list.find('li.comment-box').each(function () {
            var currentIsLeft = $(this).find('.comment-text-box').hasClass('container-left');

            var prevLi = $(this).prev('li.comment-box');
            if (prevLi) {

                if (!currentIsLeft && $(prevLi).find('.comment-text-box').hasClass('container-left')) {
                    $(this).find('.comment-text-box').addClass('first-class-text-box');

                }
                if (currentIsLeft && !$(prevLi).find('.comment-text-box').hasClass('container-left')) {
                    $(this).find('.comment-text-box').addClass('first-class-text-box');

                }
            }
        });

        //Validation to displayPaging
        if (displayPaging === 'True') {
            var totalPages = Math.ceil(totalItems / itemsPerPage);
            var nextPageNumber = (totalPages > 1) ? 2 : 1;
            var pagingHTML = '<div class="paging_salesforce"><ul>';
            var firstPage = '<li class="first-item"><a role="button" aria-label="' + window.translation.pa_item_first_option +'" href="#" data-number-page="1">' + window.translation.first_option + '</a></li>';
            var previousPage = '<li class="previous-item"><a role="button" aria-label="' + window.translation.pa_item_previous_option + '" href="#" data-number-page="1">' + window.translation.previous_option + '</a></li>';
            var nextPage = '<li class="next-item"><a role="button" href="#" aria-label="' + window.translation.pa_item_next_option + '" data-number-page="' + nextPageNumber + '">' + window.translation.next_option + '</a></li>';
            var lastPage = '<li class="last-item"><a role="button" href="#" aria-label="' + window.translation.pa_item_last_page +'"  data-number-page="' + totalPages + '">' + window.translation.last_option + '</a></li>';
            var countLinks = 0;
            var pages = '';

            for (var i = 1; i <= totalPages && countLinks < 5; i++) {
                var classLink = (i == 1) ? 'current-page' : '';
                var link = '<li class="page-number"><a role="button" aria-label="' + window.translation.pag_item_next_number + ' ' + i + '" class="' + classLink + '" href="#" data-number-page="' + i + '">' + i + '</a></li>';

                pages = pages + link;
                countLinks++;
            }

            //Concat other links
            pages = firstPage + previousPage + pages + nextPage + lastPage;
            pagingHTML = pagingHTML + pages + '</ul></div>';

            if (countLinks > 1) {
                list.after(pagingHTML);
            }
        }

        //Update total items to be used in paging event
        list.parents('.listingcmsblock').first().find('input[name="totalItems"]').val(totalItems);

        //Hide processing screen
        processing_screen.addClass('is-hidden');
        processing_screen.removeClass('always_show');
    }
}

function calculate_styleCard_for_item(cardPresentation, isAutoRefresh) {
    var styleCard = '';

    if (cardPresentation !== undefined && cardPresentation !== null && cardPresentation.trim() !== '') {
        styleCard = (cardPresentation === 'inline') ? '' : 'block';
    }

    if (isAutoRefresh === "True" && cardPresentation === "inline") {
        styleCard = "";
    }

    return styleCard;
}

function listingcmsblock_render_sfviews_grid_slider_card_auto_refresh(list, format, records, totalItems, itemsPerPage, displayPaging, customCard, orderDirection, recordsDeleted) {
    if (records) {
        var existPagination = false;
        var pagesElement = list.parents('.block-wrapper').find('.paging_salesforce');
        var itemsPerPage = 0;
        var isAutoRefresh = false;
        var cardPresentation = '';

        if (pagesElement !== undefined && pagesElement.length > 0) {
            //exist pagination, then get some atrributes needed to determine the visble items
            existPagination = true;
            var listingContainer = list.parents('.listingcmsblock.blockContainer');
            itemsPerPage = listingContainer.find('input[name="itemsPerPage"]').val();
            isAutoRefresh = listingContainer.find('input[name="AutoRefresh"]').val();
            cardPresentation = listingContainer.find('input[name="cardItemPresentation"]').val()
        }

        if (recordsDeleted !== null && recordsDeleted !== undefined) {
            let elementsToDelete = [];
            recordsDeleted.forEach(function (element) {
                elementsToDelete.push('.row-' + element)
            });

            if (elementsToDelete.length > 0) {
                let toDeleteSelector = elementsToDelete.join(',');
                listingContainer.find('li').remove(toDeleteSelector);
            }
        }

        for (var i = 0; i < records.length; i++) {
            var record = records[i];
            var customCardItemHTML = customCard;
            var classId = "";
            var dataFieldProperty = "";
            var onlyInternalValue = "";
            var classItem = '';// the class should be recalculated based on the page  and the new order
            var newDataSortvalue = '';
            var existFieldToSort = false;
            var itemsHandled = [];
            var hiddenClass = '';

            if (record.Columns && customCardItemHTML) {
                var idRecord = '';
                $.each(record.Columns, function (index, item) {
                    var column = '{' + item.FieldNameOrPath + '}';
                    var value = item.Value;
                    var idRecord = value;
                    if (item.FieldNameOrPath == 'Id') {
                        classId = 'row-' + value;
                    } else if (item.FieldNameOrPath == 'FieldUsedForSorting') {
                        dataFieldProperty = 'data-sortingvalue="' + value + '"';
                        newDataSortvalue = value;
                        existFieldToSort = true;
                    }
                    //Fix to modify text of content when has ; (Multiselects in SF)
                    if (value && !isHTML(value)) value = (value.indexOf(';') !== -1) ? value.replaceAll(';', ', ') : value;

                    if (customCardItemHTML.toLowerCase().indexOf(column.toLowerCase()) !== -1) {
                        customCardItemHTML = customCardItemHTML.replaceAllIgnoreCase(column, value);
                    }
                });

                if (format === 'GRID' || format === 'CARD') {
                    onlyInternalValue = customCardItemHTML;
                    if (existPagination === true)
                        hiddenClass = "is-hidden";

                    customCardItemHTML = '<li ' + dataFieldProperty + ' class="' + hiddenClass + ' ' + classItem + ' ' + classId + ' custom-row" data-id="' + idRecord + '">' + customCardItemHTML + '</li>';
                }
                else if (format === 'SLIDER') {
                    customCardItemHTML = '<ul class="autogenerated">' + customCardItemHTML + '</ul>';
                    customCardItemHTML = '<div class="item ' + classItem + ' ' + classId + ' custom-row" data-id="' + idRecord + '">' + customCardItemHTML + '</div>';
                }
                if (classId !== undefined) {
                    var existItem = list.find('.' + classId);
                    itemsHandled.push(classId);

                    if (existItem !== undefined && existItem.length > 0) {
                        if (format === 'GRID' || format === 'CARD') {
                            existItem.html(onlyInternalValue);
                            existItem.data('sortingvalue', newDataSortvalue);
                            if (existPagination === true)
                                existItem.css('display', 'none')

                            if (orderDirection != '' && existFieldToSort === true)
                                $('.' + classId).attr('data-sortingvalue', newDataSortvalue);

                        } else {
                            existItem.html(customCardItemHTML);
                        }

                    } else {
                        list.append(customCardItemHTML);
                    }
                }
            }
        }

        var $wrapper = list;
        //determine if really the sort is needed, else doen't apply the sorting 
        var order = "";
        if (orderDirection == "0")
            order = "asc";
        else if (orderDirection == "1")
            order = "desc";

        if (order != "" && existFieldToSort === true) {
            // Reapply the sorting
            $wrapper.find('.custom-row').sort(function (a, b) {
                var an = a.dataset.sortingvalue;
                var bn = b.dataset.sortingvalue;

                if (order == 'asc') {
                    if (an > bn)
                        return 1;
                    if (an < bn)
                        return -1;
                } else if (order == 'desc') {
                    if (an < bn)
                        return 1;
                    if (an > bn)
                        return -1;
                }

                return 0;
            }).appendTo($wrapper);
        }

        if (existPagination === true) {
            var currentPage = pagesElement.find('li.page-number a.current-page');
            var currentPageNumer = currentPage.data('number-page')
            var styleCard = calculate_styleCard_for_item(cardPresentation, isAutoRefresh);
            var maxPosition = (itemsPerPage * currentPageNumer);
            var minPosition = maxPosition - itemsPerPage;

            for (var index = 0; index < itemsHandled.length; index++) {
                var itemPosition = list.find('.' + itemsHandled[index]).index();

                if (itemPosition >= minPosition && itemPosition < maxPosition) {
                    list.find('.' + itemsHandled[index]).css('display', styleCard);
                    list.find('.' + itemsHandled[index]).removeClass('is-hidden');
                }
            }
        }
    }
}

function listingcmsblock_render_sfviews_grid_slider_card(list, format, records, totalItems, itemsPerPage, displayPaging, customCard, processing_screen, self, searchAutoSuggestValue, searchAutoSuggestFieldValue, dynamicFilterList, dynamicFacetsData) {
    if (records) {
        dynamicFilterList = dynamicFilterList ? JSON.parse(dynamicFilterList) : [];
        dynamicFacetsData = dynamicFacetsData ? JSON.parse(dynamicFacetsData) : [];
        var filter_columns = []
        var filter_columns_type = []
        for (var i = 0; i < dynamicFilterList.length; i++) {

            filter_columns.push(dynamicFilterList[i].toLowerCase());
        }
        for (var i = 0; i < dynamicFacetsData.length; i++) {

            if (filter_columns.indexOf(dynamicFacetsData[i].Configuration.Field.toLowerCase()) == -1) {
                filter_columns.push(dynamicFacetsData[i].Configuration.Field.toLowerCase());
                filter_columns_type[filter_columns.length - 1] = dynamicFacetsData[i].Configuration.Type;
            }
        }
        var autosugged_items = [];
        var listingResult = '';
        var countItems = 0;
        totalItems = (parseInt(totalItems) === 0) ? records.length : (parseInt(totalItems) <= records.length) ? parseInt(totalItems) : records.length;
        itemsPerPage = (parseInt(itemsPerPage) <= totalItems && parseInt(itemsPerPage)) ? parseInt(itemsPerPage) : parseInt(totalItems);
        var hasSecondaryData = self.find('input[name="hasMultipleResult"]').val() === "true";
        var secondaryDisplayFormat = null;
        if (self.find('input[name="second_display_format"]').length > 0) {
            secondaryDisplayFormat = self.find('input[name="second_display_format"]').val();
        }

        for (var i = 0; i < totalItems; i++) {
            var Val_AutoSuggest = "";
            var record = records[i];
            var filterValueList = [];
            var hiddenSectionToFitler = '';
            var recordId = '';
            var addFilterData = false;
            var customCardItemHTML = customCard;

            var classItem = (countItems < itemsPerPage || itemsPerPage == 0 || displayPaging === 'False') ? '' : 'is-hidden';

            //var recordId = undefined;
            var classId = "";
            var dataFieldProperty = "";

            if (record.Columns && customCardItemHTML) {
                record.Columns = record.Columns.reverse();
                $.each(record.Columns, function (index, item) {
                    if (searchAutoSuggestValue == 'True' && searchAutoSuggestFieldValue != "") {
                        if (item.FieldNameOrPath == searchAutoSuggestFieldValue) {
                            let item_val = item.Value;
                            if (item_val != "") {
                                Val_AutoSuggest = item_val;
                                if (item_val.indexOf(';') !== -1) {
                                    item_val = item_val.split(';');
                                    for (var i = item_val.length - 1; i >= 0; i--) {
                                        if (item_val[i] != "" && !autosugged_items.includes(item_val[i])) {
                                            autosugged_items.push(item_val[i]);
                                        }
                                    }
                                } else {
                                    if (item_val != "" && !autosugged_items.includes(item_val)) {
                                        autosugged_items.push(item_val);
                                    }
                                }
                            }
                        }
                    }

                    var column = '{' + item.FieldNameOrPath + '}';
                    var value = item.Value;

                    if (item.FieldNameOrPath == 'Id') {
                        //recordId = value;
                        classId = 'row-' + value;
                        recordId = value;
                    } else if (item.FieldNameOrPath == 'FieldUsedForSorting') {
                        dataFieldProperty = 'data-sortingvalue="' + value + '"';
                    }


                    //Fix to modify text of content when has ; (Multiselects in SF)
                    if (value && !isHTML(value)) value = (value.indexOf(';') !== -1) ? value.replaceAll(';', ', ') : value;

                    if (customCardItemHTML.toLowerCase().indexOf(column.toLowerCase()) !== -1) {
                        customCardItemHTML = customCardItemHTML.replaceAllIgnoreCase(column, value);
                    }



                    if (customCardItemHTML.toLowerCase().indexOf('<li') !== -1 && customCardItemHTML.toLowerCase().indexOf('<ul') == -1 && customCardItemHTML.toLowerCase().indexOf('<ol') == -1) {
                        customCardItemHTML = '<ul class="autogenerated">' + customCardItemHTML + '</ul>';
                    }


                    if (filter_columns.length > 0 && filter_columns.indexOf(item.FieldNameOrPath.toLowerCase()) != -1) {
                        var dynamicFilterFields = {};
                        dynamicFilterFields.Type = filter_columns_type[filter_columns.indexOf(item.FieldNameOrPath.toLowerCase())];
                        if (dynamicFilterFields.Type == 'date-range') {
                            dynamicFilterFields.Value = getTicks(moment(Date.parse(value)).format(window.MomentDateFormat), window.MomentDateFormat, false, true);
                        }
                        else {
                            dynamicFilterFields.Value = value;
                        }
                        dynamicFilterFields.Field = item.FieldNameOrPath;
                        filterValueList.push(dynamicFilterFields);
                        addFilterData = true;
                    }
                });

                if (addFilterData) {

                    filterValueList.forEach(function (filterItem) {
                        hiddenSectionToFitler += '<input type="hidden" id="' + filterItem.Field + '-' + recordId +
                            '" value="' + filterItem.Value +
                            '" data-type="' + filterItem.Type +
                            '" data-field="' + filterItem.Field +
                            '" data-id="' + recordId +
                            '" class="listing-filter-values" />';
                    });

                }

                //Adding sub records
                if (hasSecondaryData === true) {
                    if (secondaryDisplayFormat !== null && (secondaryDisplayFormat === '4' || secondaryDisplayFormat === 4)) {
                        var secondaryDataHtml = '';
                        if (record.SubRecords !== undefined && record.SubRecords !== null) {
                            secondaryDataHtml += "<table>";
                            if (record.SubRecords.Columns != null && record.SubRecords.Columns != undefined) {
                                secondaryDataHtml += record.SubRecords.Columns;
                            }

                            if (record.SubRecords.Records != null && record.SubRecords.Records != undefined && record.SubRecords.Records.length > 0) {
                                secondaryDataHtml += "<tbody>";
                                $.each(record.SubRecords.Records, function (indexR, itemR) {
                                    secondaryDataHtml += "<tr>";
                                    var itR = JSON.parse(itemR);
                                    $.each(itR, function (indexI, itemI) {
                                        secondaryDataHtml += "<td>" + itemI + "</td>";
                                    });
                                    secondaryDataHtml += "</tr>";
                                });
                                secondaryDataHtml += "</tbody>";
                            }


                            secondaryDataHtml += "</table>";

                        }
                        customCardItemHTML = customCardItemHTML.replaceAll('{second-data-section}', secondaryDataHtml);
                    } else {
                        customCardItemHTML = customCardItemHTML.replaceAll('{second-data-section}', '');
                    }
                }

                if (format === 'GRID' || format === 'CARD') {
                    customCardItemHTML = '<li tabindex="0" ' + dataFieldProperty + ' class="' + classItem + ' ' + classId + ' custom-row" data-suggest="' + Val_AutoSuggest + '" data-id="' + recordId + '">' + hiddenSectionToFitler + customCardItemHTML + '</li>';
                }
                else if (format === 'SLIDER') {
                    customCardItemHTML = '<div tabindex="0" class="item ' + classId + ' custom-row" data-id="' + recordId + '">' + customCardItemHTML + '</div>';
                }
                list.append(customCardItemHTML);
            }

            if (itemsPerPage != 0) countItems++;
        }
        //If is slider initialize owl library
        if (format === 'SLIDER') {
            var listingcmsblock = list.parents('.listingcmsblock').first();
            listing_block_cycle_after_ajax(listingcmsblock);
        }

        //Validation to displayPaging
        if (displayPaging === 'True') {
            var totalPages = Math.ceil(totalItems / itemsPerPage);

            var nextPageNumber = (totalPages > 1) ? 2 : 1;
            var pagingHTML = '<div class="paging_salesforce"><ul>';
            var firstPage = '<li class="first-item"><a role="button" aria-label="' + window.translation.pa_item_first_option + '" href="#" data-number-page="1">' + window.translation.first_option + '</a></li>';
            var previousPage = '<li class="previous-item"><a role="button" aria-label="' + window.translation.pa_item_previous_option +'" href="#" data-number-page="1">' + window.translation.previous_option + '</a></li>';
            var nextPage = '<li class="next-item"><a role="button" href="#" aria-label="' + window.translation.pa_item_next_option +'" data-number-page="' + nextPageNumber + '">' + window.translation.next_option + '</a></li>';
            var lastPage = '<li class="last-item"><a role="button" href="#" aria-label="' + window.translation.pa_item_last_page +'" data-number-page="' + totalPages + '">' + window.translation.last_option + '</a></li>';
            var countLinks = 0;
            var pages = '';

            for (var i = 1; i <= totalPages && countLinks < 5; i++) {
                var classLink = (i == 1) ? 'current-page' : '';
                var link = '<li class="page-number"><a role="button" aria-label="' + window.translation.pag_item_next_number + ' ' + i + '"  class="' + classLink + '" href="#" data-number-page="' + i + '">' + i + '</a></li>';

                pages = pages + link;
                countLinks++;
            }

            //Concat other links
            pages = firstPage + previousPage + pages + nextPage + lastPage;
            pagingHTML = pagingHTML + pages + '</ul></div>';

            if (countLinks > 0) {
                list.after(pagingHTML);
            }
        }

        //Update total items to be used in paging event
        list.parents('.listingcmsblock').first().find('input[name="totalItems"]').val(totalItems);
        //fix_trim_section(self);
        //Hide processing screen
        processing_screen.addClass('is-hidden');
        processing_screen.removeClass('always_show');
        if (searchAutoSuggestValue == 'True' && searchAutoSuggestFieldValue != "") {
            let search_input = '.listingcmsblock .search-section input[type="text"]';
            asign_autosugged_search_field(search_input, autosugged_items)
        }
    }
}

function asign_autosugged_search_field(search_input, autosugged_items) {
    $(search_input).autocomplete({
        source: autosugged_items,
        select: function (event, ui) {
            $(search_input).val(ui.item.value);
            return false;
        }
    });
}

function listingcmsblock_perform_search(targetSearch, searchTerm, smartSearch) {
    if (smartSearch) {
        var strRegExpSearchTerm = '^(?=.*' + searchTerm.split(' ').join(')(?=.*') + ').*$';
        var regexSearchTerm = new RegExp(strRegExpSearchTerm, "i");
        var textPlain = targetSearch.toLowerCase().replace(/(\r\n|\n|\r)/gm, ' ');
        return textPlain.search(regexSearchTerm) !== -1;
    }
    else {
        return targetSearch.indexOf(searchTerm) !== -1;
    }
}

function listingcmsblock_search_salesforce(self, searchText) {
    var IsSearchAutoSuggest = self.find('input[name="searchAutoSuggest"]').val();
    var totalItems = self.find('input[name="totalItems"]').val();
    var itemsPerPage = self.find('input[name="itemsPerPage"]').val();
    var displayPaging = self.find('input[name="displayPaging"]').val();
    self.find('label.searh-result-number-label').html('');
    //Validation itemsPerPage
    itemsPerPage = (itemsPerPage <= 0) ? totalItems : itemsPerPage;

    searchText = searchText.toLowerCase();

    if (searchText) {

        let ul_pages_text = self.find('ul.pages').text().toLowerCase();
        var totalItemsSearched = 0;

        //Hide all elements
        self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').removeClass('is-hidden');
        self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').addClass('hidden_by_search');
        self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').fadeOut();
        var cardPresentation = self.find('input[name="cardItemPresentation"]').val();
        var styleCard = '';
        if (cardPresentation !== undefined && cardPresentation !== null && cardPresentation.trim() !== '') {
            //styleCard = (cardPresentation === 'inline') ? 'inline-block' : 'block';
            styleCard = (cardPresentation === 'inline') ? '' : 'block';
        }


        self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').each(function () {
            var item = $(this);
            var suggest_text = (IsSearchAutoSuggest == 'True') ? item.attr('data-suggest').toLowerCase() : '';
            var textItem = "";

            if (suggest_text != "") {
                textItem = item.text().toLowerCase() + ' ' + suggest_text;
            } else {
                textItem = item.text().toLowerCase();
            }
            //---Here pagination
            var displayItem = (totalItemsSearched < itemsPerPage) && !item.hasClass('hidden-by-filter');
            if (listingcmsblock_perform_search(textItem, searchText, true)) {
                if (displayItem) {
                    item.fadeIn('fast', function () {
                        $(this).css('display', styleCard);
                        $(this).removeClass('is-hidden');
                    });
                }
                item.removeClass('hidden_by_search');
                totalItemsSearched++;

                //if (!item.hasClass('is-hidden')) item.addClass(classItem);
            }
        });

        //Validation to displayPaging
        if (displayPaging === 'True') {
            listingcmsblock_update_pagelinks_action(self, totalItemsSearched, itemsPerPage);
        }

        //Add to block class to identify has a view partial with search
        self.addClass('search_applied');
        if (totalItemsSearched > 0) {
            self.find('.no-result-section').addClass('is-hidden');
            self.find('label.searh-result-number-label').html(window.translation.showing_results.replace('{0}', totalItemsSearched));
        } else {
            self.find('label.searh-result-number-label').html('');
            //Hide all elements
            self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').addClass('hidden_by_search');
            self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item),li.item-format-standard').fadeOut();

            //Add to block class to identify has a view partial with search
            self.addClass('search_applied');

            //Validation to displayPaging
            if (displayPaging) {
                //Remove current paging items
                self.find('.paging_salesforce').find('li.page-number').remove();
            }
            self.find('.no-result-section').removeClass('is-hidden');
            self.find('label.searh-result-number-label').html('');
        }
    }
    else {
        //Validate if the search is applied and display all items
        let countVisible = 0;
        if (self.hasClass('search_applied')) {
            var countItems = 0;

            self.removeClass('search_applied');

            //Hide all elements to render only first page
            //self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item)').removeClass('is-hidden');
            self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item)').removeClass('hidden_by_search');
            self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item)').addClass('is-hidden');
            var cardPresentation = self.find('input[name="cardItemPresentation"]').val();
            var styleCard = '';
            if (cardPresentation !== undefined && cardPresentation !== null && cardPresentation.trim() !== '') {
                //styleCard = (cardPresentation === 'inline') ? 'inline-block' : 'block';
                styleCard = (cardPresentation === 'inline') ? '' : 'block';
            }


            self.find('ul.pages').find('li.custom-row:not(.file-item),li.comment-box:not(.file-item)').each(function () {
                var item = $(this);
                var classItem = (countItems < itemsPerPage) ? '' : 'is-hidden';
                if (countItems < itemsPerPage && !item.hasClass('hidden-by-filter')) {
                    item.fadeIn('fast', function () {
                        $(this).css('display', styleCard);
                        $(this).removeClass('is-hidden');
                    });
                    countVisible++;
                }
                countItems++;

                //if (!item.hasClass('is-hidden')) item.addClass(classItem);
            });
            if (countVisible > 0) {
                self.find('.no-result-section').addClass('is-hidden');
            }

            

            //Validation to displayPaging
            if (displayPaging === 'True') {
                listingcmsblock_update_pagelinks_action(self, totalItems, itemsPerPage);

            }
            var FilterObject = GetAdvancedFilterObject(self);
            if (FilterObject && FilterObject.length > 0) {
                listingcmsblock_dynamic_filters_perform_search(self, FilterObject);
            }
        }
    }

    return false;
}

function listingcmsblock_update_pagelinks_action(self, totalItemsSearched, itemsPerPage) {
    self.find('.paging_salesforce').hide();

    //Remove current paging items
    self.find('.paging_salesforce').find('li.page-number').remove();

    //Include attribute to validate how many items are in search
    self.attr('data-items-searched', totalItemsSearched);

    var totalPages = Math.ceil(totalItemsSearched / itemsPerPage);
    var nextPage = totalPages > 1 ? 2 : 1;
    var lastPage = totalPages > 1 ? totalPages : 1;
    var countLinks = 0;
    var pages = '';

    for (var i = 1; i <= totalPages && countLinks < 5; i++) {
        var classLink = (i == 1) ? 'current-page' : '';
        var link = '<li class="page-number"><a class="' + classLink + '" href="#" data-number-page="' + i + '">' + i + '</a></li>';

        pages = pages + link;
        countLinks++;
    }

    if (countLinks > 0) {
        self.find('.paging_salesforce').find('li.previous-item').after(pages);
        self.find('.paging_salesforce').find('li.previous-item').find('a').attr('data-number-page', 1);
        self.find('.paging_salesforce').find('li.next-item').find('a').attr('data-number-page', nextPage);
        self.find('.paging_salesforce').find('li.last-item').find('a').attr('data-number-page', lastPage);
        self.find('.paging_salesforce').show();
    }
}

function listingcmsblock_detect_form_change() {
    $(document).on('change', '.listing-cms-block .second-field-configuration input', function () {

        $(".second-field-configuration button.save_field").addClass("pending_changes");
        $("#second_field_changed").val("true");
    });

    $(document).on('change', '.listing-cms-block .second-field-configuration textarea', function () {

        $(".second-field-configuration button.save_field").addClass("pending_changes");
        $("#second_field_changed").val("true");
    });


    $(document).on('change', '.listing-cms-block .field-configuration input', function () {
        $(".field-configuration button.save_field").addClass("pending_changes");
        $("#field_changed").val("true");
    });

    $(document).on('change', '.listing-cms-block .field-configuration textarea', function () {

        $(".field-configuration button.save_field").addClass("pending_changes");

        $("#field_changed").val("true");
    });
}


function listingcmsblock_save_field_change_second_view(field_name, className) {

    if (field_name !== null && field_name !== undefined && field_name !== '') {

        var jsonLabelList = new Array();
        $('.listing-cms-block .second-field-configuration .title-tabs-content  input.label-custom').each(function () {
            var input = $(this);
            var languageId = input.data('language-id');
            var content = input.val();
            var jsonLabel = new Object();
            jsonLabel.value = content;
            jsonLabel.language = languageId;
            jsonLabelList.push(jsonLabel);
        });
        var contentValue = $('textarea#second-custom-column-content').val();
        var sortValue = $('select[name="sort_order_second"]').val();

        var storage = listingcmsblock_get_fields_settings_storage_name(className);
        var columnSettings = sessionStorage.getItem(storage);
        var newJsonSettings = new Object();
        newJsonSettings.columns = new Array();
        var jsonSettings = JSON.parse(columnSettings);
        if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {
            jsonSettings.columns.forEach(function (item) {
                if (item.name == field_name) {
                    var newItem = Object();
                    newItem = item;
                    newItem.label = jsonLabelList;
                    newItem.sortValue = sortValue;
                    if (item.type === 'custom') {
                        newItem.content = contentValue;
                    }
                    newJsonSettings.columns.push(newItem);
                }
                else {
                    newJsonSettings.columns.push(item);
                }
            });
            sessionStorage.setItem(storage, JSON.stringify(newJsonSettings));
        }

        $(".second-field-configuration button.save_field").removeClass("pending_changes");
        $("#second_field_changed").val("false");

    }
}

function GetConfigurationSettings() {
    var settingList = Object();
    var settingListValues = [];

    var newItem = Object();
    newItem.selector = 'display-as-format';
    newItem.type = 'select';
    settingList.displayAs = newItem;
    settingListValues.push('displayAs');

    newItem = Object();
    newItem.selector = 'column-width';
    newItem.type = 'input';
    settingList.width = newItem;
    settingListValues.push('width');


    newItem = Object();
    newItem.selector = 'add-column-filter';
    newItem.type = 'checkbox';
    settingList.columnFilter = newItem;
    settingListValues.push('columnFilter');


    newItem = Object();
    newItem.selector = 'column-filter-preset-val';
    newItem.type = 'input';
    settingList.columnFilterPresetVal = newItem;
    settingListValues.push('columnFilterPresetVal');

    newItem = Object();
    newItem.selector = 'truncate-chars';
    newItem.type = 'input';
    settingList.truncate = newItem;
    settingListValues.push('truncate');

    newItem = Object();
    newItem.selector = 'format-text';
    newItem.type = 'select';
    settingList.formatText = newItem;
    settingListValues.push('formatText');

    newItem = Object();
    newItem.selector = 'clickable-mail-to';
    newItem.type = 'checkbox';
    settingList.clickMail = newItem;
    settingListValues.push('clickMail');

    newItem = Object();
    newItem.selector = 'clickable-phone';
    newItem.type = 'checkbox';
    settingList.clickPhone = newItem;
    settingListValues.push('clickPhone');

    newItem = Object();
    newItem.selector = 'format-number';
    newItem.type = 'select';
    settingList.formatNumber = newItem;
    settingListValues.push('formatNumber');

    newItem = Object();
    newItem.selector = 'decimals';
    newItem.type = 'input';
    settingList.decimals = newItem;
    settingListValues.push('decimals');

    newItem = Object();
    newItem.selector = 'percent';
    newItem.type = 'checkbox';
    settingList.percent = newItem;
    settingListValues.push('percent');

    newItem = Object();
    newItem.selector = 'show-currency';
    newItem.type = 'checkbox';
    settingList.showCurrency = newItem;
    settingListValues.push('showCurrency');

    newItem = Object();
    newItem.selector = 'currency';
    newItem.type = 'select';
    settingList.currency = newItem;
    settingListValues.push('currency');

    newItem = Object();
    newItem.selector = 'format-date';
    newItem.type = 'select';
    settingList.formatDate = newItem;
    settingListValues.push('formatDate');

    newItem = Object();
    newItem.selector = 'format-time';
    newItem.type = 'select';
    settingList.formatTime = newItem;
    settingListValues.push('formatTime');

    newItem = Object();
    newItem.selector = 'clickable-link';
    newItem.type = 'checkbox';
    settingList.clickLink = newItem;
    settingListValues.push('clickLink');

    newItem = Object();
    newItem.selector = 'custom-text';
    newItem.type = 'multilabel';
    settingList.customLinkText = newItem;
    settingListValues.push('customLinkText');

    newItem = Object();
    newItem.selector = "display-button-toggle";
    newItem.type = 'checkbox';
    settingList.displayToggleButton = newItem;
    settingListValues.push('displayToggleButton');

    newItem = Object();
    newItem.selector = "button-label-true";
    newItem.type = 'multilabel';
    settingList.buttonLabelTrue = newItem;
    settingListValues.push('buttonLabelTrue');

    newItem = Object();
    newItem.selector = "button-label-false";
    newItem.type = 'multilabel';
    settingList.buttonLabelFalse = newItem;
    settingListValues.push('buttonLabelFalse');

    newItem = Object();
    newItem.selector = "button-color-true";
    newItem.type = 'input';
    settingList.buttonColorTrue = newItem;
    settingListValues.push('buttonColorTrue');

    newItem = Object();
    newItem.selector = "button-color-false";
    newItem.type = 'input';
    settingList.buttonColorFalse = newItem;
    settingListValues.push('buttonColorFalse');

    newItem = Object();
    newItem.selector = 'header-check-link';
    newItem.type = 'checkbox';
    settingList.headerCheck = newItem;
    settingListValues.push('headerCheck');

    newItem = Object();
    newItem.selector = 'show-items-selected';
    newItem.type = 'checkbox';
    settingList.showItemsSelected = newItem;
    settingListValues.push('showItemsSelected');

    settingList.settingListValues = settingListValues;

    return settingList;
}

function PopulateFieldForObject(newItem, sectionSelector) {
    var settingList = GetConfigurationSettings();
    var settingListValues = settingList.settingListValues;
    $.each(settingListValues, function (index, item) {
        var currentItem = settingList[item];

        var selector = currentItem['selector'];
        var type = currentItem['type'];
        if (type == 'multilabel') {

            newItem[item] = null;
            var jsonLabelList = new Array();
            $('.' + sectionSelector + ' input.' + selector).each(function () {
                var input = $(this);
                var languageId = input.data('language-id');
                var content = input.val();
                var jsonLabel = new Object();
                jsonLabel.value = content;
                jsonLabel.language = languageId;
                jsonLabelList.push(jsonLabel);

            });
            if (jsonLabelList.length > 0)
                newItem[item] = jsonLabelList;

        } else if (type == 'checkbox') {
            newItem[item] = $('.' + sectionSelector + ' input[name="' + selector + '"]:checked').length > 0;
        }
        else {
            newItem[item] = null;
            if ($('.' + sectionSelector + ' ' + type + '[name="' + selector + '"]').val() != '') {
                newItem[item] = $('.' + sectionSelector + ' ' + type + '[name="' + selector + '"]').val();
            }

        }
    });
}

function listingcmsblock_save_field_change(field_name, className) {

    if (field_name !== null && field_name !== undefined && field_name !== '') {
        var jsonLabelList = new Array();
        $('.listing-cms-block .field-configuration .title-tabs-content  input.label-custom').each(function () {
            var input = $(this);
            var languageId = input.data('language-id');
            var content = input.val();
            var jsonLabel = new Object();
            jsonLabel.value = content;
            jsonLabel.language = languageId;
            jsonLabelList.push(jsonLabel);
        });

        var contentValue = $('textarea#custom-column-content').val();
        var sortValue = $('select[name="sort_order"]').val();
        var fieldToWrite = $('select[name="field-to-write"]').val();
        var writeToSalesforce = $('input[name="write-to-salesforce"]:checked').length > 0;


        var storage = listingcmsblock_get_fields_settings_storage_name(className);
        var columnSettings = sessionStorage.getItem(storage);
        var newJsonSettings = new Object();
        newJsonSettings.columns = new Array();
        var jsonSettings = JSON.parse(columnSettings);
        if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {
            jsonSettings.columns.forEach(function (item) {
                if (item.name == field_name) {
                    var newItem = Object();
                    newItem = item;
                    newItem.label = jsonLabelList;
                    newItem.sortValue = sortValue;
                    if (item.type === 'custom') {
                        newItem.content = contentValue;
                        newItem.writeToSF = writeToSalesforce;
                        newItem.fieldToWrite = fieldToWrite;
                    }
                    PopulateFieldForObject(newItem, 'additional-setting-columns');
                    newJsonSettings.columns.push(newItem);
                }
                else {
                    newJsonSettings.columns.push(item);
                }
            });
            sessionStorage.setItem(storage, JSON.stringify(newJsonSettings));
            listingcmsblock_load_column_settings(JSON.stringify(newJsonSettings), className, false, 'table-columns-fields', 'row_custom_column_settings');
        }

        $(".field-configuration button.save_field").removeClass("pending_changes");
        $("#field_changed").val("false");

    }
}

function listingcmsblock_update_sorteable_column(field_name, className) {

    if (field_name !== null && field_name !== undefined && field_name !== '') {

        let storage = listingcmsblock_get_fields_settings_storage_name(className);

        var columnSettings = sessionStorage.getItem(storage);
        var newJsonSettings = new Object();
        newJsonSettings.columns = new Array();
        var jsonSettings = JSON.parse(columnSettings);
        if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {
            jsonSettings.columns.forEach(function (item) {
                var newItem = Object();
                newItem = item;
                newItem.defaultSort = (item.name == field_name);
                newJsonSettings.columns.push(newItem);
            });
            sessionStorage.setItem(storage, JSON.stringify(newJsonSettings));
        }

    }
}

function listingcmsblock_update_exportable_column(field_name, isExportable, className) {
    if (field_name !== null && field_name !== undefined && field_name !== '') {
        let storage = listingcmsblock_get_fields_settings_storage_name(className);
        var columnSettings = sessionStorage.getItem(storage);
        var newJsonSettings = new Object();
        newJsonSettings.columns = new Array();
        var jsonSettings = JSON.parse(columnSettings);
        if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {
            jsonSettings.columns.forEach(function (item) {
                var newItem = Object();
                newItem = item;
                if (item.name == field_name) {
                    newItem.exportable = isExportable;
                }
                newJsonSettings.columns.push(newItem);
            });
            sessionStorage.setItem(storage, JSON.stringify(newJsonSettings));
        }
    }
}
function listingcmsblock_update_editable_column(field_name, editable, className) {
    if (field_name !== null && field_name !== undefined && field_name !== '') {
        let storage = listingcmsblock_get_fields_settings_storage_name(className);
        var columnSettings = sessionStorage.getItem(storage);
        var newJsonSettings = new Object();
        newJsonSettings.columns = new Array();
        var jsonSettings = JSON.parse(columnSettings);
        if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {
            jsonSettings.columns.forEach(function (item) {
                var newItem = Object();
                newItem = item;
                if (item.name == field_name) {
                    newItem.editable = editable;
                }
                newJsonSettings.columns.push(newItem);
            });
            sessionStorage.setItem(storage, JSON.stringify(newJsonSettings));
        }

    }
}

function listingcmsblock_update_visible_column(field_name, visible, className) {

    if (field_name !== null && field_name !== undefined && field_name !== '') {
        let storage = listingcmsblock_get_fields_settings_storage_name(className);
        var columnSettings = sessionStorage.getItem(storage);
        var newJsonSettings = new Object();
        newJsonSettings.columns = new Array();
        var jsonSettings = JSON.parse(columnSettings);
        if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {
            jsonSettings.columns.forEach(function (item) {
                var newItem = Object();
                newItem = item;
                if (item.name == field_name) {
                    newItem.visible = visible;
                }
                newJsonSettings.columns.push(newItem);
            });
            sessionStorage.setItem(storage, JSON.stringify(newJsonSettings));
        }

    }
}

function listingcmsblock_update_sort(field_name, position, className) {

    if (field_name !== null && field_name !== undefined && field_name !== '') {
        var storage = listingcmsblock_get_fields_settings_storage_name(className);
        var columnSettings = sessionStorage.getItem(storage);
        var newJsonSettings = new Object();
        newJsonSettings.columns = new Array();
        var jsonSettings = JSON.parse(columnSettings);
        if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length > 0) {
            jsonSettings.columns.forEach(function (item) {
                var newItem = Object();
                newItem = item;
                if (item.name == field_name) {
                    newItem.sort = position;
                }
                newJsonSettings.columns.push(newItem);
            });
            sessionStorage.setItem(storage, JSON.stringify(newJsonSettings));
        }

    }
}

function listingcmsblock_update_add_setting(newSetting, className, tableId, container) {

    if (newSetting !== null && newSetting !== undefined && newSetting !== '') {
        var newJsonSettings = new Object();
        newJsonSettings.columns = new Array();
        newJsonSettings.columns.push(newSetting);
        var storage = listingcmsblock_get_fields_settings_storage_name(className);

        var columnSettings = sessionStorage.getItem(storage);
        var jsonSettings = JSON.parse(columnSettings);


        if (jsonSettings && jsonSettings.columns && jsonSettings.columns.length >= 0) {
            jsonSettings.columns.forEach(function (item) {
                var newItem = Object();
                newItem = item;
                newItem.sort = newItem.sort + 1;

                newJsonSettings.columns.push(newItem);
            });
            listingcmsblock_load_column_settings(JSON.stringify(newJsonSettings), className, false, tableId, container);
        }
    }
}

function listingcmsblock_reload_datatable(listingcmsId, offset) {

    if (offset === 0) {
        var totalItems = $('#tableInformation' + listingcmsId + ' input#itemsSetting').val();
        $('.listingcmsblock input[name="totalItems"]').val(totalItems);

    }
    $('#tableInformation' + listingcmsId + ' input#offsetDataTable').val(offset);
    $('#dataTable' + listingcmsId).DataTable().destroy()
    $('#dataTable' + listingcmsId + ' tbody').empty();
    listingcmsblock_load_records_sfview();
}

function listingcmsblock_add_load_more_datatable(listingcmsId, onlyFirst, onlyLast) {


    var tableId = 'dataTable' + listingcmsId;
    if (!$('#tableInformation' + listingcmsId).closest('.listingcmsblock.blockContainer').hasClass('SOQL')) {
        var offset = 0;
        offset = $('#tableInformation' + listingcmsId + ' input#offsetDataTable').val();
        var limit = 0;
        limit = $('#tableInformation' + listingcmsId + ' input#limitDataTable').val();

        //Add class to set visible tableInfo
        if ($("#" + tableId + "_wrapper .dataTables_info").length > 0) {
            $("#" + tableId + "_wrapper .dataTables_info").addClass("custom-info");

        }

        if ($("#" + tableId + "_paginate  a.paginate_button").length > 0) {
            var button_id = $("#" + tableId + "_paginate a.paginate_button").length - 1;

            //Add new button to get first records if not first set
            if ($("#" + tableId + "_firstAction").length == 0) {
                $("#" + tableId + "_paginate").last("a.paginate_button").prepend('<a id="' + tableId + '_firstAction" class="paginate_button paginate_firstAction" aria-controls="' + tableId + '" data-dt-idx="' + button_id + '" tabindex="0" data-listing-id="' + listingcmsId + '" role="link">' + window.translation.first_result + '</a>');

                button_id = button_id + 1;
            }

            //Add new button to get more records if not last set
            if ($("#" + tableId + "_loadAction").length == 0) {
                $("#" + tableId + "_paginate").last("a.paginate_button").append('<a id="' + tableId + '_loadAction" class="paginate_button paginate_loadAction" aria-controls="' + tableId + '" data-dt-idx="' + button_id + '" tabindex="0" data-listing-id="' + listingcmsId + '" role="link">' + window.translation.load_more + '</a>');
            }

            //if (onlyFirst && $("#" + tableId + "_loadAction").length > 0 || (Number(offset) + Number(limit)) > 2000 && $("#" + tableId + "_loadAction").length > 0) {
            if (onlyFirst && $("#" + tableId + "_loadAction").length > 0) {
                $("#" + tableId + "_loadAction").remove();
            }


            if (onlyLast && $("#" + tableId + "_firstAction").length > 0) {
                $("#" + tableId + "_firstAction").remove();
            }
        }
    }
}

function sortResults(settings, prop, asc) {
    settings = settings.sort(function (a, b) {
        if (asc) {
            return (a[prop] > b[prop]) ? 1 : ((a[prop] < b[prop]) ? -1 : 0);
        } else {
            return (b[prop] > a[prop]) ? 1 : ((b[prop] < a[prop]) ? -1 : 0);
        }
    });
    return settings
}


function initialize_ckeditor_listingCMS(element, languageId) {
    if ($('#cke_' + element + languageId).length > 0) {
        $('#cke_' + element + languageId).remove();
    }
    var customConfig = '/js/config/ckeditor_config.js';
    if (element == 'pre-content-') {
        customConfig = '/js/config/ckeditor_config_buttonaction.js';
    }

    var editor = CKEDITOR.replace(element + languageId, {
        //extraPlugins: 'uploadimage,image2',
        //removePlugins: 'image',
        filebrowserBrowseUrl: '/custom-ckfinder/connector',
        filebrowserImageBrowseUrl: '/custom-ckfinder/connector?type=Images',
        filebrowserUploadUrl: '/ckfinder/connector?command=QuickUpload',
        filebrowserImageUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Images',
        filebrowserWindowWidth: 800,
        filebrowserWindowHeight: 600,
        customConfig: customConfig,
        height: 100
    });
    CKFinder.setupCKEditor(editor);
}


function load_table_for_rewrite_parameters(dataUrlRewrite) {

    if (dataUrlRewrite !== null && dataUrlRewrite !== undefined && dataUrlRewrite.trim() !== '') {
        $('#listing-cms-block-conf').find('input[name="rewrite-url-parameters"]').val(dataUrlRewrite);
        var data = JSON.parse(dataUrlRewrite);

        $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters tbody').empty();
        data.forEach(function (value, index) {

            var row = generate_item_table(value.Original, value.Rewrite, value.ItemID);
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters tbody').append(row);
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters .another-options-' + value.ItemID).hide();
        });
        $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters tbody .overwrite-editable').hide();
        $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters a.edit-url-rewrite').on('click', function (e) {
            var dataId = $(this).attr('data-item-row');
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters #overwrite-text-' + dataId).hide();
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters #overwrite-editable-' + dataId).show();
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters .another-options-' + dataId).show();
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters .edit-options-' + dataId).hide();
            return false;
        });
        $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters a.save-url-rewrite').on('click', function (e) {
            var dataId = $(this).attr('data-item-row');
            var dataSetted = $('#listing-cms-block-conf').find('input[name="overwrite-field-' + dataId + '"]').val();
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters #overwrite-text-' + dataId).text(dataSetted);
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters #overwrite-text-' + dataId).show();
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters #overwrite-editable-' + dataId).hide();
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters .another-options-' + dataId).hide();
            $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters .edit-options-' + dataId).show();
            updateHiddenFieldTable(dataId, dataSetted);
            return false;
        });

    }

    /*$('#listing-cms-block-conf').find('select[name="require_url_parameters"]').on('change', function () {
        var valueSelected = $(this).val();
        updateHiddenFieldByChance(valueSelected);

    });*/
}

function updateHiddenFieldByChance(listItems) {
    var content = $('#listing-cms-block-conf').find('input[name="rewrite-url-parameters"]').val();
    var data = null;
    if (content !== null && content !== undefined && content.trim() !== '')
        data = JSON.parse(content);
    var newData = [];
    var count = 0;
    if (isArray(listItems)) {
        listItems.forEach(function (value, index) {
            var found = false;
            if (data !== null) {
                data.forEach(function (valueD, indexD) {

                    if (valueD.Original == value) {
                        valueD.ItemID = count;
                        newData.push(valueD);
                        count++;
                        found = true;
                    }
                });

            }
            if (found === false) {
                var newObject = {};
                newObject.ItemID = count;
                newObject.Original = value;
                newObject.Rewrite = value;
                newData.push(newObject);
                count++;
            }
        });

        content = JSON.stringify(newData);
        load_table_for_rewrite_parameters(content);
    }
    else if (listItems === null) {

        $('#listing-cms-block-conf').find('input[name="rewrite-url-parameters"]').val('');
        $('#listing-cms-block-conf').find('table#listing-url-rewrite-parameters tbody').empty();
    }
}

function updateHiddenFieldTable(itemID, textToUpdate) {
    var content = $('#listing-cms-block-conf').find('input[name="rewrite-url-parameters"]').val();
    var data = JSON.parse(content);
    for (var i = 0; i < data.length; i++) {
        if (data[i].ItemID == itemID) {
            data[i].Rewrite = textToUpdate;
        }
    }

    var dataUpdate = JSON.stringify(data);
    $('#listing-cms-block-conf').find('input[name="rewrite-url-parameters"]').val(dataUpdate);
}

function generate_item_table(original, overwrite, index) {
    var output = '<tr class="item-row-rewrite-' + index + '">';
    output += '<td>' + original + '</td>';
    output += '<td><span id="overwrite-text-' + index + '">' + overwrite + '</span><div class="overwrite-editable" id="overwrite-editable-' + index + '"><input type="text" name="overwrite-field-' + index + '" value="' + overwrite + '" /></div></td>';
    output += '<td><div class="edit-options-' + index + '"><a href="#" data-item-row="' + index + '" class="edit-url-rewrite">Edit</a></div><div class="another-options-' + index + '"><a href="#" data-item-row="' + index + '" class="save-url-rewrite">Save</a></div></td>';
    output += '</tr>';
    return output;
}

function validateLatLng(lat, lng) {
    if (lat < -90 || lat > 90) {
        return false;
    }
    else if (lng < -180 || lng > 180) {
        return false;
    }
    else if (!lat || !lng) {
        return false;
    }
    return true;
}


function set_google_map_listing_opportunities(blockId, locations) {
    if ($('body #listing_map_' + blockId).length > 0) {
        //Load library of getScript only if exist one listingcmsblock  with showMap true
        $.getScript("https://maps.googleapis.com/maps/api/js?key=" + get_gmap_api_key(), function () {
            $('body .listingcmsblock').each(function () {
                var self = $(this);
                var datablockId = self.attr('data-block-id');
                var showMap = self.find('input[name="listingFormat"]').val();
                var mapContainer = document.getElementById('listing_map_' + blockId);

                if (showMap === 'MAP' && blockId === datablockId) {
                    var map; //Create map
                    if (locations && locations.length > 0) {
                        self.find('.legend-item').removeClass("hide")
                        map = new google.maps.Map(mapContainer);

                        google.maps.event.addListenerOnce(map, 'bounds_changed', function (event) {
                            this.setZoom(map.getZoom() - 1);

                            if (this.getZoom() > 16) {
                                this.setZoom(16);
                            }
                        });

                        var markers = [];
                        var markersForCluster = []
                        var mapCluster = new markerClusterer.MarkerClusterer({ map, markersForCluster });


                        var isMobile = $(window).width() < 1025;
                        //Bounds to be used in auto-zoom and auto-center
                        var bounds = new google.maps.LatLngBounds();
                        //Info modal object
                        var infowindow = new google.maps.InfoWindow();
                        //Foreach to display all markers
                        locations.forEach(function (markerInfo) {
                            var latitude = parseFloat(markerInfo.lat);
                            var longitude = parseFloat(markerInfo.lng);

                            if (validateLatLng(latitude, longitude)) {

                                var item = {
                                    lat: markerInfo.lat,
                                    lng: markerInfo.lng,
                                };

                                var countItemExist = latlong_exist_in_array(markers, item.lat, item.lng);
                                if (countItemExist !== 0) {
                                    item.lat += countItemExist;
                                    item.lng += countItemExist;

                                }
                                markers.push(item);

                                var markerPosition = new google.maps.LatLng(parseFloat(item.lat), parseFloat(item.lng));
                                var title = markerInfo.title;
                                //Add to bounds
                                bounds.extend(markerPosition);

                                //Marker object
                                var marker = new google.maps.Marker({
                                    position: markerPosition,
                                    map: map,
                                    title: title
                                });
                                var contentDescription = '';
                                if (markerInfo.description) {
                                    contentDescription = '<p><strong>' + window.translation.description + ':</strong> ' + markerInfo.description + '</p>';
                                }
                                var contentString = '<div id="content">' +
                                    '<p><strong>' + window.translation.title + ':</strong> ' + title + '</p>' + contentDescription +
                                    '</div>';
                                //Add event to open info modal with click of modal
                                marker.addListener('mouseover', function (e) {
                                    infowindow.setContent(contentString);
                                    infowindow.open(map, marker);
                                    return false;
                                });

                                if (markerInfo.urlLink != null) {
                                    marker.addListener('click', function (e) {
                                        var openIn = $('#container-block-' + blockId + ' input[name="openUrlIn"]').val();
                                        if (openIn == 'NEW_TAB') {
                                            window.open(markerInfo.urlLink, '_blank');
                                        }
                                        else {
                                            window.location.assign(markerInfo.urlLink);
                                        }
                                        return false;
                                    });
                                }

                                mapCluster.addMarker(marker);
                            }
                        });
                        //Auto zoom and center of map by markers
                        map.fitBounds(bounds);       // auto-zoom
                        map.panToBounds(bounds);     // auto-center
                    } else {
                        map = new google.maps.Map(mapContainer, {
                            center: { lat: 39.381266, lng: -97.922211 },
                            zoom: 4
                        });
                    }

                    map.setZoom(1);
                    // set_markers_to_map_featured_opportunities(mapContainer, self);
                }
            });
        });
    }
}
var chartGlobal = null;
function drawChart(dataChart, isAutoRefreshAction) {
    /* dataChart: Object with all info required for chart
        datachart: {
            data: [array of labels and values for the chart],
            elementId: int,
            format: string,
            titleAxisX: string,
            titleAxisY: string, 
        }
    */
    if (dataChart) {
        if (isAutoRefreshAction === undefined)
            isAutoRefreshAction = false;

        var classicChart = undefined;
        /* Save data in sessionStorage to read dataChart and
        update the block when user moves it between regions */
        var sessionKeyName = 'listingcmsblock-chart-' + dataChart.elementId;
        sessionStorage.setItem(sessionKeyName, JSON.stringify(dataChart));
        var dataTable = google.visualization.arrayToDataTable(dataChart.data);
        var chartTitle = $("#chart-title-" + dataChart.elementId).val();
        var fontName = 'Lato';
        var fontTitleAxisSize = 14;
        var generalFontSize = 14;
        var fontSizeGeneralTitle = 15.5;
        var options = {
            width: '100%',
            titleTextStyle: { bold: true, fontSize: fontSizeGeneralTitle },
            title: chartTitle,
            fontSize: generalFontSize,
            fontName: fontName,
            hAxis: {
                title: dataChart.titleAxisX,
                textStyle: {
                    fontSize: generalFontSize,
                    fontName: fontName,
                },
                titleTextStyle: { bold: true, fontSize: fontTitleAxisSize }
            },
            vAxis: {
                title: dataChart.titleAxisY,
                textStyle: {
                    fontSize: generalFontSize,
                    fontName: fontName,
                },
                titleTextStyle: { bold: true, fontSize: fontTitleAxisSize }
            },
        }
        var widthScreeen = window.innerWidth;
        // Legend options for Pie and Donut
        var legendOptions = { textStyle: { fontSize: generalFontSize } };
        if (widthScreeen < 680) {
            legendOptions.position = 'bottom';
            legendOptions.alignment = 'center';
        }
        var DOMChartElement = document.getElementById('chart-' + dataChart.elementId);
        if (dataChart.format === 'COLUMN_CHART' || dataChart.format === 'BAR_CHART') {
            // Hiding legend fro bars chart by default
            options.legend = { position: "none" };
            options.height = 300;

            // Setup Options for horizontal bar chart
            if (dataChart.format === 'BAR_CHART') {
                options.height = 320;
                options.bars = 'horizontal';
                options.bar = { groupWidth: '85%' };
                options.chartArea = { width: '80%', left: '15%' }

                if (isAutoRefreshAction === false) {
                    classicChart = new google.visualization.BarChart(DOMChartElement);
                    currentChartObjects[dataChart.elementId] = classicChart;
                } else {
                    classicChart = currentChartObjects[dataChart.elementId];
                }
            }
            if (dataChart.format === 'COLUMN_CHART') {
                options.bar = { groupWidth: "80%" };
                options.chartArea = { width: '85%', left: '10%' }

                if (isAutoRefreshAction === false) {
                    classicChart = new google.visualization.ColumnChart(DOMChartElement);
                    currentChartObjects[dataChart.elementId] = classicChart;
                } else {
                    classicChart = currentChartObjects[dataChart.elementId];
                }
            }
        } else if (dataChart.format === 'PIE_CHART') {
            options.height = 315;
            options.title = chartTitle;
            options.legend = legendOptions;
            options.chartArea = { width: '75%', height: '85%' }

            if (isAutoRefreshAction === false) {
                classicChart = new google.visualization.PieChart(DOMChartElement);
                currentChartObjects[dataChart.elementId] = classicChart;
            } else {
                classicChart = currentChartObjects[dataChart.elementId];
            }
        } else if (dataChart.format === 'DONUT_CHART') {
            options.pieHole = 0.4;
            options.height = 315;
            options.title = chartTitle;
            options.legend = legendOptions;
            options.chartArea = { width: '75%', height: '85%' }

            if (isAutoRefreshAction === false) {
                classicChart = new google.visualization.PieChart(DOMChartElement);
                currentChartObjects[dataChart.elementId] = classicChart;
            } else {
                classicChart = currentChartObjects[dataChart.elementId];
            }
        }

        if (classicChart !== undefined) {
            classicChart.draw(dataTable, options);
        }
    }
}

function cancel_future_autorefresh(listingcmsId) {
    if (autoRefreshBlocks[listingcmsId] !== undefined) {
        clearTimeout(autoRefreshBlocks[listingcmsId].timerId);
    }
}


function stop_listing_autorefresh() {
    // iterate over autoRefreshBlocks and stop the timers
    for (var listingcmsId in autoRefreshBlocks) {
        cancel_future_autorefresh(listingcmsId)
    }
}

function restart_listing_autorefresh() {
    // iterate over autoRefreshBlocks and stop the timers
    for (var listingcmsId in autoRefreshBlocks) {
        listingcmsblock_load_records_sfview(true, listingcmsId, false)
    }
}

function configuring_idle_event() {
    if (Object.keys(autoRefreshBlocks).length > 0) {
        $(document).idle({
            onIdle: function () {
                isUserIdle = true;
                console.log('onidle')
                stop_listing_autorefresh();
            },
            onActive: function () {
                console.log('onactive')
                isUserIdle = false;
                restart_listing_autorefresh();
            },
            onShow: function () {
                console.log('is show, is idle?  ' + isUserIdle)

                if (isUserIdle === true)
                    $('body').trigger('mousemove')
            },
            idle: 300000,
            keepTracking: true,
            events: 'mousemove keydown mousedown touchstart click'
        });
    }
}

$(document).on('change', '.row_auto_refresh_settings input[id="use-auto-refresh"]', function () {
    review_auto_refresh_frequency_setting($(this).is(':checked'), $(this).closest('#listing-cms-block-conf'));
});

$(document).on('change', 'body.backend-page #facet-configuration-detail select[name="facets-fields"]', function () {
    
    var facet_type = $(this).parent().find('select[name="facets-fields"] option:selected').data('type');
    if (facet_type == 'picklist' || facet_type == 'multipicklist') {
        $('#facet-configuration-detail').find('.for-picklist').removeClass('hide');
        $('#facet-configuration-detail').find('.for-date-range').addClass('hide');
        var facet_field = $('#facet-configuration-detail [name="facets-fields"]').val();
        add_field_picklist_values_to_autocomplete(facet_type, $('#listing-cms-block-conf select[name="salesforce_object"]').val(), facet_field, true, 'facet-configuration-detail')
    }
    else {
        $('#facet-configuration-detail').find('.for-picklist').addClass('hide');
        $('#facet-configuration-detail').find('.for-date-range').removeClass('hide');
    }
})

function review_auto_refresh_visibility_settings(isVisible, selfModal) {
    if (isVisible === true) {
        //selfModal.find('.row_auto_refresh_settings').removeClass('hide-custom');
        //review_auto_refresh_frequency_setting(true, selfModal)
        //selfModal.find('.row_auto_refresh_settings .frequency-setting').addClass('hide-custom');
        //selfModal.find('.row_auto_refresh_settings #use-auto-refresh').prop("checked", false);
    } else {
        selfModal.find('.row_auto_refresh_settings').addClass('hide-custom');
        selfModal.find('.row_auto_refresh_settings #use-auto-refresh').prop("checked", false);
        review_auto_refresh_frequency_setting(false, selfModal)
    }
}
function review_auto_refresh_frequency_setting(isEnabled, selfModal) {
    if (isEnabled === true) {
        //selfModal.find('.row_auto_refresh_settings  .separator').removeClass('hide');
        //selfModal.find('.row_auto_refresh_settings  .frequency-setting').removeClass('hide-custom');
    } else {
        selfModal.find('.row_auto_refresh_settings  .separator').addClass('hide');
        selfModal.find('.row_auto_refresh_settings  .frequency-setting').addClass('hide-custom');
    }
}


function autocomplete_field_for_filter_field(self, customSessionVar, picklist_field_values) {
    var data = get_data_for_autocomplete_filter_field(customSessionVar);

    var availableTags = [];
    if (picklist_field_values && picklist_field_values.length > 0) {
        for (var i = 0; i < picklist_field_values.length; i++) {
            var item_val = picklist_field_values[i].value;
            availableTags.push({ category: "Static Values", label: item_val, value: item_val });
        }
    }
    if (data && data.length > 0) {
        for (var i = 0; i < data.length; i++) {
            var data_value = data[i];
            availableTags.push({ category: "Session Variables", label: data_value, value: data_value });
        }
    }


    var availableTagsNotDate = [];
    var dataNotDate = get_data_for_autocomplete_filter_field(customSessionVar, false, true);
    if (dataNotDate && dataNotDate.length > 0) {
        for (var i = 0; i < dataNotDate.length; i++) {
            var data_value = dataNotDate[i];
            availableTagsNotDate.push({ category: "Session Variables", label: data_value, value: data_value });
        }
    }



    $.widget("custom.catcomplete", $.ui.autocomplete, {
        options: {
            clearButton: true,
            clearButtonHtml: '&times;',
            clearButtonPosition: {
                my: "right center",
                at: "right center"
            }
        },
        _create: function () {
            var self = this;
            self._super();
            self.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
            if (self.options.clearButton) { self._createClearButton(); }

        },
        _renderMenu: function (ul, items) {
            var that = this,
                currentCategory = "";
            $.each(items, function (index, item) {
                var li;
                if (item.category != currentCategory) {
                    ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
                    currentCategory = item.category;
                }
                li = that._renderItemData(ul, item);
                if (item.category) { li.attr("aria-label", item.category + " : " + item.label); }
            });
        },
        _createClearButton: function () {
            var self = this;
            self.clearElement = $("<span>")
                .attr("tabindex", "-1")
                .addClass("custom-ui-autocomplete-clear")
                .html(self.options.clearButtonHtml)
                .appendTo(self.element.parent());
            if (self.options.clearButtonPosition !== false && typeof self.options.clearButtonPosition === 'object') {
                if (typeof self.options.clearButtonPosition.of === 'undefined') {
                    self.options.clearButtonPosition.of = self.element;
                }
                self.clearElement.position(self.options.clearButtonPosition);
            }
            self._on(self.clearElement, {
                click: function () {
                    self.element.val('').focus();
                    self._hideClearButton();
                }
            });
            self.element.addClass('ui-autocomplete-input-has-clear');
            self._on(self.element, {
                input: function () {
                    if (self.element.val() !== "") {
                        self._showClearButton();
                    } else {
                        self._hideClearButton();
                    }
                }
            });
            self._on(self.menu.element, {
                menuselect: function () {
                    self._showClearButton();
                }
            });
            if (self.element.val() !== "") {
                self._showClearButton();
            } else {
                self._hideClearButton();
            }

        },
        _showClearButton: function () {
            this.clearElement.css({ 'display': 'inline-block' });
        },
        _hideClearButton: function () {
            this.clearElement.css({ 'display': 'none' });
        }
    });

    self.find('.custom_filtering input[name="filter_value"]').catcomplete({
        source: availableTags,
        delay: 0,
        clearButton: true,
        minLength: 0,
    }).focus(function () {
        $(this).catcomplete("search");
    }).click(function () {
        $(this).catcomplete("search");
    });


    self.find('input[name="path_record_id"]').catcomplete({
        source: availableTagsNotDate,
        delay: 0,
        clearButton: true,
        minLength: 0,
    }).focus(function () {
        $(this).catcomplete("search");
    }).click(function () {
        $(this).catcomplete("search");
    });
}

function autocomplete_field_for_facet(elementReveal, customSessionVar, picklist_field_values) {
    var data = get_data_for_autocomplete_filter_field(customSessionVar);

    var availableTags = [];
    if (picklist_field_values && picklist_field_values.length > 0) {
        for (var i = 0; i < picklist_field_values.length; i++) {
            var item_val = picklist_field_values[i].value;
            availableTags.push({ category: "Static Values", label: item_val, value: item_val });
        }
    }
    if (data && data.length > 0) {
        for (var i = 0; i < data.length; i++) {
            var data_value = data[i];
            availableTags.push({ category: "Session Variables", label: data_value, value: data_value });
        }
    }
    var optionsFilters = '';
    if (availableTags) {
        availableTags.forEach(function (itemI) {
            optionsFilters += '<option value="' + itemI.value + '" >' + itemI.label + '</option>';
        })
    }

    listingcmsblock_load_slimselect($('#' + elementReveal), optionsFilters, 'preset-values-facet-val', 'preset-values-facet', 'Preset values');
}



function fix_trim_section() {
        $(document).on('click', "a.listing-trimmed-view-more", function () {
            var parent = $(this).parents(".listing-trimmed-section");
            parent.find(".trimmed-version").addClass("hide");
            parent.find(".original-text-section").removeClass("hide");
            $(this).addClass("hide");
            return false;
        });

    if ($('.listing-cms-datatable').length > 0) {
        $('.listing-cms-datatable').delegate("a.listing-trimmed-view-more", "click", function () {
            var parent = $(this).parents(".listing-trimmed-section");
            parent.find(".trimmed-version").addClass("hide");
            parent.find(".original-text-section").removeClass("hide");
            $(this).addClass("hide");
            return false;
        });
    }
}

function getGlobalRestrictedText() {
    var useIcon = false;
    let userAgent = navigator.userAgent;
    let browserName;

    if (userAgent.match(/chrome|chromium|crios/i)) {
        if (navigator.userAgent.indexOf("Win") != -1) {
            useIcon = true;
        }
        else {
            useIcon = false;
        }
    } else {
        useIcon = false;
    }

    if (useIcon)
        return "&#xf06e;";
    else
        return "&#128065;";
}

function add_column_filters_datatable_listing(table, filter_columns, columnFilterHeadersWithPreset) {
    var filter_to_include = []
    var filter_to_includePreset = [];
    var filter_to_includePresetObj = {};
    let ariaLabelBaseForFilter = window.translation.wcag_filter_by;
    var loadOnDatatable = table.parents().find('input[name="loadOnDatatable"]').val() == 'true';
    filter_columns = filter_columns ? JSON.parse(filter_columns) : [];
    columnFilterHeadersWithPreset = columnFilterHeadersWithPreset ? JSON.parse(columnFilterHeadersWithPreset) : [];
    for (var i = 0; i < filter_columns.length; i++) {
        filter_to_include.push(filter_columns[i].toLowerCase());
    }

    for (var i = 0; i < columnFilterHeadersWithPreset.length; i++) {
        var tokensInfo = columnFilterHeadersWithPreset[i].toLowerCase().split("#");
        filter_to_includePresetObj[tokensInfo[0].toLowerCase()] = tokensInfo[1].toLowerCase();
    }
    if (table.find('filter').length == 0) {
        $('<filter></filter>').insertAfter(table.find('thead'));
    }
    let filterSection = table.find('filter');
    filterSection.find('tr').remove();
    filterSection.append($('<tr></tr>'));
    let trSection = filterSection.find('tr');
    table.api().columns().every(function () {
        var column = this;
        var header = column.header();
        var fieldItem = '';
        table.find("thead tr th:nth-child(" + column.index() + ")").each(function () {
            fieldItem = $(this).attr("data-field-name");
            var currentFooter = $(column.footer());
            currentFooter.empty();
            trSection.append(currentFooter);
            let dataAriaLabel = $(this).attr('data-aria-label');
            if (dataAriaLabel !== null && dataAriaLabel !== undefined)
                dataAriaLabel = dataAriaLabel.replace(':', '');
            let currentAriaLabel = ariaLabelBaseForFilter;

            if (fieldItem && filter_to_include.indexOf(fieldItem.toLowerCase()) != -1) {
                currentAriaLabel = currentAriaLabel.replace('{X}', dataAriaLabel);
                var select = $('<select class="data-table-filter-column" aria-label="' + currentAriaLabel + '"><option value="">' + window.translation.all + '</option></select>')
                    .appendTo(currentFooter)
                    .on('change', function () {
                        var val = $(this).val();
                        var tableId = table.attr('id');
                        if (tableId == "organization-volunteer-opportunities") {
                            /*https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex*/
                            column.search(val ? '^' + escapeRegExp(val) + '$' : '', true, false).draw();
                        } else {
                            if (val === String(parseInt(val, 10))) {
                                column.search('\\b' + val + '\\b$', true, false, true).draw();
                            } else {
                                column.search(val).draw();
                            }
                        }
                    });

                var data = column.data().unique();
                if ($(header).hasClass('datetime-column') || $(header).hasClass('datepicker-column')) {
                    data.sort(function (a, b) {
                        var value_a = $("<textarea/>").html(a.replace(/<.*?>/g, '')).text().trim();
                        var value_b = $("<textarea/>").html(b.replace(/<.*?>/g, '')).text().trim();
                        var a = moment(value_a, window.MomentDateTimeFormat).valueOf();
                        var b = moment(value_b, window.MomentDateTimeFormat).valueOf();
                        return ((a < b) ? 1 : ((a > b) ? -1 : 0));
                    });
                }
                else if ($(header).hasClass('href-elements')) {
                    data.sort(function (a, b) {
                        var value_a = a.stripHtml();
                        var value_b = b.stripHtml();
                        return ((value_a > value_b) ? 1 : ((value_a < value_b) ? -1 : 0));
                    });
                }
                else {
                    data = data.sort();
                }
                var options = [];
                var labelsForBoolean = false;
                if ($(header).hasClass('boolean-column'))
                    labelsForBoolean = true;

                data.each(function (d, j) {
                    if ($(header).hasClass('boolean-column')) {
                        var boolValue = '';
                        if (d != null && d.includes('data-boolean-for-search')) {
                            boolValue = $(d).filter('.boolean-attr-data').attr('data-boolean-for-search');
                        }
                        if (boolValue == 'True') {
                            if (options.indexOf('True') == -1) {
                                options.push('True');
                            }
                        } else {
                            if (options.indexOf('False') == -1) {
                                options.push('False');
                            }
                        }
                    }else{
                        var complete_value = $('<div></div>').append(d);
                        complete_value.find('.show-for-small-only').remove()
                        complete_value.find('.filter-value').remove()
                        var d = complete_value.text();
                        if (d != '') {
                            if (typeof d == 'string') d = d.stripHtml();
                            if (options.indexOf(d) == -1) {
                                options.push(d);
                            }
                        }
                    }
                });

                if (!$(header).hasClass('datepicker-column') || !$(header).hasClass('onlydatepicker-column')) {
                    if($(header).hasClass('decimal-column')){
                        options.sort(function(a, b) {return a - b; });
                    }else{
                        options.sort(function (a, b) {
                            var value_a = moment(a, window.MomentDateTimeFormat).valueOf();
                            var value_b = moment(b, window.MomentDateTimeFormat).valueOf();
                            return ((value_a > value_b) ? 1 : ((value_a < value_b) ? -1 : 0));
                        });
                    }
                }
                options.forEach(function (d) {
                    let currentValue = d.trim();
                    var itemVal = '-' + currentValue + '-';
                    if (!loadOnDatatable && $(header).hasClass('boolean-column')) {
                        itemVal = currentValue;
                    }
                    let label = currentValue;
                    if (labelsForBoolean === true) {
                        if (currentValue == 'True') {
                            label = window.translation.item_checked;
                        } else if (currentValue == 'False') {
                            label = window.translation.item_unchecked;
                        }
                    }
                    select.append('<option value="'+ itemVal +'" ' +
                        (filter_to_includePresetObj && filter_to_includePresetObj[fieldItem.toLowerCase()] && filter_to_includePresetObj[fieldItem.toLocaleLowerCase()] == currentValue.toLowerCase() ? 'selected' : '')
                        + '>' + label + '</option>');
                })

                select.trigger('change');

            }
            else {
                currentFooter.empty();
                currentFooter.attr('aria-label', window.translation.filter_not_available);
            }

        });


    });
    $(table).addClass('tfoot-filters');
}

function LoadColorPickers() {
    $('#listing-cms-block-conf .input-color-setting').each(function () {
        var self = $(this);
        createColorPickerFieldListing(self, null);
    });
}

function validate_additional_section(selfModal) {
    var displaySectionAdditional = false;
    selfModal.find('.additional-setting-section .additional-setting-columns').each(function () {
        if (!$(this).hasClass('hide-custom'))
            displaySectionAdditional = true;
    });

    if (displaySectionAdditional === true) {
        selfModal.find('.additional-setting-section').removeClass('hide-custom');
    } else
        selfModal.find('.additional-setting-section').addClass('hide-custom');

}

function validate_listing_search_by_filters(valueInfo, itemVal, separator, isForSOQL) {

    var itemVisiblePerPicklist = false;
    var currentValues = [];
    if (valueInfo && valueInfo != '') {
        if (itemVal.Type == 'date-range') {
            //I need to convert the format of date
            var rangeLimits = itemVal.Range.split('%');

            if (isForSOQL === true && isNaN(valueInfo)) {
                let valueDate = moment(Date.parse(valueInfo)).format(window.MomentDateFormat);
                let valueDateTicks = getTicks(valueDate, window.MomentDateFormat, true);
                return (rangeLimits[0] <= valueDateTicks && valueDateTicks < rangeLimits[1]);
            }
            return (rangeLimits[0] <= valueInfo && valueInfo <= rangeLimits[1]);
        }
        else if (itemVal.Type == 'multipicklist') {
            currentValues = valueInfo.split(separator).map(function (item) {
                return item.trim();
            });
        }
        else {
            currentValues.push(valueInfo.trim());
        }
    }
    if (currentValues.length > 0) {
        for (var i = 0; i < itemVal.Values.length; i++) {
            if (currentValues.indexOf(itemVal.Values[i]) != -1) {
                itemVisiblePerPicklist = itemVisiblePerPicklist || true;
            }
        }
    }
    return itemVisiblePerPicklist;
}

function listingcmsblock_logic_related_with_facets() {
    if (!is_backend_page()) return;
    $(document).on('click', '#facet-configuration-detail .save-settings', function () {
        $('#listing-cms-form input[name="pending-changes"]').val(true);
        var elementReveal = 'facet-configuration-detail';
        var facet_field = $('#' + elementReveal).find('select[name="facets-fields"]').val();
        var facet_items_display = $('#' + elementReveal).find('input[name="facets-items-to-display"]').val();
        var facet_include_number = $('#' + elementReveal).find('input[name="facets-include-count"]:checked').length > 0;
        var facets_show_records = $('#' + elementReveal).find('input[name="facets-show-records"]:checked').length > 0;
        var facets_position = $('#' + elementReveal).find('select[name="facets-position"]').val();
        var facet_id = $('#' + elementReveal).find('input[name="facet-id"]').val();
        var facet_type = $('#' + elementReveal).find('select[name="facets-fields"] option:selected').data('type');
        var self = $('#listing-cms-block-conf').first();
        var isGlobaluser = $('#is-global-user').val() === 'true';
        var default_from = $('#' + elementReveal).find('input[name="facets-default-from"]').val();
        var default_to = $('#' + elementReveal).find('input[name="facets-default-to"]').val();

        var jsonLabelObj = {};
        $('#' + elementReveal).find('.title-tabs-content  input.label-facets-custom').each(function () {
            var input = $(this);
            var languageIso = input.data('language-iso');
            var content = input.val();
            jsonLabelObj[languageIso] = content;
        });

        var facet_label_default = jsonLabelObj[window.translation['language_iso']] ? jsonLabelObj[window.translation['language_iso']] : jsonLabelObj['en-US'];
        var facet_label = JSON.stringify(jsonLabelObj).replaceAll('"', '~');
        if (facet_id == '-1') {

            var newItemIndex = 0;
            self.find('.body-detail-facets .row.body-section').each(function () {
                if ($(this).data('id') > newItemIndex) {
                    newItemIndex = $(this).data('id');
                }
            });
            newItemIndex += 1;


            var itemTemplate = listingcmsblock_facet_template_item();
            self.find('.body-section.not-facets').addClass('hide-custom');

            var itemHtml = itemTemplate;
            itemHtml = itemHtml.replaceAll('@counts@', facet_include_number);
            var contentToAdd = '&nbsp;';
            if (facet_include_number) {
                contentToAdd = listingcmsblock_facet_template_item_show_content();
            }
            itemHtml = itemHtml.replaceAll('@field@', facet_field);
            itemHtml = itemHtml.replaceAll('@id@', newItemIndex);
            itemHtml = itemHtml.replaceAll('@items@', facet_items_display);
            itemHtml = itemHtml.replaceAll('@label-default@', facet_label_default);
            itemHtml = itemHtml.replaceAll('@label@', facet_label);
            if (facet_type == 'date' || facet_type == 'datetime') {
                facet_type = 'date-range';
                itemHtml = itemHtml.replaceAll('@items-display@', "-");
                itemHtml = itemHtml.replaceAll('@count-content@', "-");
                itemHtml = itemHtml.replaceAll('@facets-show-records@', "");
                itemHtml = itemHtml.replaceAll('@facets-position@', facets_position);
                itemHtml = itemHtml.replaceAll('@admin-class@', (isGlobaluser ? '' : 'hide')); 
                itemHtml = itemHtml.replaceAll('@admin-class@', ''); 
                itemHtml = itemHtml.replaceAll('@default-from@', default_from);
                itemHtml = itemHtml.replaceAll('@default-to@', default_to);
            }
            else {
                itemHtml = itemHtml.replaceAll('@count-content@', contentToAdd);
                itemHtml = itemHtml.replaceAll('@items-display@', facet_items_display);
                itemHtml = itemHtml.replaceAll('@admin-class@', '');
                itemHtml = itemHtml.replaceAll('@default-from@', '');
                itemHtml = itemHtml.replaceAll('@default-to@', '');
                itemHtml = itemHtml.replaceAll('@facets-show-records@', facets_show_records);
                itemHtml = itemHtml.replaceAll('@facets-position@', facets_position);
                
            }
            itemHtml = itemHtml.replaceAll('@type@', facet_type);
            self.find('.body-detail-facets').append(itemHtml);

        }
        else {
            if ($('.body-detail-facets .body-section[data-id="' + facet_id + '"]').length > 0) {
                var facet_type_cast = facet_type;
                if (facet_type != 'date' && facet_type != 'datetime') {
                    default_to = '';
                    default_from = '';
                }
                else {
                    facet_type_cast = 'date-range';
                }
                var selectedRow = $('.body-detail-facets .body-section[data-id="' + facet_id + '"]');
                selectedRow.attr('data-label', facet_label);
                selectedRow.attr('data-field', facet_field);
                selectedRow.attr('data-type', facet_type_cast);
                selectedRow.attr('data-items-to-display', facet_items_display);
                selectedRow.attr('data-include-results-number', facet_include_number);
                selectedRow.attr('data-facets-show-records', facets_show_records);
                selectedRow.attr('data-facets-position', facets_position);
                selectedRow.attr('data-default-from', default_from);
                selectedRow.attr('data-default-to', default_to);
                var rowNumber = 0;
                selectedRow.find('.columns').each(function () {
                    switch (rowNumber) {
                        case 0:
                            $(this).html(facet_label_default);
                            break;
                        case 1:
                            $(this).html(facet_field);
                            break;
                        case 2:
                            if (facet_type != 'date' && facet_type != 'datetime') {
                                $(this).html(facet_items_display);
                            }
                            else {
                                $(this).html('-');
                            }
                            break;
                        case 3:
                            var contentToAdd = '&nbsp;';
                            if (facet_type != 'date' && facet_type != 'datetime') {
                                if (facet_include_number) {
                                    contentToAdd = listingcmsblock_facet_template_item_show_content();

                                }
                            }
                            else {
                                contentToAdd = '-';
                            }
                            $(this).html(contentToAdd);
                            break;
                    }
                    rowNumber++;
                });
            }
        }

        var presets = $('#preset-values-facet').val();
        updatePresetFilterConfiguration(presets, facet_id, facets_position, facet_field);

        $('#' + elementReveal).foundation('close');
    });

    $(document).on('click', '.body-detail-facets .row.body-section a.remove-item', function () {
        var self = $('#listing-cms-block-conf').first();
        var selectedRow = $(this).parent().parent();
        var facet_id = selectedRow.data('id');
        if (facet_id !== '-1') {

            Swal.fire({
                title: window.translation.are_you_sure,
                text: 'The selected facet will be deleted',
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true


            }).then(function (result) {
                if (result.isConfirmed) {
                    $('#listing-cms-form input[name="pending-changes"]').val(true);
                    selectedRow.remove();
                    if (self.find('.body-detail-facets .row.body-section').length == 0) {
                        self.find('.body-section.not-facets').removeClass('hide-custom');
                    }
                }
            });

        }

    });
    $(document).on('change', 'input[name="facets-default-from"],input[name="facets-default-to"]', function () {
        var isFrom = $(this).attr('name') == 'facets-default-from';
        var otherName = isFrom ? 'facets-default-to' : 'facets-default-from';
        var currentValue = $(this).val();
        if (currentValue == 's:today' ||
            currentValue == 's:thisWeek' ||
            currentValue == 's:thisMonth' ||
            currentValue == 's:thisYear') {
            $('input[name="' + otherName + '"]').val(currentValue);
            }
    });
    $(document).on('click', 'a[data-element-reveal="facet-configuration-detail"]', function () {
        var elementReveal = $(this).data('element-reveal');
        var isEditAction = $(this).parent().parent().hasClass('body-section');
        SOQLBehaviors();
        var facet_label = undefined;
        if (isEditAction) {
            var selectedRow = $(this).parent().parent();
            var facet_id = selectedRow.attr('data-id');
            facet_label = selectedRow.attr('data-label');
            var facet_field = selectedRow.attr('data-field');
            var facet_type = selectedRow.attr('data-type');
            var facet_items_display = selectedRow.attr('data-items-to-display');
            var facet_include_number = selectedRow.attr('data-include-results-number')=="true";
            var facets_show_records = selectedRow.attr('data-facets-show-records') == "true";
            var facets_position = selectedRow.attr('data-facets-position')
            var default_from = selectedRow.attr('data-default-from');
            var default_to = selectedRow.attr('data-default-to');


            if (facet_label && typeof facet_label !== 'object') {
                facet_label = facet_label.replaceAll('~', '"');
                facet_label = JSON.parse(facet_label);
            }

        }
        else {
            $('#' + elementReveal).find('input[name="facet-id"]').val('-1');
            $('#' + elementReveal).find('.for-picklist').removeClass('hide');
            $('#' + elementReveal).find('.for-date-range').addClass('hide');
        }

        $('#' + elementReveal).foundation('open');
        $('#title_tabs_labels_facets').foundation();

        if (facet_label && Object.keys(facet_label).length > 0) {
            Object.keys(facet_label).forEach(function (item) {
                $('#' + elementReveal).find('input.label-facets-custom[data-language-iso="' + item + '"]').val(facet_label[item]);
            });

            $('#' + elementReveal).find('select[name="facets-fields"]').val(facet_field);
            $('#' + elementReveal).find('input[name="facets-items-to-display"]').val(facet_items_display);
            $('#' + elementReveal).find('input[name="facets-include-count"]').prop('checked', facet_include_number);
            $('#' + elementReveal).find('input[name="facets-show-records"]').prop('checked', facets_show_records);
            facets_position = !facets_position || facets_position == null || facets_position =='null' ? '0' : facets_position;
            if (facets_position != null)
                $('#' + elementReveal).find('select[name="facets-position"]').val(facets_position)


            $('#' + elementReveal).find('input[name="facets-default-from"]').val(default_from);
            $('#' + elementReveal).find('input[name="facets-default-to"]').val(default_to);
            $('#' + elementReveal).find('input[name="facet-id"]').val(facet_id);
            $('#' + elementReveal).find('input[name="facet-type"]').val(facet_type);
            if (facet_type == 'picklist' || facet_type == 'multipicklist') {
                $('#' + elementReveal).find('.for-picklist').removeClass('hide');
                $('#' + elementReveal).find('.for-date-range').addClass('hide');
            }
            else {
                $('#' + elementReveal).find('.for-picklist').addClass('hide');
                $('#' + elementReveal).find('.for-date-range').removeClass('hide');
            }

        }

        var currentConfiguration = $('input[name="preset-filter-configuration"]').val();
        $('#' + elementReveal).find('input[name="preset-values-facet-val"]').val(collectComparisonValues(currentConfiguration, facet_id, facet_field, facets_position));

        add_field_picklist_values_to_autocomplete('picklist', $('#listing-cms-block-conf select[name="salesforce_object"]').val(), facet_field, true, elementReveal)
    });

}

function listingcmsblock_read_facets_information() {

    var self = $('#listing-cms-block-conf').first();
    var ObjectArray = [];
    self.find('.body-detail-facets .row.body-section').each(function () {
        var objFacet = {};
        objFacet.Id = $(this).data('id');
        var infoLabel = $(this).data('label').replaceAll('~', '"');
        if (infoLabel) {
            objFacet.Label = JSON.parse(infoLabel);
        }
        else {
            objFacet.Label = {};
        }
        objFacet.Field = $(this).data('field');
        objFacet.Type = $(this).data('type');
        objFacet.ItemsToDisplay = $(this).data('items-to-display');
        objFacet.IncludeResultsNumber = $(this).data('include-results-number');
        objFacet.ShowOnlyWithRecords = $(this).data('facets-show-records') != undefined ? $(this).data('facets-show-records') : false;
        objFacet.FacetLocation = $(this).data('facets-position') != undefined ? $(this).data('facets-position') : null;
        objFacet.PredefinedValue = ($(this).attr('data-default-from')!='' &&  $(this).attr('data-default-to')!='') ? $(this).attr('data-default-from') + '%' + $(this).attr('data-default-to'):'';
        ObjectArray.push(objFacet);
    });
    return ObjectArray;
}

function listingcmsblock_special_buttons() {
    if ($('.listingcmsblock button.special-action-listing').length > 0) {
        $(document).on('click', '.listingcmsblock button.special-action-listing:not([data-action="hocvolunteer_emailvolunteer"])', function () {


            // function name and parameters to pass
            var fnstring = $(this).data('action');
            var fnparams = [];
            fnparams.push($(this).data('action-data') + '~' + $(this).data('listing-id'));

            // find object
            var fn = window[fnstring];

            // is object a function?
            if (typeof fn === "function")
                fn.apply(null, fnparams);
            else
                window.location.href = fnstring;
        });

        if ($('.listingcmsblock button.special-action-listing[data-action="hocvolunteer_emailvolunteer"]').length > 0) {
            var listingId = $('.listingcmsblock button.special-action-listing[data-action="hocvolunteer_emailvolunteer"]').data('listing-id');
            hocvolunteer_prepare_emailvolunteer(listingId);
        }
    }
}

function listingcmsblock_special_buttons_precontent() {
    if ($('.listingcmsblock button.special-action-listing-precontent').length > 0) {
        $(document).on('click', '.listingcmsblock button.special-action-listing-precontent', function () {

            // function name and parameters to pass
            var fnstring = $(this).data('action');
            var fnparams = [];
            fnparams.push($(this).data('action-data') + '~' + $(this).data('listing-id'));

            // find object
            var fn = window[fnstring];

            // is object a function?
            if (typeof fn === "function") {
                fn.apply(null, fnparams);
            }
            else {
                var exp = /{([A-Za-z])\w+}/g;

                if (fnstring) {
                    if ($(this).parents('.listingcmsblock').first().hasClass('data-table')) {

                        var tokens = [];
                        var valuesToReplace = {};
                        fnstring.replace(exp, function (a, b) {
                            tokens.push(a.substr(1, a.length - 2));
                        });
                        if (tokens.length > 0) {

                            var listingId = $(this).parents('.listingcmsblock').first().find('input[name="listingcmsid"]').val()
                            var datatableId = 'dataTable' + listingId;
                            var datatable = $('#' + datatableId).DataTable();
                            datatable.$('input.check-record[type="checkbox"]:checked').each(function () {
                                for (var i = 0; i < tokens.length; i++) {

                                    var valueId = $(this).attr('data-' + tokens[i]);
                                    if (valuesToReplace[tokens[i]]) {
                                        valuesToReplace[tokens[i]] += valuesToReplace[tokens[i]] != '' ? (',' + valueId) : valueId;
                                    }
                                    else {
                                        valuesToReplace[tokens[i]] = valueId;
                                    }
                                }
                            });

                            for (var i = 0; i < tokens.length; i++) {
                                if (valuesToReplace[tokens[i]]) {
                                    fnstring = fnstring.replaceAll('{' + tokens[i] + '}', valuesToReplace[tokens[i]]);
                                }
                                else {
                                    fnstring = fnstring.replaceAll('{' + tokens[i] + '}', '');
                                }
                            }

                        }
                    }

                    if ($(this).hasClass('add-occurrence-button')) {
                        //call service to get VO information
                        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
                        let token = get_token_next_page();
                        let xhrs = [];

                        let xhr = $.ajax({
                            method: "GET",
                            url: urlSite + "get-vo-specific-info?oppId=" + retrieveGetParameter('urlParameter(1)'),
                        }).done(function (data) {
                            var jsonData = (data) ? JSON.parse(data) : '';
                            if (jsonData !== null && jsonData !== undefined && jsonData.code == 200) {
                                
                                let fieldMaximumAttendance = { "value": jsonData.MaximumAttendance, "sf_field": window.instance_prefix_hybrid + "Maximum_Attendance__c" };
                                let fieldCoordinator = { "value": jsonData.Coordinator, "sf_field": window.instance_prefix_hybrid + "Opportunity_Coordinator__c" };
                                let fieldLocation = { "value": jsonData.Location, "sf_field": window.instance_prefix_hybrid + "Location__c" };

                                let objectData = { PopulateFieldsWithTheseValues: true, "0": fieldMaximumAttendance, "1": fieldCoordinator, "2": fieldLocation };
                                sessionStorage.setItem(token, JSON.stringify(objectData));
                            }
                        });

                        xhrs.push(xhr);

                        if (fnstring.indexOf('?') >= 0)
                            fnstring += "&tokennextpage=" + token;
                        else
                            fnstring += "?tokennextpage=" + token;

                        $.when.apply($, xhrs).done(function () {
                            window.location.href = fnstring;
                        });

                    } else {
                        window.location.href = fnstring;
                    }
                }

            }


        });

    }
}

function detectItemsToSend(listingCMSId) {
    var tokens = [];
    var exp = /{([A-Za-z])\w+}/g;
    var listingSection = $('input[name="listingcmsid"][value="' + listingCMSId + '"]').parents('.listingcmsblock').first();
    if (listingSection.find('.precontent').length > 0 && listingSection.find('.precontent button.special-action-listing-precontent,.precontent a.open-form-modal.multiple-update').length > 0) {
        listingSection.find('.precontent button.special-action-listing-precontent,.precontent a.open-form-modal.multiple-update').each(function () {
            var valueStr = $(this).attr('data-action');
            if (valueStr) {
                valueStr.replace(exp, function (a, b) {
                    tokens.push(a.substr(1, a.length - 2));
                });
            }
            valueStr = $(this).attr('data-url-parameters');
            if (valueStr) {
                valueStr.replace(exp, function (a, b) {
                    tokens.push(a.substr(1, a.length - 2));
                });
            }
        });
    }
    
    return tokens;
}

$.fn.dataTable.ext.search.push(function (settings, data, dataIndex) {
    var datatable = new $.fn.dataTable.Api(settings);
    var dataTableId = datatable.table().node().id;
    var self = $('#' + dataTableId).parents('.listingcmsblock').first();
    let isForSOQL = false;
    if (self.hasClass('SOQL'))
        isForSOQL = true;
    var FilterObject = GetAdvancedFilterObject(self);
    if (FilterObject && FilterObject.length > 0) {
        var rowId = datatable.row(dataIndex).nodes()[0];

        var itemVisible = true;
        FilterObject.forEach(function (itemVal) {
            var valueInfo = $(rowId).find('input.record-id').attr('data-' + itemVal.Field.toLowerCase());
            itemVisible = itemVisible && validate_listing_search_by_filters(valueInfo, itemVal, ';', isForSOQL);
            
        });
        return itemVisible;
    }
    return true;
});

function add_field_picklist_values_to_autocomplete(fieldType, salesforceObj, salesforcefield, forFacetFilter, elementReveal) {
    var self = $('#listing-cms-block-conf');
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        method: "POST",
        url: urlSite + "Admin/GetValuesFromSFField",
        data: { sfObject: salesforceObj, sfField: salesforcefield },
        beforeSend: function () {
        }
    }).done(function (data) {
        var jsonData = (data) ? JSON.parse(data) : '';
        var customSessionVar = jsonData.customsessionvar;
        var picklist_field_values = jsonData.values;
        if (forFacetFilter) {
            autocomplete_field_for_facet(elementReveal, customSessionVar, picklist_field_values)
        }
        else if (fieldType === 'picklist' || fieldType === 'multipicklist') {
            autocomplete_field_for_filter_field(self, customSessionVar, picklist_field_values);
        } else if (fieldType === 'boolean') {
            picklist_field_values = [{ value: 'true', label: 'true' }, { value: 'false', label: 'false' }];
            autocomplete_field_for_filter_field(self, customSessionVar, picklist_field_values);
        } else {
            autocomplete_field_for_filter_field(self, customSessionVar);
        }
    });
}


function ApplyModalConfigurationForRSS() {
    $('#listing-cms-block-conf').find('.listing-multi-area').hide();
    $('#listing-cms-block-conf').find('#listingcmsblock-advanced-settings .visible-to-label').hide();
    $('#listing-cms-block-conf').find('#listingcmsblock-advanced-settings .visible-to').hide();
    $('#listing-cms-block-conf').find('.custom_styling_section').hide();
    $('#listing-cms-block-conf').find('#listingcms_exception_url_container').hide();
    $('#listing-cms-block-conf').find('.rss-feed-section').show();
    $('#listing-cms-block-conf').find('.row_custom_card_template label.card-title').text('Feed Item Structure');
    if ($('#listing-cms-block-conf').find('input[name="listingcms_visible_to"]').val() == '0') {
        $('#listing-cms-block-conf').find('#listingcms_visibility_0').trigger('click');
    }
    $('#listing-cms-block-conf').find('.row_display_search_section').hide();
    $('#listing-cms-block-conf').find('.row_items_per_page').hide();
    $('#listing-cms-block-conf').find('.filterAndFacets').addClass('hide-custom');
}

function RemoveModalConfigurationForRSS(displayFormat) {
    $('#listing-cms-block-conf').find('.listing-multi-area').show();
    $('#listing-cms-block-conf').find('#listingcmsblock-advanced-settings .visible-to-label').show();
    $('#listing-cms-block-conf').find('#listingcmsblock-advanced-settings .visible-to').show();
    $('#listing-cms-block-conf').find('.custom_styling_section').show();
    $('#listing-cms-block-conf').find('#listingcms_exception_url_container').show();
    $('#listing-cms-block-conf').find('.rss-feed-section').hide();
    $('#listing-cms-block-conf').find('.row_custom_card_template label.card-title').text(window.translation.custom_card_template);
    $('#listing-cms-block-conf').find('.row_display_search_section').show();
    $('#listing-cms-block-conf').find('.row_items_per_page').show();
    if (displayFormat == "4" || displayFormat == "3" || displayFormat == "1") {
        $('#listing-cms-block-conf').find('.filterAndFacets').removeClass('hide-custom');
    } else {
        $('#listing-cms-block-conf').find('.filterAndFacets').addClass('hide-custom');
    }
}

/**
 *
 * @param {any} arr1
 * @param {any} arr2
 * @returns inArr1 : Contains the arr1's elements missing in arr2
 * inArr2 : Contains the arr2's elements missing in arr1
 */
function findArrayDifferences(arr1, arr2) {
    const set1 = new Set(arr1);
    const set2 = new Set(arr2);

    // Find differences in arr1
    const diffInArr1 = arr1.filter(item => !set2.has(item));

    // Find differences in arr2
    const diffInArr2 = arr2.filter(item => !set1.has(item));

    return {
        inArr1: diffInArr1,
        inArr2: diffInArr2
    };
}
function addRulePresetFilter(fieldToFilter, friendlyFieldName, filter_value) {
    $('#listing-cms-form .rule_filter span.error').remove();
    var ruleQuantity = $('#listing-cms-form .filterAndFacets .preset_filter_rules .rule').length;
    var operatorText = "equals";
    var value_rule = filter_value === '' ? '<span class="empty">Empty</span>' : filter_value;

    var rule = '<div class="rule columns" data-field="' + fieldToFilter + '" data-value="' + filter_value + '">'
        + '<div class="field_rule columns small-3">' + friendlyFieldName + '</div>'
        + '<div class="operator_rule columns small-3">' + operatorText + '</div>'
        + '<div class="value_rule columns small-3">' + value_rule + '</div>'
        + '<div class="delete_rule  columns small-1"><a href="#" aria-label="delete rule"></a></div>'
        + '<div/>';

    // adding new rule    
    //$('#listing-cms-form .without_rules').addClass('hide-custom');
    $('#listing-cms-form .preset_filter_rules').append(rule);
    $('#listing-cms-form input[name="preset_filter_value"]').val('');
}

function getAvailableTags(picklist_field_values, data) {

    var availableTags = [];
    if (picklist_field_values && picklist_field_values.length > 0) {
        for (var i = 0; i < picklist_field_values.length; i++) {
            var item_val = picklist_field_values[i].value;
            availableTags.push({ category: "Static Values", label: item_val, value: item_val });
        }
    }
    if (data && data.length > 0) {
        for (var i = 0; i < data.length; i++) {
            var data_value = data[i];
            availableTags.push({ category: "Session Variables", label: data_value, value: data_value });
        }
    }
    return availableTags;
}

function autocomplete_field_for_preset_filter_field(self, customSessionVar, picklist_field_values) {
    
    var data = get_data_for_autocomplete_filter_field(customSessionVar);
    var availableTags = getAvailableTags(picklist_field_values, data);

    $.widget("custom.catcomplete", $.ui.autocomplete, {
        options: {
            clearButton: true,
            clearButtonHtml: '&times;',
            clearButtonPosition: {
                my: "right center",
                at: "right center"
            }
        },
        _create: function () {
            var self = this;
            self._super();
            self.widget().menu("option", "items", "> :not(.ui-autocomplete-category)");
            if (self.options.clearButton) { self._createClearButton(); }

        },
        _renderMenu: function (ul, items) {
            var that = this,
                currentCategory = "";
            $.each(items, function (index, item) {
                var li;
                if (item.category != currentCategory) {
                    ul.append("<li class='ui-autocomplete-category'>" + item.category + "</li>");
                    currentCategory = item.category;
                }
                li = that._renderItemData(ul, item);
                if (item.category) { li.attr("aria-label", item.category + " : " + item.label); }
            });
        },
        _createClearButton: function () {
            var self = this;
            self.clearElement = $("<span>")
                .attr("tabindex", "-1")
                .addClass("custom-ui-autocomplete-clear preset_filter_custom_var")
                .html(self.options.clearButtonHtml)
                .appendTo(self.element.parent());
            if (self.options.clearButtonPosition !== false && typeof self.options.clearButtonPosition === 'object') {
                if (typeof self.options.clearButtonPosition.of === 'undefined') {
                    self.options.clearButtonPosition.of = self.element;
                }
                self.clearElement.position(self.options.clearButtonPosition);
            }
            self._on(self.clearElement, {
                click: function () {
                    self.element.val('').focus();
                    self._hideClearButton();
                }
            });
            self.element.addClass('ui-autocomplete-input-has-clear');
            self._on(self.element, {
                input: function () {
                    if (self.element.val() !== "") {
                        self._showClearButton();
                    } else {
                        self._hideClearButton();
                    }
                }
            });
            self._on(self.menu.element, {
                menuselect: function () {
                    self._showClearButton();
                }
            });
            if (self.element.val() !== "") {
                self._showClearButton();
            } else {
                self._hideClearButton();
            }

        },
        _showClearButton: function () {
            this.clearElement.css({ 'display': 'inline-block' });
        },
        _hideClearButton: function () {
            this.clearElement.css({ 'display': 'none' });
        }
    });

    self.find('.rule_preset-dynamic_filter input[name="preset_filter_value"]').catcomplete({
        source: availableTags,
        delay: 0,
        clearButton: true,
        minLength: 0,
    }).focus(function () {
        $(this).catcomplete("search");
    }).click(function () {
        $(this).catcomplete("search");
    });

}

function include_suggestions_for_range(input, customSessionVar) {

    var data = get_data_for_autocomplete_filter_field(customSessionVar, true);
    $(input).autocomplete({
        source: data,
        minLength: 2
    });
}



function activate_cancel_link_for_occurrences(self) {

    try
    {
        let cancelActions = self.find('.cancel-occurrence:not(.Canceled)').length;
        if (cancelActions > 0) {
            // iterate to review the endDate and the ScheduleType
            let today = moment();
            self.find('a.cancel-occurrence:not(.Canceled)').each(function () {
                let isNotCancelable = calculate_occurrence_is_not_cancelable($(this), today);

                if (isNotCancelable === false)
                    $(this).parent('span.cancel-occ-action').removeClass('noncancellable');
            });
        }

    }catch (error) {
        console.log('activate_cancel_link_for_occurrences: ' + error)
    }
}

function calculate_occurrence_is_not_cancelable(it, today) {
    let scheduleTypeOcc = it.data("scheduleType");
    let isNotCancelable = false;
    if (scheduleTypeOcc == "Individually Scheduled" || (window.translation != null && Window.translation != undefined && window.translation.individually_scheduled == scheduleTypeOcc)) {
        isNotCancelable = true;
    } else {
        let enddateTime = it.data("endDate");
        let occEndate = moment(enddateTime, window.MomentDateTimeFormat);

        if (occEndate.isSameOrBefore(today)) {// endDate is in the past
            isNotCancelable = true;
        }
    }
    return isNotCancelable;
}

function pathBehavior() {
    $('.listingcmsblock.PATH').each(function () {
        let color = $(this).find('.path-listing-cms input[name="lineColor"]').val();
        let id = $(this).attr('id');
        $('body').append('<style>html body #'+id+' .stepper-wrapper .stepper-item.completed:after { border-bottom: 5px solid '+color+'; }</style>');
    });
}

function activate_report_hours_for_connection(self) {

    try {
        let connections = self.find('a.reporthours.non-reportable').length;
        if (connections > 0) {
            (window.translation != null && Window.translation != undefined && window.translation.window.translation.please_verify == scheduleTypeOcc)
            self.find('a.reporthours.non-reportable').each(function () {

                let attendanceStatus = $(this).data("attendance");
                let attendanceStatusTranslation = (window.translation != null && Window.translation != undefined) ? window.translation.please_verify : '';
                if (attendanceStatus == "Please Verify" || attendanceStatus == attendanceStatusTranslation) {
                    $(this).removeClass('non-reportable');
                } else
                    $(this).remove();
            });
        }

    } catch (error) {
        console.log('activate_report_hours_for_connection: ' + error)
    }
}

function updatePresetFilterConfiguration(presets, facetId, position, fieldName) {
    // Find the hidden input with the name "preset-filter-configuration"
    const hiddenInput = $('input[name="preset-filter-configuration"]');

    // Parse the existing JSON array from the hidden input's value
    let currentConfig = [];
    try {
        currentConfig = JSON.parse(hiddenInput.val() || '[]');
    } catch (e) {
        console.error("Invalid JSON in preset-filter-configuration:", e);
    }

    // If position is "top" and fieldName is provided, remove any item with the field equal to fieldName
    if (position == '2' && fieldName) {
        currentConfig = currentConfig.filter(item => item.field.toLowerCase() !== fieldName.toLowerCase());
    }

    // If presets is undefined or an empty array, remove all items with the given facetId
    if (!Array.isArray(presets) || presets.length === 0) {
        currentConfig = currentConfig.filter(item => item.field !== facetId);
    } else {
        currentConfig = currentConfig.filter(item => item.field !== facetId);
        currentConfig.push({
                field: facetId,
                comparisonValue: presets.join(',')
            });
    }

    hiddenInput.val(JSON.stringify(currentConfig));
}

function collectComparisonValues(currentConfiguration, facetId, fieldName, position) {
    // Parse the currentConfiguration JSON string into an array
    let configArray = [];
    try {
        configArray = JSON.parse(currentConfiguration || '[]');
    } catch (e) {
        console.error("Invalid JSON in currentConfiguration:", e);
        return '';
    }

    // Initialize the new array to collect comparison values
    let resultArray = [];

    // Collect all comparisonValue values that match the given facetId
    if (facetId) {
        resultArray = configArray
            .filter(item => item.field === facetId)
            .map(item => item.comparisonValue);
    }

    // If position is "2", include all items where "field" matches fieldName
    if (position === "2" && fieldName) {
        const additionalValues = configArray
            .filter(item => item.field === fieldName)
            .map(item => item.comparisonValue);

        // Add these additional values to the result array
        resultArray = resultArray.concat(additionalValues);
    }

    // Return the result as a comma-separated string
    return resultArray.join(',');
};
var googleMapAPIAvailable = false;

$(document).ready(function () {
    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();

    add_autocomplete_feature_to_location();
});

function load_google__api_for_search() {
    if ($('body').find('.searchresultblock div.search_map').length > 0) {
        $.getScript('https://maps.googleapis.com/maps/api/js?key=' + get_gmap_api_key(), function () {
            googleMapAPIAvailable = true;
            $('body').find('.searchresultblock.showmap').each(function () {
                let self = $(this);
                let blockId = self.attr('data-block-id');
                let locations = self.find('input[name="occ_information_map"]').val();
                let isProcessed = self.find('input[name="map_processed"]').val();
                if (isProcessed == "false" && locations !== "none") {
                    let mapContainer = document.getElementById("search_result_map_" + blockId);
                    set_markers_to_map_search_opportunities(mapContainer, self);
                }
            });
        });
    }
}

function set_markers_to_map_search_opportunities(mapContainer, block) {

    if (googleMapAPIAvailable === false) {
        return;
    }
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var target = block.find('input[name="openItemIn"]').val();
    var info_locations = block.find('input[name="occ_information_map"]').val();
    var jarray_location = info_locations ? JSON.parse(info_locations) : '';
    var isMobile = $(window).width() < 1025;

    block.find('input[name="map_processed"]').val("true");
    var map;
    var optionsMap = {}
    //Create map
    map = new google.maps.Map(mapContainer, optionsMap);
    google.maps.event.addListenerOnce(map, 'bounds_changed', function (event) {
        this.setZoom(map.getZoom() - 1);

        if (this.getZoom() > 15) {
            this.setZoom(15);
        }
    });
    var blockMapId = block.data('blockId');
    var areLocations = false;
    if (jarray_location) {
        var markers = [];
        var markersForCluster = []

        //renderer
        var mcOptions = {
            title: ' tracks: click to show',
            imagePath: '/img/m'
        };
        var mapCluster = new markerClusterer.MarkerClusterer({ map, markersForCluster });
        //Load locations
        jarray_location.forEach(function (location) {
            var latitudeLong = location.LatLong;
            if (latitudeLong && latitudeLong !== null) {
                var latLongInfo = latitudeLong.split(',');
                var item = {
                    lat: latLongInfo[0],
                    lng: latLongInfo[1],
                    name: location.Name,
                    description: location.Description,
                    datetime: location.Datetime,
                    location: location.Location,
                    occurrenceId: location.OccurrenceId,
                    /*availableSpots: location.AvailableSpots,*/
                    organization: location.Organization
                };

                var countItemExist = latlong_exist_in_array(markers, item.lat, item.lng);
                if (countItemExist !== 0) {
                    item.lat += countItemExist;
                    item.lng += countItemExist;
                }
                markers.push(item);
            }
        });

        //Bounds to be used in auto-zoom and auto-center
        var bounds = new google.maps.LatLngBounds();

        //Foreach to display all markers
        markers.forEach(function (markerInfo) {

            var markerPosition = new google.maps.LatLng(parseFloat(markerInfo.lat), parseFloat(markerInfo.lng));
            var oppName = markerInfo.name;

            //Add to bounds
            bounds.extend(markerPosition);

            //Marker object
            var marker = new google.maps.Marker({
                position: markerPosition,
                map: map,
                title: oppName
            });

            mapCluster.addMarker(marker);

            var organizationDataToDisplay = (markerInfo.organization) ? ('<strong>' + window.translation.organization + ':</strong> ' + markerInfo.organization) : '';
            var availableDataToDisplay = (markerInfo.availableSpots) ? ('<p><strong>' + markerInfo.availableSpots + '</strong></p>') : '';

            var contentString = '<div id="content">' +
                '<p><strong>' + window.translation.name_report + ':</strong> ' + oppName + '</p>' +
                organizationDataToDisplay +
                '<p><strong>' + window.translation.location_details + ':</strong> ' + markerInfo.location + '</p>' +
                availableDataToDisplay +
                '<p><strong>' + window.translation.datetime + ':</strong> ' + markerInfo.datetime + '</p>';

            if (!isMobile) {
                contentString += '<p><strong>' + window.translation.click_marker_go_opportunity_detail + '</strong></p>';
            }
            else {
                contentString += '<p><a href="/opportunity/' + markerInfo.occurrenceId + '" target="' + target + '">' + window.translation.click_here_to_go_opportunity_detail + '</a></p>';
            }

            contentString += '</div>';
            //Info modal object
            var infowindow = new google.maps.InfoWindow({
                content: contentString
            });

            //Add event to open info modal with hover of pin
            marker.addListener('mouseover', function () {
                if (!isMobile) {
                    infowindow.open(map, marker);
                }
                return false;
            });
            marker.addListener('mouseout', function () {
                if (!isMobile) {
                    infowindow.close();
                }
                return false;
            });


            //Add event to open info modal with click of modal
            marker.addListener('click', function (e) {
                if (!isMobile) {
                    window.location = urlSite + 'opportunity/' + markerInfo.occurrenceId;
                }
                else {
                    infowindow.open(map, marker);
                }

                return false;
            });

            markersForCluster.push(marker);

        });

        //areLocations = markers.length > 0;
        areLocations = true;
    }

    if (areLocations) {
        //Auto zoom and center of map by markers
        map.fitBounds(bounds);       // auto-zoom
        map.panToBounds(bounds);     // auto-center
    } else {
        $('.map-item-' + blockMapId).hide();
    }
}



function add_autocomplete_feature_to_location_field(navigatorAllowed) {

    let options = {
        fields: ["address_components", "formatted_address", "icon", "name"],
    };

    const regionBias = $('.basic-search input[name="address-suggestion-bias"]:first').val();


    if (regionBias !== null && regionBias !== undefined && regionBias !== '') {
        let multipleCountries = regionBias.split("|");
        if (multipleCountries.length > 1) {
            options["componentRestrictions"] = { country: multipleCountries };
        } else {
            options["componentRestrictions"] = { country: regionBias };
        }
    }
    

    $('input[type="text"].autocomplete-address').each(function () {
        new google.maps.places.Autocomplete($(this)[0], options);
    });

}

function add_autocomplete_feature_to_location_inner() {

    navigator.permissions.query({
        name: 'geolocation'
    }).then(permission =>
        // is geolocation granted?
        permission.state === "granted"
            ? 'Yes'
            : 'No'
    ).then(allowed => add_autocomplete_feature_to_location_field(allowed))
  
}
function is_needed_autocomplete_address_feature() {
    //for now the feture is enabled only for search result block
    return $('div.searchresultblock.blockContainer input[name="location"].autocomplete-address').length > 0;
}
function add_autocomplete_feature_to_location() {
    let isNeededAutoCompleteFeature = is_needed_autocomplete_address_feature();

    if (isNeededAutoCompleteFeature === true) {

        if (is_googlemapapi_loaded()) {
            add_autocomplete_feature_to_location_inner();
        }else {

            load_google_map_api(true, add_autocomplete_feature_to_location_inner);
        }
    }
}

//Load methods after load translations
function after_translation_resource_load_searchresult() {
    load_google__api_for_search();

	//Behaviors search result
    searchresult_behaviors(false);

	//Populate location field of searchresultblock
	//searchresult_populate_location_field();

    //Behaviors of backend for SearchResult Block
    searchresult_backend_behaviors(false);

    reset_block_search_form();

    search_result_as_corporate_page();

    window.addEventListener('beforeunload', (event) => {

        var searchFlag = sessionStorage.getItem('searchpage');

        if (searchFlag !== null && searchFlag !== undefined) {
            sessionStorage.removeItem("searchpage");
        }
    });
}

function searchresult_filter_events(self) {

    self.find('.filter-sort-button a').on('click', function () {
        var selfFilterSort = $(this).parents('.filter-sort-button').first();
        if (self.find('.advanced-search-section').css('display') !== 'none') {
            self.find('.advanced-search-section').fadeOut('normal', function () {
                self.find('.content-section').css({
                    'width': '100%',
                    'padding-left': '1%',
                    'padding-right': '1%'
                });
            });
        }
        else {
            self.find('.content-section').css({
                'width': '67%',
            });

            selfFilterSort.css({
                'left': '1%'
            });
            self.find('.advanced-search-section').fadeIn('fast');
        }
        return false;
    });

   


    self.find('.fieldset-step.availability-section input[name="your_availability"]').on('click', function () {
        var attrId = $(this).attr('id');
        var isAll = (attrId.indexOf('all') != -1) ? true : false;
        var isChecked = $(this).prop('checked');
        if (isAll) {
            var section = attrId.split('-')[1];
            if (isChecked === true) {
                self.find('input[name="your_availability"][id*=' + section + ']').prop('checked', true);

                if (attrId == 'all-all') {
                    self.find('input[name="your_availability"]').prop('checked', true);
                }
            }
            else {
                self.find('input[name="your_availability"][id*=' + section + ']').prop('checked', false);

                if (attrId == 'all-all') {
                    self.find('input[name="your_availability"]').prop('checked', false);
                }
            }
        }

    });

    self.find('.fieldset-filter-calendar.availability-section input[name="your_availability"]').on('click', function () {
        var attrId = $(this).attr('id');
        var isAll = (attrId.indexOf('all') != -1) ? true : false;
        var isChecked = $(this).prop('checked');
        if (isAll) {
            var section = attrId.split('-')[1];
            if (isChecked === true) {
                self.find('input[name="your_availability"][id*=' + section + ']').prop('checked', true);

                if (attrId == 'all-all') {
                    self.find('input[name="your_availability"]').prop('checked', true);
                }
            }
            else {
                self.find('input[name="your_availability"][id*=' + section + ']').prop('checked', false);

                if (attrId == 'all-all') {
                    self.find('input[name="your_availability"]').prop('checked', false);
                }
            }
        }

    });


    self.find('.opportunity-container.view-more.searchresult-listing a.view-more-link').on('click', function () {
        var selfButton = $(this);
        searchresult_populate_opportunities(selfButton, false, true, false);
        return false;

    });

    self.find('.basic-search a.button').on('click', function () {
        var selfButton = $(this);
        searchresult_populate_opportunities(selfButton, true, false, false);
        return false;
    });

   

    self.find('.advanced-search-section .refine-search a.button').on('click', function () {
        var selfButton = $(this);
        searchresult_populate_opportunities(selfButton, true, false, false);
        return false;
    });

    self.find('.advanced-search-section .invitation-code-section a.button').on('click', function () {
        var selfButton = $(this);
        searchresult_populate_opportunities(selfButton, true, false, false);
        return false;
    });

    self.find('.opportunity-container.view-more-total.searchresult-by-date a.view-more-link').on('click', function () {
        var selfButton = $(this);
        searchresult_populate_opportunities(selfButton, false, true, false);
        return false;
    });

    self.find('.my-searches-section .button.get-share-link').on('click', function () {
        var formObject = self.find('form').first();
        var formData = formObject.serializeObject();
        var formDataString = JSON.stringify(formData);

        searchresult_get_shareable_link(self, formDataString);

        return false;

    });

    self.find('.my-searches-section .button.save-search').on('click', function () {

        var formObject = self.find('form').first();
        var formData = formObject.serializeObject();
        var formDataString = JSON.stringify(formData);
        var dataFrom = $(this).attr('data-from');
        var searchName = self.find('input[name="save_current_search_as"]').val();
        var searchNameClean = searchName;
        var blockId = self.attr('data-block-id');

        if (searchName) {
            searchName = searchName;
            searchresult_save_search(self, formDataString, searchName, searchNameClean, dataFrom);
        }
        else {
            Swal.fire({
                title: '',
                icon: 'warning',
                text: window.translation.please_include_a_name_to_save_the_search,
                confirmButtonText: "Ok"

            });
        }

        return false;
    });

    var listingFormat = self.find('input[name="listingFormat"]').val();

    if (listingFormat !== 'CALENDAR_WITHOUT_TILES') {
        self.find('.my-searches-section select[name="my_saved_searches"]').on('change', function () {
            var searchId = $(this).val();
            var isAnonymous = $(this).hasClass('anonymous');

            if (searchId) {
                var self = $(this).parents('.searchresultblock').first();
                var processingContainer = self.find('.processing_screen');
                var elementViewMore = self.find('.view-more.searchresult-listing');

                searchresult_load_search_shareable(self, processingContainer, searchId, elementViewMore, isAnonymous);
            }

        });

    }



}

function is_back_button_action() {
    return (window.performance && window.performance.navigation.type === window.performance.navigation.TYPE_BACK_FORWARD);
}

function validate_back_button_browser(self) {
    var executed = false;
    var listingFormat = self.find('input[name="listingFormat"]').val();
    if (is_back_button_action()) {
        if (listingFormat === 'LISTING_WITHOUT_TILES' || listingFormat === 'LISTING_WITH_TILES' || listingFormat === 'CALENDAR_WITH_TILES' || listingFormat === 'LISTING_WITH_TILE_FLIP') {
            if (self.find('.refine-search a.button').length > 0) {
                self.find('.refine-search a.button').trigger('click');
                executed = true;
            }
        }
    }
    return executed;
}

function getOptionForDatePicker(dateInitial, useOnRender, valueToCompare) {
    var language_ISO = window.translation.language_iso;
    var date_language = language_ISO.split('-')[0];

    if (date_language === undefined || date_language === null || date_language === '')
        date_language = 'en';
    if (date_language === 'zh')
        date_language = 'zh-TW';


    var options = {
        language: date_language,
        format: window.MomentDateFormat.toLowerCase(),
        weekStart: get_start_day_of_week_from_locale(),
    };
    if (dateInitial !== null && dateInitial !== undefined && dateInitial !== '') {
        options['initialDate'] = dateInitial;
    }

    if (useOnRender === true) {

        var dateToCompare = null;
        if (valueToCompare !== null && valueToCompare !== undefined && valueToCompare !== '') {
            dateToCompare = valueToCompare.date;
        } else {
            var nowTemp = new Date();
            var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
            now.setHours(0);
            now.setMinutes(0);
            now.setSeconds(0);
            dateToCompare = now;
        }

        options['startDate'] = dateToCompare;

    }
    return options;
}

function retrieve_first_load_results(self) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var listingFormat = self.find('input[name="listingFormat"]').val();
    var urlToCall = '';
    var showImage = self.find('input[name="showImage"]').val();
    var showOrganizationName = self.find('input[name="showOrganizationName"]').val();
    if (listingFormat === 'LISTING_WITH_TILES' || listingFormat === 'LISTING_WITHOUT_TILES' || listingFormat === 'LISTING_WITH_TILE_FLIP' || listingFormat === 'ONLY_MAP' || listingFormat === 'GRID' || listingFormat === 'SLIDER') {
        urlToCall = 'search/RetrieveFirstLoadForListingInSearch';
    } else if (listingFormat === 'CALENDAR_WITH_TILES') {
        urlToCall = 'search/RetrieveFirstLoadForCalendarTileInSearch';
    }
    var searchResultBlockId = self.attr('data-block-id');
    var formData = self.find('form').serializeObject();
    if (urlToCall !== '') {
        $.ajax({
            url: urlSite + urlToCall,
            method: 'POST',
            data: { blockId: searchResultBlockId, parameters: formData },
            beforeSend: function () {
                self.find('.block_processing').removeClass('hide-custom');
            }
        }).done(function (data) {
            var jsonData = JSON.parse(data);
            if (jsonData.code == 200) {
                var listOpportunities = JSON.parse(jsonData['listingOpportunities']);
                var opportunityContainer = null;
                var elementViewMore = null;
                if (listingFormat === "LISTING_WITH_TILES") {
                    elementViewMore = self.find('.view-more.searchresult-listing').first();
                    opportunityContainer = self.find('.opportunities-result').first().find('.opportunities-service');
                    opportunityContainer.empty();
                    searchresult_populate_opportunity_container_listing(opportunityContainer, listOpportunities, showImage, showOrganizationName);
                }
                else if (listingFormat === "LISTING_WITHOUT_TILES") {
                    elementViewMore = self.find('.view-more.searchresult-listing');
                    opportunityContainer = self.find('#datatable-search-opportunities-block tbody');
                    opportunityContainer.empty();
                    refresh_results_for_default_listing(opportunityContainer, listOpportunities, self);
                }
                else if (listingFormat === "CALENDAR_WITH_TILES") {
                    elementViewMore = self.find('.opportunity-container.view-more-total.searchresult-by-date');
                    opportunityContainer = self.find('.opportunities-result').first();
                    opportunityContainer.find('.opportunity-date-container').remove();
                    searchresult_populate_opportunity_container_by_date(opportunityContainer, listOpportunities, showImage, self, showOrganizationName);
                    searchresult_populate_calendar_tile_link_more_behavior(self);
                } else if (listingFormat === "LISTING_WITH_TILE_FLIP") {
                    elementViewMore = self.find('.view-more.searchresult-listing').first();
                    opportunityContainer = self.find('.opportunities-result').first().find('.opportunities-service');
                    opportunityContainer.empty();
                    searchresult_populate_opportunity_container_listing_flip(opportunityContainer, listOpportunities, showImage, showOrganizationName);
                }
                else if (listingFormat === "ONLY_MAP") {
                    opportunityContainer = self.find('.search_map').first();
                    searchresult_populate_opportunity_container_listing_map(opportunityContainer, listOpportunities, showOrganizationName);
                }
                else if (listingFormat === 'GRID' || listingFormat === 'SLIDER') {
                    opportunityContainer = self.find('.search-opportunity-list-group').first();
                    opportunityContainer.empty();
                    searchresult_populate_opportunity_container_slider_grip(opportunityContainer, listOpportunities, showOrganizationName);
                }


                if (elementViewMore !== null && elementViewMore !== undefined) {
                    //Hide link if not exits more opportunities
                    if (jsonData['occurrencesMore'] <= 0) {
                        elementViewMore.hide();
                    }
                    else {
                        elementViewMore.show();
                        //Update span of more opportunities
                        if (listingFormat === "LISTING_WITH_TILES" || listingFormat === "CALENDAR_WITH_TILES" || listingFormat === "LISTING_WITH_TILE_FLIP")
                            elementViewMore.find('span.number-more').text(jsonData['occurrencesMore']);
                        else if (listingFormat === "LISTING_WITHOUT_TILES") {
                            elementViewMore.find('.view-more-link').removeClass('is-hidden');
                        }

                    }

                }


                if (listingFormat === "LISTING_WITHOUT_TILES" || listingFormat === "LISTING_WITH_TILES" || listingFormat === "LISTING_WITH_TILE_FLIP" || listingFormat === 'ONLY_MAP') {
                    self.find('span.total-occurrences').html(jsonData['totalOccurrences']);
                }

                var facets = JSON.parse(jsonData["facets"]);
                update_dropdowns_filters(self, facets, formData, true);

                //Populate dropdowns related to save searches
                var searchAfterChange = self.find('input[name="SearchWhenFilterChange"]').val();
                var processingContainer = self.find('.processing_screen');
                var autoCompleteActive = self.find('input[name="ShowAutoCompleteFilter"]').val();
                var isfromBasicSearch = self.find('input[name="FromBasicSearch"]').val();
                var distanceDefault = self.find('input[name="distanceValue"]').val();
                var criteriaIssueArea = self.find('#CriteriaIssueArea').val();
                var ageOfVolunteersRange = self.find('input[name="CriteriaAgeOfVolunteersRange"]').val();
                var groups = self.find('input[name="CriteriaGroups"]').val();
                var courtOrdered = self.find('input[name="CriteriaCourtOrdered"]').val();
                var rsvp = self.find('input[name="CriteriaRSVP"]').val();
                var criteriaProgramCauses = self.find('#CriteriaCustomFilter').val();

                searchresult_get_dropdown_values(self, processingContainer, searchResultBlockId, true);
                if (searchAfterChange === "true") {
                    searchresult_update_result_after_change(self);
                }

                if (autoCompleteActive === "true") {
                    generate_autocomplete_keyword(self);
                }

                var currentDate = moment().format(window.MomentDateFormat);
                var endDate = moment().add(12, 'month');
                endDate = endDate.format(window.MomentDateFormat);

                if (isfromBasicSearch === 'true') {
                    currentDate = self.find('input[name="searchvo_date_from"]').val();
                    endDate = self.find('input[name="searchvo_date_to"]').val();
                }


                
                
                /*self.find('input.date-picker-range-input').daterangepicker(
                    options,
                    function (start, end, label) {
                        var startDate = start.format(window.MomentDateFormat);
                        var endDate = end.format(window.MomentDateFormat);
                        self.find('input[name="searchvo_date_from"]').val(startDate);
                        self.find('input[name="searchvo_date_to"]').val(endDate);
                    }
                );*/
                self.find('input[name="searchvo_date_from"]').val(currentDate);
                self.find('input[name="searchvo_date_to"]').val(endDate);

                var optionDatePickerStart = getOptionForDatePicker(null, true, null);

                var startField = self.find('input[name="searchvo_date_from"]').fdatepicker(optionDatePickerStart).on('changeDate', function (ev) {
                    if (ev.date.valueOf() > endField.date.valueOf()) {
                        var newDate = new Date(ev.date)
                        newDate.setDate(newDate.getDate() + 1);
                        endField.update(newDate);
                    }
                }).data('datepicker');

                var optionDatePickerEnd = getOptionForDatePicker(null, true, startField);
                var endField = self.find('input[name="searchvo_date_to"]').fdatepicker(optionDatePickerEnd).data('datepicker');

                //Assign distance default
                if (distanceDefault) {
                    self.find('select[name="distance"]').val(distanceDefault);
                }

                if (ageOfVolunteersRange) {
                    self.find('input[name="age_volunteer_specific"]').val(ageOfVolunteersRange);
                }

                if (groups) {
                    self.find('#other_criteria_groups').prop('checked', true);
                } else {
                    self.find('#other_criteria_groups').prop('checked', false);
                }

                if (courtOrdered) {
                    self.find('#other_criteria_court_ordered').prop('checked', true);
                } else {
                    self.find('#other_criteria_court_ordered').prop('checked', false);
                }

                if (rsvp) {
                    self.find('#other_criteria_seniors').prop('checked', true);
                } else {
                    self.find('#other_criteria_seniors').prop('checked', false);
                }

                if (criteriaIssueArea !== undefined && criteriaIssueArea !== '') {
                    var issueAreaData = criteriaIssueArea.split(';');


                    var issueAreaElement = self.find('#select-issues-area select[name="issue-areas"]');
                    if (issueAreaElement !== undefined) {
                        issueAreaElement.val(issueAreaData);
                        // issueAreaElement.multiselect('reload'); it is not needed due to the end the multiselect are loaded again
                    }
                }

                if (criteriaProgramCauses !== undefined && criteriaProgramCauses !== '') {
                    var programCausesData = criteriaProgramCauses.split(';');

                    var programCauseElement = self.find('#select-causes select[name="my_causes"]');
                    if (programCauseElement !== undefined) {
                        programCauseElement.val(programCausesData);
                        // programCauseElement.multiselect('reload'); //it is not needed due to the end the multiselect are loaded again
                    }
                }

                review_filter_view_by(self);

            } else {
                Swal.fire({
                    title: '',
                    text: jsonData.message,
                    icon: 'error',
                    confirmButtonText: 'Ok',
                });
            }
            self.find('.block_processing').addClass('hide-custom');

        });

    }
}

function validate_location_from_browser(self) {
    if ($('.searchresultblock').length > 0) {
        var addressCookie = getCookie("auto_address");
        var geolocationActive = window.geolocationActive != null ? window.geolocationActive : true;
        var executedRefresh = false;
        var infoCookie = '';
        var inputLocation = self.find('input[name="location"]');
        if (addressCookie === "" && geolocationActive) {
            if (navigator.geolocation) {
               // executedRefresh = true; Comment to allow execute a search by default
                var optionsGeo = {
                    enableHighAccuracy: false,
                    timeout: 10000,
                    maximumAge: 120000
                };

                navigator.geolocation.getCurrentPosition(function (position) {
                    var pos = {
                        lat: position.coords.latitude,
                        lng: position.coords.longitude
                    };

                    try {
                        var processingContainer = self.find('.block_processing').removeClass('hide-custom');
                        processingContainer.show();
                    } catch (e) {

                    }

                    // Consult the GeoLocation API to get the Address
                    $.get(get_geo_url('reversegeo') + "?latitude=" + pos.lat + "&longitude=" + pos.lng, function (data) {
                        var results = data.results;

                        var city = '';
                        var state = '';

                        if (typeof (data) == "string") {
                            data = JSON.parse(data);
                        } 

                        if (data.status == 1 || data.code == 200) {
                            if (typeof (data.city) !== 'undefined' && typeof (data.regioncode1) !== 'undefined') {
                                if (data.city != '') {
                                    city = data.city;
                                }

                                if (data.regioncode1 != '') {
                                    state = data.regioncode1;
                                }
 
                                if (city && state) {

                                    

                                    if (!inputLocation.val()) {
                                        inputLocation.val(city + ', ' + state);
                                    }

                                    infoCookie = city + ',' + state;
                                    setCookie('auto_address', infoCookie, 5);
                                }
                                else {
                                    infoCookie = window.DefaultSiteZipCode + ',';
                                    setCookie('auto_address', infoCookie, 5);
                                    inputLocation.val(window.DefaultSiteZipCode);

                                }
                            }
                            retrieve_first_load_results(self);
                        } else {
                            infoCookie = window.DefaultSiteZipCode + ',';
                            setCookie('auto_address', infoCookie, 5);
                            inputLocation.val(window.DefaultSiteZipCode);
                            retrieve_first_load_results(self);
                        }
                    });

                }, function () {
                    console.log("getCurrentPosition is not supported");
                    infoCookie = window.DefaultSiteZipCode + ',';
                    setCookie('auto_address', infoCookie, 5);
                    inputLocation.val(window.DefaultSiteZipCode);
                    retrieve_first_load_results(self);
                }, optionsGeo);

            }
            else {
                console.log("Geolocation not supported in the search result");
            }
        }
        else if (geolocationActive) {
            var addressCookieInfo = addressCookie.split(',');
            var address = "";
            if (addressCookieInfo[0] !== null && addressCookieInfo[0] !== '')
                address += addressCookieInfo[0];
            if (addressCookieInfo[1] !== null && addressCookieInfo[1] !== '')
                address += ', ' + addressCookieInfo[1];
            if (!inputLocation.val()) {
                inputLocation.val(address);
            }

        } else {
            console.log("Extreme: Geolocation not supported in the search result");
        }
        return executedRefresh;
    }
    return false;
}

function searchresult_populate_opportunities_for_map(self, isSearch, firstLoad) {
    var blockId = self.parents('.searchresultblock').attr('data-block-id');
    var processingContainer = null;
    var formObject = self.parents('form').first();
    var formData = formObject.serializeObject();
    var valueLocalStorage = localStorage.getItem('searchresultblock-' + blockId);

    var listingFormat = self.parents('.searchresultblock').find('input[name="listingFormat"]').val();
    var currentRows = self.parents('.searchresultblock').find('.opportunities-service').find('.opportunity-container').length;
    if (listingFormat === 'LISTING_WITHOUT_TILES') {
        currentRows = self.parents('.searchresultblock').find('#datatable-search-opportunities-block tbody tr[role="row"]').length;
    }
    var selfContainer = self.parents('.searchresultblock').first();

    self.parents('.searchresultblock').find('#block-result-filter-text').removeClass('hide');
    self.parents('.searchresultblock').find('#info-filter-text-result').removeClass("hide");
    if (isViewMore) {
        //Validate if exists localStorage
        if (valueLocalStorage) {
            formData = JSON.parse(valueLocalStorage);
        } else {
            AddInvitationCode(self, formData)
        }


        processingContainer = self.parents('.searchresultblock').find('.processing_screen');

        //Hide link
        self.addClass('is-hidden');
        if (listingFormat === 'LISTING_WITH_TILES') {
            searchresult_populate_next_opportunities_listing(selfContainer, processingContainer, formData, currentRows);
        }
        else if (listingFormat === 'LISTING_WITHOUT_TILES') {

            //default listing
            //refresh_results_for_default_listing();
            searchresult_populate_next_opportunities_listing_default(selfContainer, processingContainer, formData, currentRows);
        }
        else if (listingFormat === 'CALENDAR_WITH_TILES') {
            searchresult_populate_next_opportunities_by_date(selfContainer, processingContainer, formData, currentRows);
        }
        else if (listingFormat === 'LISTING_WITH_TILE_FLIP') {
            searchresult_populate_next_opportunities_listing_flip(selfContainer, processingContainer, formData, currentRows);
        }

    }
    else if (isSearch) {

        if (is_back_button_action() && first_search_after_back_button(blockId)) {
            if (valueLocalStorage) {
                formData = JSON.parse(valueLocalStorage);
            }
        }
        AddInvitationCode(self, formData)

        var elementViewMore = self.parents('.searchresultblock').first().find('.view-more').first();
        processingContainer = self.parents('.searchresultblock').first().find('.processing_screen');
        searchresultblock_populate_search(selfContainer, processingContainer, formData, currentRows, firstLoad);

        //update filters
        review_filter_view_by(self.parents('.searchresultblock'));
        //Update localStorage
        _assign_value_json_local_storage('searchresultblock-' + blockId, formData);
    }
}


function searchresult_behaviors(force) {

    if ($('.searchresultblock').length > 0) {
    	//Save current search in localStorage to be used in method to retrieve next opportunities
        $('.searchresultblock').each(function (index, el) {
            var self = $(this);
            if (self.hasClass('search-block-as-corporate') && force === false) {
                return;
            }

            var processingContainer = self.find('.processing_screen');
            var elementViewMore = self.find('.view-more.searchresult-listing');
            var listingFormat = self.find('input[name="listingFormat"]').val();
            //events
            searchresult_filter_events(self);

            searchresult_populate_calendar_tile_link_more_behavior(self);
            //End of events
            if (listingFormat === 'ONLY_MAP') {
                if (!validate_back_button_browser(self)) {
                    
                    var executed = validate_location_from_browser(self);
                    if (executed === false) {
                        retrieve_first_load_results(self);
                    }

                }
                
            }
            else if (listingFormat === 'GRID' || listingFormat === 'SLIDER') {
                if (!validate_back_button_browser(self)) {
                    var executed = validate_location_from_browser(self);
                    if (executed === false) {
                        retrieve_first_load_results(self);
                    }
                }
            }
            else if (listingFormat !== 'CALENDAR_WITHOUT_TILES' && force === false) {
                if (!validate_back_button_browser(self)) {
                    var searchShareableId = getParameterByName('shareId', false, false);
                    var idSearch = getParameterByName('idSearch', false, false);
                    if (searchShareableId || idSearch) {
                        if (searchShareableId) {
                            searchresult_load_search_shareable(self, processingContainer, searchShareableId, elementViewMore, false);
                        } else if (idSearch) {
                            searchresult_load_search_shareable(self, processingContainer, idSearch, elementViewMore, false);
                        }
                    } else {
                        //Por querystring
                        var keywordParameterURL = retrieveGetParameter('keyword');
                        var distanceParameterURL = retrieveGetParameter('distance');
                        var zipParameterURL = retrieveGetParameter('zip');
                        var startDateParameterURL = retrieveGetParameter('startDate');
                        var endDateParameterURL = retrieveGetParameter('endDate');
                        var invitationCodeURL = retrieveGetParameter('enter_code_invitation_code');
                        var locationTypeParameterURL = retrieveGetParameter('location_type');
                        var organizationParameterURL = retrieveGetParameter('searchvo_serve_with_this_org');
                        var eventParameterURL = retrieveGetParameter('searchvo_participate_in_event');


                        if (keywordParameterURL || distanceParameterURL || zipParameterURL || startDateParameterURL || endDateParameterURL || invitationCodeURL || locationTypeParameterURL || organizationParameterURL || eventParameterURL) {
                            processingWithDropdownValues = false;
                            var refineSearchButton = self.find('.advanced-search-section .refine-search a.button');
                            //Populate inputs with values received from URL
                            if (keywordParameterURL)
                                self.find('input[name="keyword"]').val(keywordParameterURL);
                            if (zipParameterURL)
                                self.find('input[name="location"]').val(zipParameterURL);
                            if (distanceParameterURL)
                                self.find('[name="distance"]').val(distanceParameterURL);
                            if (invitationCodeURL)
                                self.find('input[name="enter_code_invitation_code"]').val(invitationCodeURL);
                            if (locationTypeParameterURL)
                                self.find('select[name="location-type"]').val(locationTypeParameterURL);

                            if (startDateParameterURL || endDateParameterURL) {
                                if (self.find('.dates-section .open-close-button a.open-button').length > 0) {
                                    self.find('.dates-section .open-close-button a').trigger('click');
                                }

                                if (startDateParameterURL) {
                                    self.find('input[name="searchvo_date_from"]').val(startDateParameterURL);
                                }
                                if (endDateParameterURL) {
                                    self.find('input[name="searchvo_date_to"]').val(endDateParameterURL);
                                }
                            }

                            if (invitationCodeURL) {
                                if (self.find('.invitation-code-section .open-close-button a.open-button').length > 0) {
                                    self.find('.invitation-code-section .open-close-button a').trigger('click');
                                }
                            }
                            searchresult_populate_opportunities(refineSearchButton, true, false, true);
                            searchresult_process_for_additional_items(self);
                        }
                        else {
                            //Normal Way
                            var executed = validate_location_from_browser(self);
                            if (executed === false) {
                                retrieve_first_load_results(self);
                            }
                        }
                    }

                }

            }
            else if (self.hasClass('search-block-as-corporate')) {
                searchresult_process_for_additional_items(self);
            }
            else if (listingFormat === 'CALENDAR_WITHOUT_TILES') {
                var searchResultBlockId = self.attr('data-block-id');
                process_calendar_default(self, false, processingContainer);
                searchresult_get_dropdown_values(self, processingContainer, searchResultBlockId, true);
            }


        });
    }
}

function searchresult_process_for_additional_items(self) {
    var currentDate = moment().format(window.MomentDateFormat);
    var endDate = moment().add(12, 'month');
    endDate = endDate.format(window.MomentDateFormat);

    var options = load_options_for_data_picker(currentDate, endDate);
    self.find('input.date-picker-range-input').daterangepicker(
        options,
        function (start, end, label) {
            var startDate = start.format(window.MomentDateFormat);
            var endDate = end.format(window.MomentDateFormat);
            self.find('input[name="searchvo_date_from"]').val(startDate);
            self.find('input[name="searchvo_date_to"]').val(endDate);
        }
    );
    self.find('input[name="searchvo_date_from"]').val(currentDate);
    self.find('input[name="searchvo_date_to"]').val(endDate);

    setTimeout(function () {
        enable_multiselect_feature_on_fields(self, "false");
    }, 2000);

    review_filter_view_by(self);


}


function enable_multiselect_feature_on_fields(self, searchAfterChange) {

    if (searchAfterChange === "true") {

        self.find('select[multiple="multiple"]').each(function (index, el) {

            if ($(this).hasClass('jqmsLoaded')) {
                $(this).multiselect('reload');

            } else {
               // $(this).multiselect('unload');
                $(this).multiselect({
                    'selectAll': true,
                    'columns': 1,
                    'showCheckbox': true,
                    'texts': {
                        placeholder: window.translation.select_options,
                        search: window.translation.search,
                        selectedOptions: ' ' + window.translation.selected,
                        selectAll: window.translation.select_all
                    },
                    onOptionClick: function (element, option) {
                        $(element).siblings("div.ms-options-wrap").find('.ms-options').css('display', 'none');
                    }
                });
            }
        });
    } else {
        self.find('select[multiple="multiple"]').each(function (index, el) {

            if ($(this).hasClass('jqmsLoaded')) {
                $(this).multiselect('reload');
            } else {

                $(this).multiselect('unload');
                $(this).multiselect({
                    'selectAll': true,
                    'columns': 1,
                    'showCheckbox': true,
                    'maxPlaceholderOpts': 1,
                    'texts': {
                        placeholder: window.translation.select_options,
                        search: window.translation.search,
                        selectedOptions: ' ' + window.translation.selected,
                        selectAll: window.translation.select_all
                    }
                });
            }
        });
     }
}

function searchresult_populate_calendar_tile_link_more_behavior(self) {
    self.find('.opportunity-container.view-more.searchresult-by-date a.view-more-link').on('click', function () {
        var elementViewMore = $(this);
        var opportunitiesServiceContainer = elementViewMore.parents('.opportunities-listing').first().find('.opportunities-service').first();
        opportunitiesServiceContainer.find('.opportunity-container.hide-custom').css({
            opacity: 0,
            display: 'inline-block'
        }).animate({ opacity: 1 }, 600);
        elementViewMore.hide();
        elementViewMore.parents('.opportunity-container').first().hide();
        fix_image_thumbnail_result(self);
        return false;
    });

}

function first_search_after_back_button(blockId) {
    var isFirst = false;

    try {
        var searchIds = [];

        var firstSearch = sessionStorage.getItem('searchpage');

        if (firstSearch === null || firstSearch === undefined) {
            isFirst = true;
       
        } else {
            searchIds = JSON.parse(firstSearch);
            var position = searchIds.findIndex(x => x == blockId);
        
            if (position == -1)
                isFirst = true;
        }

        if (isFirst == true) {
            searchIds.push(blockId)
            sessionStorage.setItem('searchpage', JSON.stringify(searchIds))
        }

    } catch (e) {
        window.console && console.error(e);
    }

    return isFirst;

}

function AddInvitationCode(self, formData) {
    let corporateParent = self.parents('.section-opportunities-for-corporate-partner');
    let isFromCorporatePage = corporateParent !== undefined && corporateParent.length > 0;

    if (isFromCorporatePage === true) {
        formData["enter_code_invitation_code"] = self.parents('.section-opportunities-for-corporate-partner').find('input[name="invitationCode"]').val();
    }
}

function searchresult_populate_opportunities(self, isSearch, isViewMore, firstLoad) {
    var blockId = self.parents('.searchresultblock').attr('data-block-id');
    var processingContainer = null;
	var formObject = self.parents('form').first();
    var formData = formObject.serializeObject();
    var valueLocalStorage = localStorage.getItem('searchresultblock-' + blockId);

    var listingFormat = self.parents('.searchresultblock').find('input[name="listingFormat"]').val();
    var currentRows = self.parents('.searchresultblock').find('.opportunities-service').find('.opportunity-container').length;
    if (listingFormat === 'LISTING_WITHOUT_TILES') {
        currentRows = self.parents('.searchresultblock').find('#datatable-search-opportunities-block tbody tr[role="row"]').length;
    }
    var selfContainer = self.parents('.searchresultblock').first();
    
    self.parents('.searchresultblock').find('#block-result-filter-text').removeClass('hide');
    self.parents('.searchresultblock').find('#info-filter-text-result').removeClass("hide");
    if (isViewMore) {
		//Validate if exists localStorage
        if (valueLocalStorage) {
            formData = JSON.parse(valueLocalStorage);
        } else {
            AddInvitationCode(self, formData)
        }


        processingContainer = self.parents('.searchresultblock').find('.processing_screen');

        //Hide link
        self.addClass('is-hidden');
        if (listingFormat === 'LISTING_WITH_TILES') {
            searchresult_populate_next_opportunities_listing(selfContainer, processingContainer, formData, currentRows);
        }
        else if (listingFormat === 'LISTING_WITHOUT_TILES') {

            //default listing
            //refresh_results_for_default_listing();
            searchresult_populate_next_opportunities_listing_default(selfContainer, processingContainer, formData, currentRows);
        }
        else if (listingFormat === 'CALENDAR_WITH_TILES') {
            searchresult_populate_next_opportunities_by_date(selfContainer, processingContainer, formData, currentRows);
        }
        else if (listingFormat === 'LISTING_WITH_TILE_FLIP') {
            searchresult_populate_next_opportunities_listing_flip(selfContainer, processingContainer, formData, currentRows);
        }
        
	}
    else if (isSearch) {

        if (is_back_button_action() && first_search_after_back_button(blockId)) {
            if (valueLocalStorage) {
                formData = JSON.parse(valueLocalStorage);
            }
        }
        AddInvitationCode(self, formData)

        var elementViewMore = self.parents('.searchresultblock').first().find('.view-more').first();
        processingContainer = self.parents('.searchresultblock').first().find('.processing_screen');
        searchresultblock_populate_search(selfContainer, processingContainer, formData, currentRows, firstLoad);

        //update filters
        review_filter_view_by(self.parents('.searchresultblock'));
        //Update localStorage
		_assign_value_json_local_storage('searchresultblock-' + blockId, formData);
	}
}

function add_dropdown_item(mySelect, myOptions) {

    try {
        $.each(myOptions, function (it) {
            var label = myOptions[it];
            mySelect.append(
                $('<option></option>').attr("value", it).html(label)
            );
            
        });
    } catch (e) {
        window.console && console.error(e);
    }

}

function update_dropdowns_filters(self, facets, formData, firstLoad) {

    verify_dropdown_visibility(self, 'select[name="organization-serve"]', facets.organization_served, formData['organization-serve'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="issue-areas"]', facets.issues_areas, formData['issue-areas'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="population"]', facets.populations_served, formData['population'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="activity-type"]', facets.activity_type, formData['activity-type'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="participate-event"]', facets.participate_event, formData['participate-event'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="managed-by"]', facets.managed_by, formData['managed-by'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="population"]', facets.populations_served, formData['population'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="skills-use"]', facets.skills, formData['skills-use'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="schedule_type"]', facets.schedule_type, formData['schedule_type'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="age-group"]', facets.age_group, formData['age-group'], firstLoad);

    verify_dropdown_visibility(self, 'select[name="gender"]', facets.gender, formData['gender'], firstLoad);

    self.find('li.court-ordered-item-setting').hide();
    self.find('li.show-groups-item-setting').hide();
    self.find('li.show-seniors-rsvp-item-section').hide();
    self.find('#other-criteria').hide();
    if (facets.appropriate_for !== null && facets.appropriate_for !== undefined) {
        var found = false;
        if (facets.appropriate_for["Court Ordered"] !== null && facets.appropriate_for["Court Ordered"] !== undefined) {
            self.find('li.court-ordered-item-setting').show();
            found = true;
        }

        if (facets.appropriate_for["Groups"] !== null && facets.appropriate_for["Groups"] !== undefined) {
            self.find('li.show-groups-item-setting').show();
            found = true;
        }

        if (facets.appropriate_for["RSVP/Senior"] !== null && facets.appropriate_for["RSVP/Senior"] !== undefined) {
            self.find('li.show-seniors-rsvp-item-section').show();
            found = true;
        }

        if (found === true)
            self.find('#other-criteria').show();
    }

    if (firstLoad === true || is_back_button_action()) {
        var searchAfterChange = self.find('input[name="SearchWhenFilterChange"]').val();
        //Reload multiselects
        setTimeout(function () {

            var blockId = self.attr('data-block-id');
            var formDataUpdated = self.find('form').serializeObject();
            enable_multiselect_feature_on_fields(self, searchAfterChange);

            _assign_value_json_local_storage('searchresultblock-' + blockId, formDataUpdated);

        }, 2000);


    }
}

function verify_dropdown_visibility(self, selector, dataToPopulate, dataToSelect, firstLoad) {
    try {
        if (self.find(selector).length > 0) {
            self.find(selector).empty();
            add_dropdown_item(self.find(selector), dataToPopulate);
            //Here the selected org used for the search should be marked

            if (dataToSelect !== undefined) {
                if (dataToSelect.indexOf('_and_') > -1)
                    dataToSelect = dataToSelect.replaceAll("_and_", "&");
                /*
                 * This was commented due to HOC3-14813 because the comma  for the values is replaced with _comma_ to allow difference when in the submit the comma is related to separator of multivalue
                if (dataToSelect.indexOf('_comma_') > -1) 
                    dataToSelect = dataToSelect.replaceAll("_comma_", ",");
                */

                if (dataToSelect.indexOf('_plus_') > -1)
                    dataToSelect = dataToSelect.replaceAll("_plus_", "+");

                if (dataToSelect.indexOf('_apos_') > -1)
                    dataToSelect = dataToSelect.replaceAll("_apos_", "\"");

                self.find(selector).val(dataToSelect);
            }

            if (firstLoad === false) {
                self.find(selector).multiselect('reload');
            }

            
        }
    } catch (e) {
        window.console && console.error(e);
    }
}

function searchresultblock_populate_filter_tags(self, formData) {

    var filterContainer = self.find('.search-filter-tags');
    if (filterContainer !== null && filterContainer !== undefined) {
        filterContainer.empty();
        var listItems = [];
        var it = new Object;

        var listFields = searchresultblock_get_field_text();

        listFields.forEach(function (itF, index) {
            if (formData[itF] !== undefined && formData[itF] !== null && formData[itF] !== '') {
                it = new Object;
                it.field = itF;
                it.value = formData[itF];
                it.label = formData[itF];
                it.typefield = "text";
                it.from = 'advanced';
                if (itF === 'keyword' || itF === 'location')
                    it.from = 'filter';
                if (itF === 'keyword')
                    it.categoryname = window.translation.keyword;
                if (itF === 'location')
                    it.categoryname = window.translation.location;
                listItems.push(it);

            }
        });


        listFields = searchresultblock_get_field_select();

        listFields.forEach(function (itF, index) {
            if (itF === 'distance' && formData[itF] !== 'Any') {
                it = new Object;
                it.field = itF;
                it.value = formData[itF];
                it.label = formData[itF];
                it.from = 'filter';
                it.typefield = "select";
                it.categoryname = "Distance";
                self.find('select[name="' + itF + '"] option').each(function () {

                    var value = $(this).attr('value');
                    if (value == it.value) {
                        it.label = $(this).text();
                    }
                });

                listItems.push(it);

            }

        });


        //advanced filter with checkbox
        listFields = searchresultblock_get_field_checkboxes();
        listFields.forEach(function (itF, index) {
            if (Array.isArray(formData[itF]) === true) {
                formData[itF].forEach(function (valueItem, index) {
                    it = new Object;
                    it.field = itF;
                    it.value = valueItem;
                    it.label = valueItem;
                    it.from = 'advanced';

                    it.typefield = "checkbox";
                    it.categoryname = "";
                    var foundValue = false;
                    self.find('input[type="checkbox"][name="' + itF + '"]').each(function () {
                        var value = $(this).attr('value');
                        var labelfield = $(this).parents('.fieldset-step');
                        it.categoryname = labelfield.find('.fieldset-title legend').text();
                        if (value == it.value && it.categoryname !== null && it.categoryname !== undefined && it.categoryname !== '') {
                            var id = $(this).attr('id');
                            it.label = self.find('label[for="' + id + '"] span').text();
                            if (it.label === '') {
                                it.label = valueItem;
                            }
                            foundValue = true;
                        }
                    });
                    if (foundValue === true) {
                        listItems.push(it);
                    }

                });

            } else if (formData[itF] !== null && formData[itF] !== undefined && formData[itF] !== "") {
                it = new Object;
                it.field = itF;
                it.value = formData[itF];
                it.label = formData[itF];
                it.from = 'advanced';

                it.typefield = "checkbox";
                it.categoryname = "";
                var foundValue = false;
                self.find('input[type="checkbox"][name="' + itF + '"]').each(function () {
                    var value = $(this).attr('value');
                    var labelfield = $(this).parents('.fieldset-step');
                    it.categoryname = labelfield.find('.fieldset-title legend').text();
                    if (value == it.value && it.categoryname !== null && it.categoryname !== undefined && it.categoryname !== '') {
                        var id = $(this).attr('id');
                        it.label = self.find('label[for="' + id + '"] span').text();
                        if (it.label === '') {
                            it.label = formData[itF];
                        }
                        foundValue = true;
                    }
                });
                if (foundValue === true) {
                    listItems.push(it);
                }

            }
        });


        //advanced Filter with multiselect
        listFields = searchresultblock_get_field_multiselect();
        listFields.forEach(function (itF, index) {
            if (Array.isArray(formData[itF]) === true) {
                formData[itF].forEach(function (valueItem, index) {
                    it = new Object;
                    it.field = itF;
                    it.value = valueItem;
                    it.label = valueItem;
                    it.from = 'advanced';
                    it.categoryname = "";
                    it.typefield = "multiselect";
                    var foundValue = false;
                    self.find('select[name="' + itF + '"] option').each(function () {
                        var labelfield = $(this).parents('.multi-select-row');
                        it.categoryname = labelfield.find('label.field-title').text();
                        var value = $(this).attr('value');
                        if (value == it.value && it.categoryname !== null && it.categoryname !== undefined && it.categoryname !== '') {
                            it.label = $(this).text();
                            foundValue = true;
                        }
                    });
                    if (foundValue === true) {
                        listItems.push(it);
                    }

                });

            } else if (formData[itF] !== null && formData[itF] !== undefined && formData[itF] !== "") {
                it = new Object;
                it.field = itF;
                it.value = formData[itF];
                it.label = formData[itF];
                it.typefield = "multiselect";
                it.from = 'advanced';
                it.categoryname = '';
                var foundValue = false;
                self.find('select[name="' + itF +'"] option').each(function () {
                    var labelfield = $(this).parents('.multi-select-row');
                    it.categoryname = labelfield.find('label.field-title').text();
                    var value = $(this).attr('value');
                    if (value == it.value && it.categoryname !== null && it.categoryname !== undefined && it.categoryname !== '') {
                        it.label = $(this).text();
                        foundValue = true;
                    }
                });
                if (foundValue === true) {
                    listItems.push(it);
                }


            }
        });


        listItems.forEach(function (it, index) {
            var item = searchresultblock_create_tag(it);
            filterContainer.append(item);
        });

        searchresultblock_remove_tag(self);
    }
}

function searchresultblock_remove_tag(self) {
    self.find('.search-filter-tags .filter-item-tag').on('click', function () {
        var field = $(this).attr('data-field-name');
        var value = $(this).attr('data-field-value');
        var label = $(this).attr('data-label-value');
        var typefield = $(this).attr('data-field-type');
        var from = $(this).attr('data-from');
        var changed = false;
        var filter = false;
        var advanced = false;
        if (from === 'filter') {
            filter = true;
        } else {
            advanced = true;
        }

        if (typefield === 'text') {
            changed = true;
            self.find('input[name="' + field + '"]').val('');
        } else if (typefield === 'select' && field === 'distance') {
            changed = true;
            self.find('select[name="' + field + '"]').val('Any');
        } else if (typefield === 'multiselect') {
            changed = true;
            update_multiselect_value(self, field, value, true);
            
        } else if (typefield === 'checkbox') {
            changed = true;
            self.find('input[type="checkbox"][name="' + field + '"][value="' + value + '"]').prop('checked', false);
        }


        if (changed === true) {
            $(this).remove();
            refresh_search_result(self, filter, advanced);

        }
    });

}


function update_multiselect_value(self, field, value, fromRemove) {
    var newValuesSelected = [];
    var newValuesSelectedString = null;
    var currentValue = self.find('select[name="' + field + '"]').val();
    var inText = false;
    if (currentValue !== null && currentValue !== undefined && currentValue !== '') {
        var valuesSelected = currentValue;

        if (!Array.isArray(currentValue)) {
            valuesSelected = currentValue.toString().split(',');
            inText = true;
        }
        valuesSelected.forEach(function (v, i) {
            if (v != value) {
                newValuesSelected.push(v);
            }
        });

        if (fromRemove === false)
            newValuesSelected.push(value);


        if (inText === true) {
            newValuesSelectedString = newValuesSelected.toString();
            self.find('select[name="' + field + '"]').val(newValuesSelectedString);
        } else {
            self.find('select[name="' + field + '"]').val(newValuesSelected);
        }
        self.find('select[name="' + field + '"]').multiselect('reload');

    }
    else if (fromRemove == false) {

        newValuesSelected.push(value);
        newValuesSelectedString = newValuesSelected.toString();
        self.find('select[name="' + field + '"]').val(newValuesSelectedString);
        self.find('select[name="' + field + '"]').multiselect('reload');

    }

}

function searchresultblock_get_field_text() {
    var listItems = ['keyword', 'location', 'age_volunteer_specific'];
    return listItems;

}

function searchresultblock_get_field_select() {
    var listItems = ['distance'];
    return listItems;

}


function searchresultblock_get_field_checkboxes() {
    var listItems = ['your_availability', 'view_by', 'other_criteria'];
    return listItems;

}

function searchresultblock_get_field_multiselect() {
    var listItems = ['activity-type', 'skills-use', 'population', 'organization-serve',
        'issue-areas', 'participate-event', 'managed-by', 'age-group', 'gender', 'my_causes', 'duration'];
    return listItems;
}

function searchresultblock_create_tag(it) {
    var text_to_display = "";
    var labelToDisplay = it.label;
    if (it.field === 'your_availability') {
        var itemsLabel = it.label.split('-');
        var mylabel = window.translation[itemsLabel[0]] + '-' + window.translation[itemsLabel[1]];
        labelToDisplay = mylabel;
    }
    if (it.categoryname !== null && it.categoryname !== undefined && it.categoryname !== '')
        text_to_display = it.categoryname + ": " + labelToDisplay;
    else
        text_to_display = labelToDisplay;
    

    var row = '<div class="filter-item-tag" tabindex="0" data-from="' + it.from + '" data-field-type="' + it.typefield + '" data-label-value="' + it.label + '" data-field-name="' + it.field + '" data-field-value="' + it.value + '">' + text_to_display + '</div>';
    return row;
}


function searchresultblock_populate_search(self, processingContainer, formData, currentRows, firstLoad) {
    //This logic is to try to clean the querystring
    try {
        var queryvalues = window.location.href;
        if (queryvalues.indexOf('searchvo_') > -1) {
            var pathName = window.location.pathname;
            window.history.pushState(null, null, pathName);
        }

    } catch (e) {
        window.console && console.error(e);
    }

    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var listingFormat = self.find('input[name="listingFormat"]').val();
    var displayFiltersAsTag = self.find('input[name="ShowFilterAsTag"]').val();
    var searchAfterChange = self.find('input[name="SearchWhenFilterChange"]').val();
    var elementViewMore = self.find('.view-more.searchresult-listing').first();
    var showImage = self.find('input[name="showImage"]').val();
    var showOrganizationName = self.find('input[name="showOrganizationName"]').val();
    var searchResultBlockId = self.find('input[name="searchResultId"]').val();
    var parentBlockId = self.find('input[name="parentBlockId"]').val();
    if (listingFormat === 'LISTING_WITH_TILES') {
        $.ajax({
            method: "POST",
            url: urlSite + "search/GetOpportunitiesSearchResultBlockListing",
            data: { parameters: formData, currentRows: currentRows, isSearch: true, blockId: searchResultBlockId, parentBlockId: parentBlockId},
            beforeSend: function () {
                //Display processing
                processingContainer.removeClass('hide-custom');
                processingContainer.show();
                self.find('.refine-search').find('a.button').hide();
                self.find('.basic-search').find('a.button').hide();
                self.find('.processing-search').removeClass('hide-custom');
            }
        }).done(function (data) {
            var jsonData = JSON.parse(data);

            if (jsonData) {
                //Update title of total results
                self.find('.title-results').find('.total-occurrences').text(jsonData['total']);

                if (jsonData['opportunities']) {
                    var opportunityContainer = self.find('.opportunities-service');

                    opportunityContainer.empty();

                    searchresult_populate_opportunity_container_listing(opportunityContainer, jsonData['opportunities'], showImage, showOrganizationName);
                }

                //Hide link if not exits more opportunities
                if (jsonData['total'] <= jsonData['opportunities'].length) {
                    elementViewMore.hide();
                }
                else {
                    var numberMore = jsonData['total'] - jsonData['opportunities'].length;
                    elementViewMore.show();

                    //Update span of more opportunities
                    elementViewMore.find('span.number-more').text(numberMore);
                }

                var queryToSend = jsonData['queryToSend'];
                var pathPage = window.location.pathname;
                var queryStringFormCalendar = queryToSend;
                if (queryStringFormCalendar !== null && queryStringFormCalendar !== undefined && queryStringFormCalendar !== '') {
                    if (pathPage.indexOf('?') > -1) {
                        pathPage = pathPage + "&" + queryStringFormCalendar;
                    } else {
                        pathPage = pathPage + "?" + queryStringFormCalendar;
                    }
                }


                var title = "Search - Listing with Tile";
                //Tracking in google tags
                gtag('event', 'page_view', {
                    page_title: title,
                    page_path: pathPage
                });


                var facets = JSON.parse(jsonData["facets"]);

                update_dropdowns_filters(self, facets, formData, false);

                if (firstLoad === false && displayFiltersAsTag === "true") {
                    searchresultblock_populate_filter_tags(self, formData);
                }

                if (searchAfterChange === "true") {
                    searchresult_update_result_after_change(self);
                }

                review_filter_view_by(self);

            }

            self.find('.refine-search').find('a.button').show();
            self.find('.basic-search').find('a.button').show();
            self.find('.processing-search').addClass('hide-custom');

            processingContainer.addClass('hide-custom');
            processingContainer.hide();
        });
    }
    else if (listingFormat === 'CALENDAR_WITH_TILES') {
        $.ajax({
            method: "POST",
            url: urlSite + "search/GetOpportunitiesSearchResultBlockGrid",
            data: { parameters: formData, currentRows: currentRows, isSearch: true, blockId: searchResultBlockId, parentBlockId: parentBlockId, showOrganizationName},
            beforeSend: function () {
                //Display processing
                processingContainer.removeClass('hide-custom');
                self.find('.refine-search').find('a.button').hide();
                self.find('.basic-search').find('a.button').hide();
                self.find('.processing-search').removeClass('hide-custom');
            }
        }).done(function (data) {
            var jsonData = JSON.parse(data);

            var facets = JSON.parse(jsonData["facets"]);

            update_dropdowns_filters(self, facets, formData, false);
            if (firstLoad === false && displayFiltersAsTag === "true") {
                searchresultblock_populate_filter_tags(self, formData);
            }

            if (searchAfterChange === true) {
                searchresult_update_result_after_change(self);
            }

            if (jsonData) {
                elementViewMore = self.find('.view-more-total').first();

                if (jsonData['opportunities']) {
                    var opportunityContainer = self.find('.opportunities-result').first();

                    //Remove all data
                    opportunityContainer.find('.opportunity-date-container').remove();

                    searchresult_populate_opportunity_container_by_date(opportunityContainer, jsonData['opportunities'], showImage, self,showOrganizationName);
                    searchresult_populate_calendar_tile_link_more_behavior(self);
                }

                //Hide link if not exits more opportunities
                var opportunitiesDisplayed = self.find('.opportunity-container ').length;

                if (jsonData['total'] <= opportunitiesDisplayed) {
                    elementViewMore.hide();
                }
                else {
                    var numberMore = jsonData['total'] - opportunitiesDisplayed;
                    elementViewMore.show();

                    //Update span of more opportunities
                    elementViewMore.find('span.number-more').text(numberMore);
                }

                var queryToSend = jsonData['queryToSend'];
                var pathPage = window.location.pathname;
                var queryStringFormCalendar = queryToSend;
                if (queryStringFormCalendar !== null && queryStringFormCalendar !== undefined && queryStringFormCalendar !== '') {
                    if (pathPage.indexOf('?') > -1) {
                        pathPage = pathPage + "&" + queryStringFormCalendar;
                    } else {
                        pathPage = pathPage + "?" + queryStringFormCalendar;
                    }
                }


                var title = "Search - Calendar with Tile";
                //Tracking in google tags
                gtag('event', 'page_view', {
                    page_title: title,
                    page_path: pathPage
                });



            }

            self.find('.refine-search').find('a.button').show();
            self.find('.basic-search').find('a.button').show();
            self.find('.processing-search').addClass('hide-custom');
            processingContainer.addClass('hide-custom');
        });
    }
    else if (listingFormat === 'LISTING_WITHOUT_TILES') {
        $.ajax({
            method: "POST",
            url: urlSite + "search/GetOpportunitiesSearchResultBlockListing",
            data: { parameters: formData, currentRows: currentRows, isSearch: true, blockId: searchResultBlockId },
            beforeSend: function () {
                //Display processing
                processingContainer.removeClass('hide-custom');
                processingContainer.show();
                self.find('.refine-search').find('a.button').hide();
                self.find('.basic-search').find('a.button').hide();
                self.find('.processing-search').removeClass('hide-custom');
            }
        }).done(function (data) {
            var jsonData = JSON.parse(data);
            if (jsonData) {
                //Update title of total results
                self.find('.title-results').find('.total-occurrences').text(jsonData['total']);

                if (jsonData['opportunities']) {
                    var opportunityContainer = self.find('#datatable-search-opportunities-block tbody');

                    opportunityContainer.empty();

                    refresh_results_for_default_listing(opportunityContainer, jsonData['opportunities'], self);
                }

                //Hide link if not exits more opportunities
                if (jsonData['total'] <= jsonData['opportunities'].length) {
                    elementViewMore.hide();
                }
                else {
                    var numberMore = jsonData['total'] - jsonData['opportunities'].length;
                    elementViewMore.show();
                    elementViewMore.find('.view-more-link').removeClass('is-hidden');                    
                    //Update span of more opportunities
                    elementViewMore.find('span.number-more').text(numberMore);
                }
                var facets = JSON.parse(jsonData["facets"]);

                update_dropdowns_filters(self, facets, formData, false);

                if (firstLoad === false && displayFiltersAsTag === "true") {
                    searchresultblock_populate_filter_tags(self, formData);
                }

                if (searchAfterChange === "true") {
                    searchresult_update_result_after_change(self);
                }

                review_filter_view_by(self);

                var queryToSend = jsonData['queryToSend'];
                var pathPage = window.location.pathname;
                var queryStringFormCalendar = queryToSend;
                if (queryStringFormCalendar !== null && queryStringFormCalendar !== undefined && queryStringFormCalendar !== '') {
                    if (pathPage.indexOf('?') > -1) {
                        pathPage = pathPage + "&" + queryStringFormCalendar;
                    } else {
                        pathPage = pathPage + "?" + queryStringFormCalendar;
                    }
                }

                var title = "Search - Listing without Tile";
                //Tracking in google tags
                gtag('event', 'page_view', {
                    page_title: title,
                    page_path: pathPage
                });


            }

            self.find('.refine-search').find('a.button').show();
            self.find('.basic-search').find('a.button').show();
            self.find('.processing-search').addClass('hide-custom');

            processingContainer.addClass('hide-custom');
            processingContainer.hide();
        });
    
    }
    else if (listingFormat === 'LISTING_WITH_TILE_FLIP') {
                $.ajax({
            method: "POST",
            url: urlSite + "search/GetOpportunitiesSearchResultBlockListing",
            data: { parameters: formData, currentRows: currentRows, isSearch: true, blockId: searchResultBlockId },
            beforeSend: function () {
                //Display processing
                processingContainer.removeClass('hide-custom');
                processingContainer.show();
                self.find('.refine-search').find('a.button').hide();
                self.find('.basic-search').find('a.button').hide();
                self.find('.processing-search').removeClass('hide-custom');
            }
        }).done(function (data) {
            var jsonData = JSON.parse(data);

            if (jsonData) {
                //Update title of total results
                self.find('.title-results').find('.total-occurrences').text(jsonData['total']);

                if (jsonData['opportunities']) {
                    var opportunityContainer = self.find('.opportunities-service');

                    opportunityContainer.empty();

                    searchresult_populate_opportunity_container_listing_flip(opportunityContainer, jsonData['opportunities'], showImage,showOrganizationName);
                }

                //Hide link if not exits more opportunities
                if (jsonData['total'] <= jsonData['opportunities'].length) {
                    elementViewMore.hide();
                }
                else {
                    var numberMore = jsonData['total'] - jsonData['opportunities'].length;
                    elementViewMore.show();

                    //Update span of more opportunities
                    elementViewMore.find('span.number-more').text(numberMore);
                }

                var queryToSend = jsonData['queryToSend'];
                var pathPage = window.location.pathname;
                var queryStringFormCalendar = queryToSend;
                if (queryStringFormCalendar !== null && queryStringFormCalendar !== undefined && queryStringFormCalendar !== '') {
                    if (pathPage.indexOf('?') > -1) {
                        pathPage = pathPage + "&" + queryStringFormCalendar;
                    } else {
                        pathPage = pathPage + "?" + queryStringFormCalendar;
                    }
                }


                var title = "Search - Listing with Tile - Flip";
                //Tracking in google tags
                gtag('event', 'page_view', {
                    page_title: title,
                    page_path: pathPage
                });


                var facets = JSON.parse(jsonData["facets"]);

                update_dropdowns_filters(self, facets, formData, false);

                if (firstLoad === false && displayFiltersAsTag === "true") {
                    searchresultblock_populate_filter_tags(self, formData);
                }

                if (searchAfterChange === "true") {
                    searchresult_update_result_after_change(self);
                }

                review_filter_view_by(self);

            }

            self.find('.refine-search').find('a.button').show();
            self.find('.basic-search').find('a.button').show();
            self.find('.processing-search').addClass('hide-custom');

            processingContainer.addClass('hide-custom');
            processingContainer.hide();
        });
    }
}

function needs_include_refresh(element) {
    if (element != undefined && element.length > 0) {
        if (!element.hasClass('with-change-event')) {
            element.addClass('with-change-event');
            return true;
        }
    }
    return false;
}

function searchresult_update_result_after_change(self) {
    if (needs_include_refresh(self.find('select[name="schedule_type"]')))
        if (self.find('select[name="schedule_type"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="activity-type"]')))
        if (self.find('select[name="activity-type"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="skills-use"]')))
        if (self.find('select[name="skills-use"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="population"]')))
        if (self.find('select[name="population"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="organization-serve"]')))
        if (self.find('select[name="organization-serve"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="issue-areas"]')))
        if (self.find('select[name="issue-areas"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="participate-event"]')))
        if (self.find('select[name="participate-event"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));


    if (needs_include_refresh(self.find('input[name="view_by"]')))
        if (self.find('input[name="view_by"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('input[name="your_availability"]')))
        if (self.find('input[name="your_availability"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));


    if (needs_include_refresh(self.find('select[name="duration"]')))
        if (self.find('select[name="duration"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="managed-by"]')))
        if (self.find('select[name="managed-by"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="age-group"]')))
        if (self.find('select[name="age-group"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="gender"]')))
        if (self.find('select[name="gender"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('select[name="my_causes"]')))
        if (self.find('select[name="my_causes"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));

    if (needs_include_refresh(self.find('input[name="other_criteria"]')))
        if (self.find('input[name="other_criteria"]').on('change', function () {
            refresh_search_result(self, true, true);
        }));


    if (needs_include_refresh(self.find('select[name="distance"]')))
        if (self.find('select[name="distance"]').on('change', function () {
            refresh_search_result(self, true, false);
        }));
}

function refresh_search_result(self, filter, advanced) {
    if (filter === true)
        self.find('.basic-search a.button').trigger('click');
    else if (advanced === true)
        self.find('.refine-search a.button').trigger('click');
}


function searchresult_populate_next_opportunities_listing_flip(self, processingContainer, formData, currentRows) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var elementViewMore = self.find('.view-more.searchresult-listing');
    var showImage = self.find('input[name="showImage"]').val();
    var searchResultBlockId = self.find('input[name="searchResultId"]').val();
    var showOrganizationName = self.find('input[name="showOrganizationName"]').val();
    $.ajax({
        method: "POST",
        url: urlSite + "search/GetOpportunitiesSearchResultBlockListing",
        data: { parameters: formData, currentRows: currentRows, isViewMore: true, blockId: searchResultBlockId },
        beforeSend: function () {
            //Display processing
            processingContainer.removeClass('hide-custom');
            processingContainer.show();
        }

    }).done(function (data) {
        var jsonData = JSON.parse(data);
        if (jsonData) {
            if (jsonData['opportunities']) {
                var opportunityContainer = self.find('.opportunities-result').first().find('.opportunities-service');
                searchresult_populate_opportunity_container_listing_flip(opportunityContainer, jsonData['opportunities'], showImage,showOrganizationName);
            }
            if (jsonData['total'] <= (currentRows + 50)) {
                elementViewMore.hide();
            }
            else {
                var numberMore = jsonData['total'] - (currentRows + 50);
                elementViewMore.show();

                //Update span of more opportunities
                elementViewMore.find('span.number-more').text(numberMore);
                elementViewMore.find('.view-more-link').removeClass('is-hidden');
            }

            var queryToSend = jsonData['queryToSend'];
            var pathPage = window.location.pathname;
            var queryStringFormCalendar = queryToSend;
            if (queryStringFormCalendar !== null && queryStringFormCalendar !== undefined && queryStringFormCalendar !== '') {
                if (pathPage.indexOf('?') > -1) {
                    pathPage = pathPage + "&" + queryStringFormCalendar;
                } else {
                    pathPage = pathPage + "?" + queryStringFormCalendar;
                }
            }

            var title = "Search - Listing with Tile - Flip";
            //Tracking in google tags
            gtag('event', 'page_view', {
                page_title: title,
                page_path: pathPage
            });

        }
        processingContainer.addClass('hide-custom');
        processingContainer.hide();
    });
}

function searchresult_populate_next_opportunities_listing(self, processingContainer, formData, currentRows) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var elementViewMore = self.find('.view-more.searchresult-listing');
    var showImage = self.find('input[name="showImage"]').val();
    var showOrganizationName = self.find('input[name="showOrganizationName"]').val();
    var searchResultBlockId = self.find('input[name="searchResultId"]').val();
	$.ajax({
        method: "POST",
        url: urlSite + "search/GetOpportunitiesSearchResultBlockListing",
        data: { parameters: formData, currentRows: currentRows, isViewMore: true, blockId: searchResultBlockId },
        beforeSend: function () {
            //Display processing
    		processingContainer.removeClass('hide-custom');
            processingContainer.show();
        }
    }).done(function (data) {
    	var jsonData = JSON.parse(data);

    	if(jsonData) {
    		if(jsonData['opportunities']) {
    			var opportunityContainer = self.find('.opportunities-result').first().find('.opportunities-service');

                searchresult_populate_opportunity_container_listing(opportunityContainer, jsonData['opportunities'], showImage,showOrganizationName);
    		}

            //Hide link if not exits more opportunities
            if(jsonData['total'] <= (currentRows + 50)) {
                elementViewMore.hide();
            }
            else {
                var numberMore = jsonData['total'] - (currentRows + 50);
                elementViewMore.show();

                //Update span of more opportunities
                elementViewMore.find('span.number-more').text(numberMore);
                elementViewMore.find('.view-more-link').removeClass('is-hidden');
            }

            var queryToSend = jsonData['queryToSend'];
            var pathPage = window.location.pathname;
            var queryStringFormCalendar = queryToSend;
            if (queryStringFormCalendar !== null && queryStringFormCalendar !== undefined && queryStringFormCalendar !== '') {
                if (pathPage.indexOf('?') > -1) {
                    pathPage = pathPage + "&" + queryStringFormCalendar;
                } else {
                    pathPage = pathPage + "?" + queryStringFormCalendar;
                }
            }

            var title = "Search - Listing with Tile";
            //Tracking in google tags
            gtag('event', 'page_view', {
                page_title: title,
                page_path: pathPage
            });

    	}



    	//Hide processing
    	processingContainer.addClass('hide-custom');
        processingContainer.hide();
    });
}

function searchresult_populate_next_opportunities_by_date(self, processingContainer, formData, currentRows) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
	var elementViewMore = self.find('.view-more-total.searchresult-by-date');
    var showImage = self.find('input[name="showImage"]').val(); 
    var showOrganizationName = self.find('input[name="showOrganizationName"]').val(); 
    var searchResultBlockId = self.find('input[name="searchResultId"]').val();
    var parentBlockId = self.find('input[name="parentBlockId"]').val();
    $.ajax({
        method: "POST",
        url: urlSite + "search/GetOpportunitiesSearchResultBlockGrid",
        data: { parameters: formData, currentRows: currentRows, isViewMore: true, blockId: searchResultBlockId, parentBlockId: parentBlockId },
        beforeSend: function () {
            //Display processing
    		processingContainer.removeClass('hide-custom');
            processingContainer.show();
        }
    }).done(function (data) {
    	var jsonData = JSON.parse(data);

    	if(jsonData) {
    		if(jsonData['opportunities']) {
    			var opportunityContainer = self.find('.opportunities-result').first();

                searchresult_populate_opportunity_container_by_date(opportunityContainer, jsonData['opportunities'], showImage, self,showOrganizationName);
    		}

            //Hide link if not exits more opportunities
            if(jsonData['total'] <= (currentRows + 50)) {
                elementViewMore.hide();
            }
            else {
                var occurrenceMore = jsonData['total'] - (currentRows + 50);
                //Update text of view more link
                elementViewMore.find('span.number-more').text(occurrenceMore);
                elementViewMore.show();
                elementViewMore.find('a.view-more-link').removeClass('is-hidden');
            }

            searchresult_populate_calendar_tile_link_more_behavior(self);

            var queryToSend = jsonData['queryToSend'];
            var pathPage = window.location.pathname;
            var queryStringFormCalendar = queryToSend;
            if (queryStringFormCalendar !== null && queryStringFormCalendar !== undefined && queryStringFormCalendar !== '') {
                if (pathPage.indexOf('?') > -1) {
                    pathPage = pathPage + "&" + queryStringFormCalendar;
                } else {
                    pathPage = pathPage + "?" + queryStringFormCalendar;
                }
            }


            var title = "Search - Calendar with Tile";
            //Tracking in google tags
            gtag('event', 'page_view', {
                page_title: title,
                page_path: pathPage
            });

    	}

    	//Hide processing
    	processingContainer.addClass('hide-custom');
        processingContainer.hide();
    });
}

function handleCommandEventVolOpp(event) {
    if (event instanceof KeyboardEvent && event.key !== 'Enter' && event.key !== ' ') {
        return;
    }

    var item = $(event.srcElement);
    var dataTarget = item.attr('data-target');
    var dataUrl = item.attr('data-url');
    window.open(dataUrl, dataTarget);
}

function fix_minisite_path(minisitePath, endWithSlash) {
    if (endWithSlash === undefined)
        endWithSlash = true;

    if (minisitePath !== undefined && minisitePath !== null && minisitePath.length > 0 ) {
        if (minisitePath.endsWith('/')) {
            if (endWithSlash === false)
                minisitePath = minisitePath.substring(0, minisitePath.length - 1);
        } else if (endWithSlash === true) {
            minisitePath = minisitePath + "/";
        }
    }

    return minisitePath;
}

function searchresult_populate_opportunity_container_listing(opportunityContainer, opportunities, showImage,showOrganizationName) {
    var searchresultblock = opportunityContainer.parents('.searchresultblock').first();
    var openIn = searchresultblock.find('input[name="OpenOppIn"]').val();
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var countRegular = 0;
    var countTraining = 0;
    var countFilled = 0;
    var countEvents = 0;
    var countOpp55 = 0;



    opportunities.forEach(function (opportunity) {
        var sid = opportunity['SID'];

        if (opportunityContainer.find('.opportunity-container[data-occurrence-id="' + sid + '"]').length === 0) {
            
            var dateOccurrence = opportunity['DateOccurrence'];
            var timeZone = opportunity['TimeZone'];
            var timeZoneAbbreviation = opportunity['TimeZoneAbbreviation'];
            var durationOccurrence = opportunity['Duration'];
            var locationOccurrence = opportunity['Location'];
            var description = opportunity['Description'];
            var imageUrl = opportunity['ImageURL'];
            var isOpportunity55 = opportunity['IsOpportunity55'];
            var occurrenceMore = opportunity['OccurrencesMore'];
            var spotsAvailable = opportunity['SpotsAvailable'];
            var title = opportunity['Title'];
            var type = opportunity['Type'];
            var typeIndicator = opportunity['TypeIndicator'];

            var OrganizationName =(showOrganizationName === 'True' && opportunity['OrganizationName'] != null)? '<span class="organization-name"><a href="'+opportunity['OrganizationUrl']+'">'+opportunity['OrganizationName']+'</a></span>':'';

            var classIsOpportunity55 = (isOpportunity55) ? 'is-major-55' : '';
            if (isOpportunity55) {
                countOpp55++;
            }
            var classShowImage = (showImage !== 'True') ? 'image-hidden' : '';
            var urlImage = (imageUrl) ? "'"+imageUrl+"'" : "/img/placeholder_thumbnail.png";

            var miniSitePath = (opportunity['MiniSitePath'] != null && opportunity['MiniSitePath'] !== undefined && opportunity['MiniSitePath'] != '') ? fix_minisite_path(opportunity['MiniSitePath']) : "";
 
            var occurrenceUrl =  urlSite + 'opportunity/' + sid;

            if(opportunity['IsExternalOpportunity'] == true) 
                occurrenceUrl = opportunity['OccurrenceUrl'];
            else if(miniSitePath.length > 0)
                occurrenceUrl = miniSitePath + "opportunity/" + sid;



            var cmtoken = (searchresultblock.find('input[name="cmtoken"]').length > 0) ? searchresultblock.find('input[name="cmtoken"]').val() : '';
            var hocInstanceId = (searchresultblock.find('input[name="hocInstanceId"]').length > 0) ? searchresultblock.find('input[name="hocInstanceId"]').val() : '';
            var contactId = (searchresultblock.find('input[name="contactId"]').length > 0) ? searchresultblock.find('input[name="contactId"]').val() : '';
            var siteId = (searchresultblock.find('input[name="siteId"]').length > 0) ? searchresultblock.find('input[name="siteId"]').val() : '';
            var multiTimeZone = (searchresultblock.find('input[name="MultiTimeZone"]').length > 0) ? searchresultblock.find('input[name="MultiTimeZone"]').val().toLowerCase() == "true" : false;
            var displayTimeZoneMode = (searchresultblock.find('input[name="DisplayTimeZoneMode"]').length > 0) ? searchresultblock.find('input[name="DisplayTimeZoneMode"]').val() : '';
            var siteTimeZone = (searchresultblock.find('input[name="SiteTimeZone"]').length > 0) ? searchresultblock.find('input[name="SiteTimeZone"]').val() : '';
            var returnUrl = (searchresultblock.find('input[name="returnUrl"]').length > 0) ? searchresultblock.find('input[name="returnUrl"]').val() : '';
            var titleTypeIndicator = window.translation.regular_opportunities;
            var waitlistEnabled = opportunity['waitlistEnabled'];
            var opportunityDetailURL = urlSite + "opportunity/"+ sid;
            var moreTimeAvailable = (parseInt(occurrenceMore) == 1) ? window.translation.more_time_available : window.translation.more_times_available;
            var occurrenceMoreText = occurrenceMore + ' ' + moreTimeAvailable;
            var additionalClass = "";
            
            
            if (($("div.searchresultblock input[name='showpopupexternalopportunities']").length > 0) && (opportunity['IsExternalOpportunity'] == true))
            {
                additionalClass = " external-opportunity-information";
            }

            if(typeIndicator) {
                if (typeIndicator === 'Filled')
                {
                    titleTypeIndicator = window.translation.filled_opportunities;
                    countFilled++;
                }
                else if (typeIndicator === 'Training')
                {
                    titleTypeIndicator = window.translation.training;
                    countTraining++;
                }
                else if (typeIndicator === 'SpecialEvents')
                {
                    titleTypeIndicator = window.translation.special_events;
                    countEvents++;
                }

                if (titleTypeIndicator == window.translation.regular_opportunities) {
                    countRegular++;
                }
            }

            if(cmtoken) {
                if(occurrenceUrl.indexOf('?') !== -1) {
                    occurrenceUrl += '&hoctoken=' + cmtoken;
                }
                else {
                    occurrenceUrl += '?hoctoken=' + cmtoken;
                }

                if(hocInstanceId) {
                    occurrenceUrl += '&hocInstanceId=' + hocInstanceId;
                }

                if(contactId) {
                    occurrenceUrl += '&contactId=' + contactId;
                }

                if(siteId) {
                    occurrenceUrl += '&siteId=' + siteId;
                }

                if(returnUrl) {
                    occurrenceUrl += '&returnUrl=' + returnUrl;
                }
            }

            if (parseInt(spotsAvailable) == 0 && waitlistEnabled) {
                occurrenceMoreText = window.translation.waitlist_available;
            }

            var opportunityHTML = '<div role="group" aria-label="' + window.translation.wcag_search_volunteer_opportunity_group.replaceAll('{0}', titleTypeIndicator) + '" class="opportunity-container ' + typeIndicator + ' ' + classIsOpportunity55 + '" data-occurrence-id="' + sid + '">';

            if(typeIndicator === 'Filled') {
                opportunityHTML += '<div class="filled-background"></div>';
            }

            var target = "_self";
            if (openIn === "NEW_TAB")
                target = "_blank";


            if(showImage === 'True') {
                opportunityHTML +=  '<div class="image-background" style="background:url(' + urlImage + ') center center;">'
                                    +   '<div class="description-container '+ typeIndicator +'">'
                                    + '<p><span>' + description + '</span>'
                                    + '<a aria-label="'+description+'. '+window.translation.learn_more +'" target="' + target + '" href="' + occurrenceUrl + '" class="' + additionalClass + '">' + window.translation.learn_more + '</a>'
                                    +       '</p>'
                                    +   '</div>'
                                    + '</div>';
            }

            opportunityHTML += '<span data-tooltip aria-haspopup="true" data-disable-hover="false" aria-label="' + titleTypeIndicator+'" title="'+ titleTypeIndicator +'" class="has-tip type_indicator '+ typeIndicator +'">'
                                +   '<span class="circle"></span>'
                                + '</span>';

            if (isOpportunity55 === true) {
                opportunityHTML += '<span data-tooltip aria-haspopup="true" data-disable-hover="false" tabindex="1" title="' + window.translation.opportunities_people_major_55 + '" class="has-tip type_indicator is-major-55">55+</span>';
            }

            opportunityHTML += '<div class="text-container '+ classShowImage +'">'
                                + '<span class="title">'
                                + '<a target="' + target + '" href="' + occurrenceUrl + '" class="' + additionalClass + '">' + title + '</a></span>'+ OrganizationName

                +'<div role="button" tabindex="0" data-url="' + occurrenceUrl +'" data-target="'+target+'" onkeyDown="handleCommandEventVolOpp(event)">'
                + '<span aria-label="' + window.translation.location + ': ' + locationOccurrence +'" class="location">' + locationOccurrence + '</span>';
                                

            if (type === 'DateAndTimeSpecific') {
                if (spotsAvailable == '1') {
                    opportunityHTML += '<span aria-label="' + window.translation.spots_available + ':' + window.translation.spot_available_on.replaceAll('{0}', spotsAvailable)+'" class="spots_available">' + window.translation.spot_available_on.replaceAll('{0}', spotsAvailable) + '</span>';
                }
                else {
                    opportunityHTML += '<span aria-label="' + window.translation.spots_available + ':' + window.translation.spots_available_on.replaceAll('{0}', spotsAvailable) +'" class="spots_available">' + window.translation.spots_available_on.replaceAll('{0}', spotsAvailable) + '</span>';
                }

                if (displayTimeZoneMode == 'BOTH' || displayTimeZoneMode == 'VIRTUAL_ONLY' && opportunity['LocationType'] == "Virtual") {
                    if (!multiTimeZone && opportunity['LocationType'] != "Virtual") {
                        dateOccurrence += ' ' + (siteTimeZone).replaceAll('_', ' ').toUpperCase();
                    }
                    else {
                        dateOccurrence += (timeZoneAbbreviation).replaceAll('_', ' ').toUpperCase();
                    }
                }
                if (!multiTimeZone) {
                    opportunityHTML += '<span aria-label="' + window.translation.date + ': ' + dateOccurrence+'" class="date_time">' + dateOccurrence + '</span>';
                }
                else {
                    opportunityHTML += '<span aria-label="' + window.translation.date + ': ' + dateOccurrence +'"  class="date_time" data-tooltip title="' + timeZone.replaceAll('_', ' ') + '">' + dateOccurrence + '</span>';
                }
                opportunityHTML += '<span aria-label="' + window.translation.duration + ': ' + durationOccurrence +'" class="duration">' + durationOccurrence + '</span>';
            }
            else {
                opportunityHTML += '<span class="spots_available"></span>';
                opportunityHTML += '<span aria-label="' + window.translation.date + ':' + window.translation.ongoing+ '" class="date_time">' + window.translation.ongoing + '</span>';
            }

            

            if (parseInt(occurrenceMore) > 0 || (parseInt(spotsAvailable) == 0 && waitlistEnabled)) {
                opportunityHTML += '</div>';
                opportunityHTML += '<a target="' + target + '" href=' + occurrenceUrl + ' class="occurrence_more ' + additionalClass + '">' + occurrenceMoreText + '</a>';
            } else if (parseInt(spotsAvailable) == 0 && !waitlistEnabled) {
                opportunityHTML += '<div class="occurrence_more"> ' + window.translation.waitlist_unavailable + '</div>';
                opportunityHTML += '</div>';
            }else {
                opportunityHTML += '<div class="white_space"></div>';
                opportunityHTML += '</div>';
            }
            
            opportunityHTML += '</div></div>';
            opportunityContainer.append(opportunityHTML);
        }
    });

    //assing the totals
    searchresultblock.find('input[name="countRegular"]').val(countRegular);
    searchresultblock.find('input[name="countTraining"]').val(countTraining);
    searchresultblock.find('input[name="countFilled"]').val(countFilled);
    searchresultblock.find('input[name="countEvents"]').val(countEvents);
    searchresultblock.find('input[name="countOpp55"]').val(countOpp55);

    fix_image_thumbnail_result(searchresultblock);
    //Reload foundation method to display tooltip
    opportunityContainer.foundation();
}

function searchresult_populate_opportunity_container_slider_grip(opportunityContainer, opportunities) {
    var searchresultblock = opportunityContainer.parents('.searchresultblock').first();
    let self = searchresultblock;
    let openIn = searchresultblock.find('input[name="OpenOppIn"]').val();
    let urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    let allOccurrences = [];
    let target = "_self";
    if (openIn === 'NEW_TAB')
        target = '_blank';
    let itemPerPage = self.find('input[name="item-per-page"]').val();
    let groupItems = self.find(".list-group").first();
    let wrapperId = groupItems.attr('id');
    let siteHocId = self.find('input[name="siteHOCId"]').val();
    let isSlider = false;
    let showOppTitle = self.find('input[name="showOppTitle"]').val() === 'True' || self.find('input[name="showOppTitle"]').val() === 'true';
    let showImage = self.find('input[name="showImage"]').val() === 'True' || self.find('input[name="showImage"]').val() === 'true';
    let showShortDesc = self.find('input[name="showShortDescription"]').val() === 'True' || self.find('input[name="showShortDescription"]').val() === 'true';
    let linkLocation = self.find('input[name="linkLocation"]').val();
    let showOrganization = self.find('input[name="showOrganizationName"]').val() === 'True' || self.find('input[name="showOrganizationName"]').val() === 'true';
    let showLocation = self.find('input[name="showOppLocation"]').val() === 'True' || self.find('input[name="showOppLocation"]').val() === 'true';
    let showAvailableSpots = self.find('input[name="showAvailableSpot"]').val() === 'True' || self.find('input[name="showAvailableSpot"]').val() === 'true';
    let showDateTime = self.find('input[name="showOppDates"]').val() === 'True' || self.find('input[name="showOppDates"]').val() === 'true';
    let multizone = self.find('input[name="multitimezone"]').val() === 'True' || self.find('input[name="multitimezone"]').val() === 'true';
    let timeZoneToUse = self.find('input[name="TimezoneToUse"]').val();
    $('#' + wrapperId).empty();


    if (groupItems.hasClass('owl-carousel')) {
        isSlider = true;
        $('#' + wrapperId).trigger("destroy.owl.carousel");
        $('#' + wrapperId).removeClass("owl-carousel");
    } else {
        let holder = $('#' + wrapperId).parent().find('div.holder').first();
        if (opportunities.length > 0 && opportunities.length > itemPerPage && holder.length > 0 && holder.has('a').length > 0) {
            holder.jPages('destroy');
        }
    }

    if (opportunities.length > 0) {
        opportunities.forEach(function (item) {
            let opportunityUrl = "/opportunity/" + item.occurrenceId;
            let opportunityImageUrl = item.ImageURL;
            if (siteHocId != item.AffiliateOrganizationID)
                opportunityUrl = item.OccurrenceUrl;
            let thumbnail = '<a href="' + opportunityUrl + '" aria-label="' + item.Title + '" target="' + target + '"><img class="group list-group-image" src="/img/placeholder_thumbnail.png" alt="Opportunity Thumbnail" /></a>';
            let frecuency = parseInt(item.Frecuency);
            if (showImage === true && opportunityImageUrl !== null && opportunityImageUrl !== '') {
                if (linkLocation === '0' || linkLocation === 0) {
                    thumbnail = '<a href="' + opportunityUrl + '" aria-label="' + item.Title + '" target="' + target + '"><img class="group list-group-image" src="' + opportunityImageUrl + '" alt="Opportunity Thumbnail" /></a>';
                } else if (linkLocation === '1' || linkLocation === 1) {
                    thumbnail = '<img class="group list-group-image" src="' + opportunityImageUrl + '" alt="Opportunity Thumbnail" />';
                }
            }

            if (showImage) {
                thumbnail = '<div class="thumbnail">'
                    + thumbnail
                    + '</div>';
            } else
                thumbnail = '';

            let oppTitle = '';
            if (showOppTitle) {
                if (linkLocation == '0' || linkLocation == 0) {
                    oppTitle = '<a href="' + opportunityUrl + '" title="' + item.Title + '" target="' + target + '">'
                        + '<p class="group inner list-group-item-heading">' + item.Title + '</p>'
                        + '</a>';
                }
                else if (linkLocation == '1' || linkLocation == 1) {
                    oppTitle = '<p class="group inner list-group-item-heading">' + item.Title + '</p>';
                }
            }

            let servedOrganization = '';
            if (showOrganization) {
                servedOrganization = '<p class="group inner list-group-item-organization">' + item.OrganizationName + '</p>';
            }

            let shortDesc = '';
            if (showShortDesc) {
                shortDesc = '<p class="group inner list-group-item-text">' + item.Description + '</p>';
            }

            let location = '';
            let locationText = '';
            if (showLocation) {
                if (item.LocationType !== 'Virtual') {
                    locationText = item.Location;
                } else if (item.LocationType === 'Virtual') {
                    locationText = item.LocationName + ' (' + window.translation.virtual_text + ')';
                }
                location = '<p class="group inner list-group-item-location">' + locationText + '</p>';
            }

            let availableSpots = '<p class="group inner list-group-item-spot">';
            if (showAvailableSpots) {
                if (item.ScheduleType == 'Date & Time Specific') {
                    if (item.VolunteersStillNeeded == '1') {
                        availableSpots += window.translation.spot_available_on.replace("{0}", item.VolunteersStillNeeded);
                    }
                    else {
                        availableSpots += window.translation.spots_available_on.replace("{0}", item.VolunteersStillNeeded);
                    }
                }
            }
            availableSpots += '</p>';
            let datetimetext = '';
            let datetime = '';
            if (showDateTime) {
                if (item.ScheduleType === 'Date & Time Specific') {
                    if (item.StartDateTimeValue !== null) {
                        datetimetext = item.DateToDisplay + " " + item.TimeZoneAbbreviation;
                    }

                    if (multizone == true) {
                        datetimetext = '<span class="date-time-zone" data-tooltip title="' + timeZoneToUse + '">' + datetimetext + '</span>';
                    }
                }
                else {
                    datetimetext = window.translation.ongoing;
                }

                datetime = '<p class="group inner list-group-item-datatime">' +
                    datetimetext +
                    ((frecuency > 0) ? '<a href="' + opportunityUrl + '" title="' + item.Title + '" class="title" target="' + target + '">+' + window.translation.more + '</a>' : '') +
                    '</p>';
            }
            let classItem = '';
            if (isSlider === true)
                classItem = '';
            else
                classItem = 'list-group-item';

            let itemHTML = '<div class="item ' + classItem + '">';
            if (linkLocation == '0' || linkLocation == 0) {
                itemHTML = itemHTML
                    + thumbnail
                    + '<div class="caption">'
                    + oppTitle
                    + servedOrganization
                    + shortDesc
                    + location
                    + availableSpots
                    + datetime
                    + '</div>'
                    + '</div>';

            } else if (linkLocation == '1' || linkLocation == 1) {
                itemHTML = itemHTML
                    + thumbnail
                    + '<div class="caption">'
                    + '<a href="' + opportunityUrl + '" target="' + target + '">'
                    + oppTitle
                    + servedOrganization
                    + shortDesc
                    + location
                    + availableSpots
                    + datetime
                    + '</a>'
                    + '</div>'
                    + '</div>';
            }
            groupItems.append(itemHTML);
        });

        if (isSlider == true) {
            $('#' + wrapperId).addClass("owl-carousel");
            searchresultblock_opportunity_cycle($('#' + wrapperId), itemPerPage);

        } else {
            searchresult_set_pagination_opportunities(self, isSlider, itemPerPage);
        }
    }
}



function searchresult_set_pagination_opportunities(self, isSlider, itemPerPage) {
    if (self !== undefined) {
        let containerId = self.find('.list-group').attr('id');
        let totalItems = self.find('.item').length;
        let paginator = self.find('div.holder').first();
        var p = parseInt(itemPerPage);
        if (itemPerPage != null && itemPerPage > 0 && isSlider == false && totalItems > itemPerPage && paginator.length > 0) {
            paginator.jPages({
                containerID: containerId,
                perPage: p,
                first: window.translation.datatable_first,
                previous: window.translation.datatable_previous,
                next: window.translation.datatable_next,
                last: window.translation.datatable_last,
                minHeight: false,
                callback: function (pages, items) {
                    var itemsDisplayed = items.showing;
                    itemsDisplayed.each(function () {
                        if ($(this).css('display') == 'block') {
                            $(this).css('display', 'inline-block');
                        }
                    });
                }
            });
        }
    }
}

function searchresult_populate_opportunity_container_listing_map(opportunityContainer, opportunities, showOrganizationName) {
    var searchresultblock = opportunityContainer.parents('.searchresultblock').first();
    var self = searchresultblock;
    var openIn = searchresultblock.find('input[name="OpenOppIn"]').val();
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var countRegular = 0;
    var countTraining = 0;
    var countFilled = 0;
    var countEvents = 0;
    var countOpp55 = 0;
    var occurrencesLocations = [];
    var blockId = self.attr('data-block-id');
    let titleTypeIndicator = window.translation.regular_opportunities;
    opportunities.forEach(function (opportunity) {
        var sid = opportunity['SID'];
        var occInfo = {};
        occInfo['Name'] = opportunity['Title'];
        occInfo['Location'] = opportunity['Location'];
        if (showOrganizationName) {
            occInfo['Organization'] = opportunity['OrganizationName'];
        }
        occInfo['Datetime'] = opportunity['DateOccurrence'];
        occInfo['Description'] = opportunity['Description'];
        occInfo['OccurrenceId'] = sid;
        occInfo['LatLong'] = opportunity['LatitudeLongitude'];

        if (opportunity['locationType'] == null || opportunity['locationType'] != 'Virtual')
            occurrencesLocations.push(occInfo);

        let typeIndicator = opportunity['TypeIndicator'];
        if (typeIndicator) {
            if (typeIndicator === 'Filled') {
                titleTypeIndicator = window.translation.filled_opportunities;
                countFilled++;
            }
            else if (typeIndicator === 'Training') {
                titleTypeIndicator = window.translation.training;
                countTraining++;
            }
            else if (typeIndicator === 'SpecialEvents') {
                titleTypeIndicator = window.translation.special_events;
                countEvents++;
            }

            if (titleTypeIndicator == window.translation.regular_opportunities) {
                countRegular++;
            }
        }
    });


    let mapContainer = document.getElementById('search_result_map_' + blockId);
    if (occurrencesLocations.length > 0)
        self.find('input[name="occ_information_map"]').val(JSON.stringify(occurrencesLocations));
    else 
        self.find('input[name="occ_information_map"]').val('');

    //assing the totals
    searchresultblock.find('input[name="countRegular"]').val(countRegular);
    searchresultblock.find('input[name="countTraining"]').val(countTraining);
    searchresultblock.find('input[name="countFilled"]').val(countFilled);
    searchresultblock.find('input[name="countEvents"]').val(countEvents);
    searchresultblock.find('input[name="countOpp55"]').val(countOpp55);

    set_markers_to_map_search_opportunities(mapContainer, self);
    //Reload foundation method to display tooltip
}




function searchresult_populate_opportunity_container_listing_flip(opportunityContainer, opportunities, showImage,showOrganizationName) {
    var searchresultblock = opportunityContainer.parents('.searchresultblock').first();
    var openIn = searchresultblock.find('input[name="OpenOppIn"]').val();
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var countRegular = 0;
    var countTraining = 0;
    var countFilled = 0;
    var countEvents = 0;
    var countOpp55 = 0;

    opportunities.forEach(function (opportunity) {
        var sid = opportunity['SID'];
        if(opportunityContainer.find('.opportunity-container[data-occurrence-id="' + sid + '"]').length === 0) {
            var dateOccurrence = opportunity['DateOccurrence'];
            var endDate = opportunity['endDate'];
            var nextTopRelatedOccs = (opportunity['nextTopRelatedOccs']!='')? JSON.parse(opportunity['nextTopRelatedOccs']) : null;
            var timeZone = opportunity['TimeZone'];
            var timeZoneAbbreviation = opportunity['TimeZoneAbbreviation'];
            var durationOccurrence = opportunity['Duration'];
            var locationOccurrence = opportunity['Location'];
            var description = opportunity['Description'];
            var imageUrl = opportunity['ImageURL'];
            var isOpportunity55 = opportunity['IsOpportunity55'];
            var occurrenceMore = opportunity['OccurrencesMore'];
            var spotsAvailable = opportunity['SpotsAvailable'];
            var totalSpotsAvailable = opportunity['TotalSpotsAvailable'];
            var title = opportunity['Title'];
            var type = opportunity['Type'];
            var typeIndicator = opportunity['TypeIndicator'];


            var OrganizationName = (showOrganizationName === 'True' && opportunity['OrganizationName'] != null)? '<span class="organization-name"><a href="'+opportunity['OrganizationUrl']+'">'+opportunity['OrganizationName']+'</a></span>':'';
            var classIsOpportunity55 = (isOpportunity55) ? 'is-major-55' : '';
            if (isOpportunity55) {
                countOpp55++;
            }
            var classShowImage = (showImage !== 'True') ? 'image-hidden' : '';
            var urlImage = (imageUrl) ? "'"+imageUrl+"'" : "/img/placeholder_thumbnail.png";

 
            var miniSitePath = (opportunity['MiniSitePath'] != null && opportunity['MiniSitePath'] !== undefined && opportunity['MiniSitePath'] != '') ? fix_minisite_path(opportunity['MiniSitePath']) : "";
            var occurrenceUrl =  urlSite + 'opportunity/' + sid;

            if(opportunity['IsExternalOpportunity'] == true) 
                occurrenceUrl = opportunity['OccurrenceUrl'];
            else if(miniSitePath.length > 0)
                occurrenceUrl = miniSitePath + "opportunity/" + sid;
            var cmtoken = (searchresultblock.find('input[name="cmtoken"]').length > 0) ? searchresultblock.find('input[name="cmtoken"]').val() : '';
            var hocInstanceId = (searchresultblock.find('input[name="hocInstanceId"]').length > 0) ? searchresultblock.find('input[name="hocInstanceId"]').val() : '';
            var contactId = (searchresultblock.find('input[name="contactId"]').length > 0) ? searchresultblock.find('input[name="contactId"]').val() : '';
            var siteId = (searchresultblock.find('input[name="siteId"]').length > 0) ? searchresultblock.find('input[name="siteId"]').val() : '';
            var multiTimeZone = (searchresultblock.find('input[name="MultiTimeZone"]').length > 0) ? searchresultblock.find('input[name="MultiTimeZone"]').val().toLowerCase() == "true" : false;
            var returnUrl = (searchresultblock.find('input[name="returnUrl"]').length > 0) ? searchresultblock.find('input[name="returnUrl"]').val() : '';
            var titleTypeIndicator = window.translation.regular_opportunities;
            var waitlistEnabled = opportunity['waitlistEnabled'];
            var opportunityDetailURL = urlSite + "opportunity/"+ sid;
            var moreTimeAvailable = (parseInt(occurrenceMore) == 1) ? window.translation.more_time_available : window.translation.more_times_available;
            var occurrenceMoreText = (occurrenceMore >10 )?(occurrenceMore - 10) + ' ' + moreTimeAvailable : '';
            var additionalClass = "";
            if (($("div.searchresultblock input[name='showpopupexternalopportunities']").length > 0) && (opportunity['IsExternalOpportunity'] == true))
            {
                additionalClass = " external-opportunity-information";
            }
            if(typeIndicator) {
                if (typeIndicator === 'Filled')
                {
                    titleTypeIndicator = window.translation.filled_opportunities;
                    countFilled++;
                }
                else if (typeIndicator === 'Training')
                {
                    titleTypeIndicator = window.translation.training;
                    countTraining++;
                }
                else if (typeIndicator === 'SpecialEvents')
                {
                    titleTypeIndicator = window.translation.special_events;
                    countEvents++;
                }

                if (titleTypeIndicator == window.translation.regular_opportunities) {
                    countRegular++;
                }
            }
            if(cmtoken) {
                if(occurrenceUrl.indexOf('?') !== -1) {
                    occurrenceUrl += '&hoctoken=' + cmtoken;
                }
                else {
                    occurrenceUrl += '?hoctoken=' + cmtoken;
                }
                if(hocInstanceId) {
                    occurrenceUrl += '&hocInstanceId=' + hocInstanceId;
                }
                if(contactId) {
                    occurrenceUrl += '&contactId=' + contactId;
                }
                if(siteId) {
                    occurrenceUrl += '&siteId=' + siteId;
                }
                if(returnUrl) {
                    occurrenceUrl += '&returnUrl=' + returnUrl;
                }
            }
            if (parseInt(spotsAvailable) == 0 && waitlistEnabled) {
                occurrenceMoreText = window.translation.waitlist_available;
            }
            var item_flip_class = (parseInt(occurrenceMore) >= 1)? 'item-is-flip' : '';
            var opportunityHTML = '<div role="group" aria-label="' + window.translation.wcag_search_volunteer_opportunity_group.replaceAll('{0}', titleTypeIndicator) + '" class="opportunity-container '+ item_flip_class +' '+ typeIndicator + ' ' + classIsOpportunity55 + '" data-occurrence-id="' + sid + '">';
                if(typeIndicator === 'Filled') {
                    opportunityHTML += '<div class="filled-background"></div>';
                }
                var target =(openIn === "NEW_TAB")? "_blank" : "_self";
                opportunityHTML += '<div class="flip-card-inner">';
                    //front content
                    opportunityHTML += '<div class="flip-card-front"> ';
                        opportunityHTML += '<span tabindex="0" data-tooltip aria-haspopup="true" data-disable-hover="false" aria-label="' + titleTypeIndicator+'" title="'+ titleTypeIndicator +'" class="has-tip type_indicator '+ typeIndicator +'">'
                                            +   '<span class="circle"></span>'
                                            + '</span>';
                        if (isOpportunity55 === true) {
                            opportunityHTML += '<span data-tooltip aria-haspopup="true" data-disable-hover="false" tabindex="0" title="' + window.translation.opportunities_people_major_55 + '" class="has-tip type_indicator is-major-55">55+</span>';
                        }

                        if(showImage === 'True') {
                            opportunityHTML += '<div class="image"><img src='+urlImage+'></div>';
                        }
                        
                        opportunityHTML +='<div class="available">';
                            if (type === 'DateAndTimeSpecific') {
                                if (totalSpotsAvailable == '1') {
                                    opportunityHTML += '<span tabindex="0" aria-label="' + window.translation.spot_available + ':' + window.translation.spot_available.replaceAll('{0}', spotsAvailable)+'" class="spots_available">' + window.translation.spot_available.replaceAll('{0}', spotsAvailable) + '</span>';
                                }
                                else {
                                    opportunityHTML += '<span tabindex="0" aria-label="' + window.translation.spots_available + ':'+ totalSpotsAvailable+ ' ' + window.translation.spots_available +'" class="spots_available">' + totalSpotsAvailable + ' ' +window.translation.spots_available + '</span>';
                                }
                            }else {
                                opportunityHTML += '<span tabindex="0" aria-label="' + window.translation.date + ':' + window.translation.ongoing+ '" class="date_time">' + window.translation.ongoing + '</span>';
                            }
                        opportunityHTML +='</div>';
                        
                        opportunityHTML +='<h2 class="flip-title">'
                                        + '<a target="' + target + '" href="' + occurrenceUrl + '" class="' + additionalClass + '">' + title + '</a>'
                                        + '</h2>'+OrganizationName;

                        opportunityHTML += '<div class="flip-description '+ typeIndicator +'"><p><span tabindex="0">' + description + '</span>'
                                        + '</p></div>';
                        opportunityHTML += '<div class="text-container '+ classShowImage +'">';
                            opportunityHTML += '<div role="button" tabindex="0" data-url="' + occurrenceUrl +'" data-target="'+target+'" onkeyDown="handleCommandEventVolOpp(event)">';

                                opportunityHTML += '<span aria-label="' + window.translation.location + ': ' + locationOccurrence +'" class="location">' + locationOccurrence + '</span>';        
                                if (type === 'DateAndTimeSpecific') {
                                    opportunityHTML += '<span aria-label="' + window.translation.duration + ': ' + durationOccurrence +'" class="duration">' + durationOccurrence + '</span>';
                                }
                                opportunityHTML += '</div>';
                        opportunityHTML += ' </div>';

                        opportunityHTML += '<div class="more-count">';

                            if (type === 'DateAndTimeSpecific') {
                                if (!multiTimeZone) {
                                    opportunityHTML += '<span tabindex="0" aria-label="' + window.translation.date + ': ' + dateOccurrence + '" class="date_time">' + dateOccurrence + timeZoneAbbreviation + '</span>';
                                }else{
                                    opportunityHTML += '<span tabindex="0" aria-label="' + window.translation.date + ': ' + dateOccurrence + '"  class="date_time" data-tooltip title="' + timeZone.replaceAll('_', ' ') + '">' + dateOccurrence + timeZoneAbbreviation +'</span>';
                                }
                                if (parseInt(occurrenceMore) >= 1 ) {
                                    opportunityHTML +='<span tabindex="0" aria-label="'+window.translation.learn_more+'" class="text-more">+ '+window.translation.more+'</span>';
                                }
                            }else{
                                opportunityHTML += '<span tabindex="0" aria-label="' + window.translation.date + ':' + window.translation.though_only+ '" class="date_time">' + window.translation.though_only + ' ' +endDate+'</span>';
                            }

                        opportunityHTML += '</div>';
                    
                    opportunityHTML += '</div>';

                    //Back Conetnt
                    if (parseInt(occurrenceMore) >= 1 ) {
                        opportunityHTML += '<div class="flip-card-back"> ';
                            opportunityHTML +='<h2 class="flip-title">'
                                            + '<a target="' + target + '" href="' + occurrenceUrl + '">' + title + '</a>'
                                            + '</h2>';
                                            if (nextTopRelatedOccs!= null) {
                                                opportunityHTML +='<ul>';
                                                for (let i = 0; i < nextTopRelatedOccs.length; i++) {
                                                    var next_miniSitePath = (nextTopRelatedOccs[i].minisitePath != null && nextTopRelatedOccs[i].minisitePath !== undefined && nextTopRelatedOccs[i].minisitePath != '')?fix_minisite_path(nextTopRelatedOccs[i].minisitePath):"";
                                                    var next_occurrenceUrl =  urlSite + 'opportunity/' + nextTopRelatedOccs[i].occurrenceId;
                                                    if(opportunity['IsExternalOpportunity'] == true) 
                                                        next_occurrenceUrl = nextTopRelatedOccs[i].occurrenceUrl;
                                                    else if(next_miniSitePath.length > 0){
                                                        next_occurrenceUrl = next_miniSitePath + "opportunity/" + nextTopRelatedOccs[i].occurrenceId;
                                                    }
                                                    opportunityHTML += '<li><a target="' + target + '" href="' + next_occurrenceUrl + '" class="' + (timeZoneAbbreviation && timeZoneAbbreviation != '' ? 'timezone' : '') +'"><span class="date">' + nextTopRelatedOccs[i].startDate + ' ' + nextTopRelatedOccs[i].startTime + timeZoneAbbreviation+ '</span> <span> Slots: '+nextTopRelatedOccs[i].slotsAvailable+'</span></a></li>';
                                                }
                                                opportunityHTML +='</ul>';
                                            }

                                            if (parseInt(occurrenceMore) > 10 || (parseInt(spotsAvailable) == 0 && waitlistEnabled)) {
                                                opportunityHTML += '<br><a tabindex="0" href="'+occurrenceUrl+'">' + occurrenceMoreText + '</a>';
                                            }
                                            opportunityHTML += '<div class="learn-more">';
                                            opportunityHTML += '<a class="button" aria-label="'+description+'. '+window.translation.learn_more +'" target="' + target + '" href="' + occurrenceUrl + '">' + window.translation.learn_more + '</a>';
                                            opportunityHTML += '</div>';

                        opportunityHTML += '</div>';
                    }
                opportunityHTML += '</div>';
            opportunityHTML += '</div>';
            opportunityContainer.append(opportunityHTML);
        }
    });

    //assing the totals
    searchresultblock.find('input[name="countRegular"]').val(countRegular);
    searchresultblock.find('input[name="countTraining"]').val(countTraining);
    searchresultblock.find('input[name="countFilled"]').val(countFilled);
    searchresultblock.find('input[name="countEvents"]').val(countEvents);
    searchresultblock.find('input[name="countOpp55"]').val(countOpp55);

    fix_image_thumbnail_result(searchresultblock);
    //Reload foundation method to display tooltip
    opportunityContainer.foundation();
    $('.flip-card-back,.flip-card-back h2,.flip-card-back a,.flip-card-back li,.flip-card-back p').blur(function() {
        $(this).parents('.flip-card-inner').removeClass('active');
    }).focus(function() {
        $(this).parents('.flip-card-inner').addClass('active');
    });
}

function searchresult_populate_opportunity_container_by_date(opportunityContainer, opportunities, showImage, searchresultblock,showOrganizationName) {

    var countRegular = 0;
    var countTraining = 0;
    var countFilled = 0;
    var countEvents = 0;
    var countOpp55 = 0;


    opportunities.forEach(function (opportunityDate) {
        var day = opportunityDate['Day'];
        var month = opportunityDate['Month'];
        var monthName = opportunityDate['MonthName'];
        var year = opportunityDate['Year'];
        var dateDisplay = opportunityDate['DateDisplay'];
        var ocurrencesListing = opportunityDate['ListingOpportunities'];
        var opportunityDateContainer = opportunityContainer.find('.opportunity-date-container[data-date-day="' + day + '"][data-date-month="' + month + '"][data-date-year="' + year + '"]');

        if (opportunityDateContainer.length > 0) {
            var containerService = opportunityDateContainer.find('.opportunities-service').first();

            ocurrencesListing.forEach(function(ocurrence) {
                searchresult_append_opportunity_container(ocurrence, containerService, showImage,showOrganizationName);
                var typeIndicator = ocurrence['TypeIndicator'];
                var titleTypeIndicator = window.translation.regular_opportunities;

                if (typeIndicator) {
                    if (typeIndicator === 'Filled') {
                        titleTypeIndicator = window.translation.filled_opportunities;
                        countFilled++;
                    }
                    else if (typeIndicator === 'Training') {
                        titleTypeIndicator = window.translation.training;
                        countTraining++;
                    }
                    else if (typeIndicator === 'SpecialEvents') {
                        titleTypeIndicator = window.translation.special_events;
                        countEvents++;
                    }

                    if (titleTypeIndicator == window.translation.regular_opportunities) {
                        countRegular++;
                    }
                }



            });

            //Get occurrences visibles after append in container
            var ocurrencesVisibles = opportunityDateContainer.find('.opportunity-container').length;
            var ocurrencesHidden = ocurrencesVisibles - 5;

            if(ocurrencesVisibles > 5) {
                //Remove previous link of view more in that day
                opportunityDateContainer.find('.opportunity-container.view-more').first().remove();

                var viewMoreContainer = '<div class="opportunity-container view-more searchresult-by-date">'
                                        +   '<div class="content-container">'
                                        +       '<a class="view-more-link">'
                                        +           '<span class="text_link"> ' + window.translation.view_more + ' </span>'
                                        +           '<span class="paragraph">'
                                        +               '<span class="number-more other1">'+ ocurrencesHidden +' </span>'
                                        +               window.translation.more_opportunities_available_for_this_date
                                        +           '</span>'
                                        +       '</a>'
                                        +       '<div class="processing_container hide-custom">'
                                        +           '<div class="icon icon--ei-spinner icon--l "><div class="icon__spinner"><svg class="icon__cnt"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ei-spinner-icon"></use></svg></div></div>'
                                        +           '<span>' + window.translation.please_wait + '</span>'
                                        +       '</div>'
                                        +   '</div>'
                                        + '</div>';

                containerService.after(viewMoreContainer);
            }

            //Reload foundation method to display tooltip
            containerService.foundation();
        }
        else {
            var occurrencesMore = ocurrencesListing.length - 5;
            var dateContainer = '';

            if(day === 31 && month === 12 && year === 9999) {
                dateContainer += '<div class="opportunity-date-container" data-date-day="' + day + '" data-date-month="' + month + '" data-date-year="' + year + '">'
                                + '<div class="title-date">'
                                +   '<div class="square ongoing">'
                                +       '<span class="ongoing">'+ dateDisplay +'</span>'
                                +   '</div>'
                                + '</div>'
                                + '<div class="opportunities-listing">'
                                +   '<div class="opportunities-service">'
                                +   '</div>'
                                +   '<div class="item-final"></div>'
                                + '</div>';
            }
            else {
                dateContainer = '<div class="opportunity-date-container" data-date-day="' + day + '" data-date-month="' + month + '" data-date-year="' + year + '">'
                            + '<div class="title-date">'
                            +   '<div class="square">'
                            +       '<span class="day">'+ day +'</span>'
                            +       '<span class="month">' + monthName + '</span>'
                            +   '</div>'
                            +   '<div class="date-full-name">'
                            +       '<span class="day">' + dateDisplay + '</span>'
                            +   '</div>'
                            + '</div>'
                            + '<div class="opportunities-listing">'
                            +   '<div class="opportunities-service">'
                            +   '</div>'
                            +   '<div class="item-final"></div>'
                            + '</div>';
            }

            if(opportunityContainer.find('.opportunity-date-container').last().length > 0) {
                var container = opportunityContainer.find('.opportunity-date-container').last();

                if(container.attr('data-date-day') === '31' && container.attr('data-date-month') === '12' && container.attr('data-date-year') === '9999') {
                    opportunityContainer.find('.opportunity-date-container').last().before(dateContainer);
                }
                else {
                    opportunityContainer.find('.opportunity-date-container').last().after(dateContainer);
                }
            }
            else {
                opportunityContainer.prepend(dateContainer);
            }

            var newContainer = opportunityContainer.find('.opportunity-date-container[data-date-day="' + day + '"][data-date-month="' + month + '"][data-date-year="' + year + '"]').find('.opportunities-service').first();

            ocurrencesListing.forEach(function(ocurrence) {
                var ocurrencesVisibles = newContainer.find('.opportunity-container').length;

                searchresult_append_opportunity_container(ocurrence, newContainer, showImage,showOrganizationName);

                var typeIndicator = ocurrence['TypeIndicator'];
                var titleTypeIndicator = window.translation.regular_opportunities;

                if (typeIndicator) {
                    if (typeIndicator === 'Filled') {
                        titleTypeIndicator = window.translation.filled_opportunities;
                        countFilled++;
                    }
                    else if (typeIndicator === 'Training') {
                        titleTypeIndicator = window.translation.training;
                        countTraining++;
                    }
                    else if (typeIndicator === 'SpecialEvents') {
                        titleTypeIndicator = window.translation.special_events;
                        countEvents++;
                    }

                    if (titleTypeIndicator == window.translation.regular_opportunities) {
                        countRegular++;
                    }
                }



                if (ocurrencesVisibles === 5) {
                    var moreOpportunitiesTranslation = window.translation.more_opportunities_available_for_this_date;
                    var occurrencesNumberMore = moreOpportunitiesTranslation.replace("{0}", occurrencesMore);
                    var viewMoreContainer = '<div class="opportunity-container view-more searchresult-by-date">'
                                            +   '<div class="content-container">'
                                            +       '<a class="view-more-link">'
                                            +           '<span class="text_link"> ' + window.translation.view_more + ' </span>'
                                            +           '<span class="paragraph">'
                                            +               '<span class="number-more">' + occurrencesNumberMore +' </span>'
                                            +           '</span>'
                                            +       '</a>'
                                            +       '<div class="processing_container hide-custom">'
                                            +           '<div class="icon icon--ei-spinner icon--l "><div class="icon__spinner"><svg class="icon__cnt"><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ei-spinner-icon"></use></svg></div></div>'
                                            +           '<span>' + window.translation.please_wait + '</span>'
                                            +       '</div>'
                                            +   '</div>'
                                            + '</div>';

                    newContainer.after(viewMoreContainer);
                }

                //Reload foundation method to display tooltip
                newContainer.foundation();
            });
        }
    });

    fix_image_thumbnail_result(searchresultblock);

    searchresultblock.find('input[name="countRegular"]').val(countRegular);
    searchresultblock.find('input[name="countTraining"]').val(countTraining);
    searchresultblock.find('input[name="countFilled"]').val(countFilled);
    searchresultblock.find('input[name="countEvents"]').val(countEvents);
    searchresultblock.find('input[name="countOpp55"]').val(countOpp55);

}

function searchresult_get_shareable_link(self, formData) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        method: "POST",
        url: urlSite + "search/GetShareableLinkSearchResult",
        data: { parameters: formData},
        beforeSend: function () {
            //Display processing
            self.find('.share_row').find('.icon-div').removeClass('hide-custom');
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);

        if(jsonData) {
            if(jsonData.status === 'ok') {
                var idUrl = jsonData.idUrl;
                var urlOrigin = window.location.origin;
                var pathname = window.location.pathname;
                var urlShareable = urlOrigin + pathname + '?shareId=' + idUrl;

                self.find('input[name="share_search_result"]').val(urlShareable);
            }
        }

        self.find('.share_row').find('.icon-div').addClass('hide-custom');
    });
}

function searchresult_save_search(self, formData, searchName, searchNameClean, dataFrom) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var typeWidget = 1;
    if (dataFrom !== null && dataFrom !== undefined && dataFrom === 'calendar')
        typeWidget = 2;
    $.ajax({
        method: "POST",
        url: urlSite + "search/SaveSearchSearchResult",
        data: { parameters: formData, searchName: searchName, typeWidget: typeWidget },
        beforeSend: function () {
            //Display processing
            self.find('.save-search-row').find('.icon-div').removeClass('hide-custom');
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);

        if(jsonData) {
            if(jsonData.status === 'ok') {
                Swal.fire({
                    title: '',
                    text: window.translation.search_saved_successfully,
                    icon: 'success',
                    confirmButtonText: 'Ok'
                });

                //Update dropdown with search saved
                self.find('select[name="my_saved_searches"]').append('<option value="'+ jsonData.idUrl +'">'+ searchNameClean +'</option>');
            }
            else {
                if(jsonData.message === 'User not logged') {
                    var searchresultId = self.find('input[name="searchResultId"]').val();
                    var searchesSavedStorage = localStorage.getItem('saved-searches-search-result-' + searchresultId);
                    var idSearch = make_random_id();
                    var listingSavedSearches = [];
                    var searchResultItem = {
                        parameters: formData,
                        name: searchNameClean,
                        idSearch: idSearch
                    };

                    if(searchesSavedStorage) { //Create array with data saved
                        listingSavedSearches = JSON.parse(searchesSavedStorage);
                    }
                    listingSavedSearches.push(searchResultItem);
                    //Update localStorage
                    _assign_value_json_local_storage('saved-searches-search-result-' + searchresultId, listingSavedSearches);

                    //Update dropdown with search saved
                    self.find('select[name="my_saved_searches"]').append('<option value="'+ idSearch +'">'+ searchNameClean +'</option>');

                    Swal.fire({
                        title: '',
                        text: window.translation.search_saved_successfully,
                        icon: 'success',
                        confirmButtonText: 'Ok'
                    });
                }
                else {
                    Swal.fire({
                        title: '',
                        icon: 'error',
                        text: jsonData.message,
                        confirmButtonText: "Ok"
                    });
                }
                
            }

            self.find('input[name="save_current_search_as"]').val('');

        }

        self.find('.save-search-row').find('.icon-div').addClass('hide-custom');
    });
}

function searchresult_load_search_shareable(self, processingContainer, searchId, elementViewMore, isAnonymous) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var listingFormat = self.find('input[name="listingFormat"]').val();
    var blockId = self.attr('data-block-id');
    var searchResultId = self.find('input[name="searchResultId"]').val();
    var formData = self.find('form').serializeObject();
    var showImage = self.find('input[name="showImage"]').val();
    var showOrganizationName = self.find('input[name="showOrganizationName"]').val();
    if(isAnonymous) {
        //Find parameters in localStorage.
        var searchesSavedStorage = localStorage.getItem('saved-searches-search-result-' + searchResultId);
        if(searchesSavedStorage) {
            var listingSavedSearches = JSON.parse(searchesSavedStorage);


            var savedSearchItem = null;
            /*listingSavedSearches.filter(function(index) {
                return index.idSearch === searchId;
            });*/
            listingSavedSearches.forEach(function (v, i) {
                if (v.idSearch == searchId)
                    savedSearchItem = v;
            });
            if (savedSearchItem !== null && savedSearchItem !== undefined) {
                if (listingFormat !== 'CALENDAR_WITHOUT_TILES') {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "search/LoadSavedSearchByParameters",
                        data: { parameters: savedSearchItem.parameters, listingFormat: listingFormat, blockId: searchResultId, parentBlockId: blockId},
                        beforeSend: function () {
                            //Display processing
                            processingContainer.show();
                        }
                    }).done(function (data) {
                        var jsonData = JSON.parse(data);

                        searchresult_populate_block_saved_search(self, listingFormat, elementViewMore, showImage, blockId, jsonData,showOrganizationName);
                        processingContainer.hide();
                    });

                } 
            }
        }
    }
    else {
        if (listingFormat !== 'CALENDAR_WITHOUT_TILES') {
            $.ajax({
                method: "POST",
                url: urlSite + "search/LoadSavedSearchSearchResult",
                data: { searchId: searchId, listingFormat: listingFormat, blockId: searchResultId, parentBlockId: blockId  },
                beforeSend: function () {
                    //Display processing
                    processingContainer.show();
                }
            }).done(function (data) {
                var jsonData = JSON.parse(data);
                searchresult_populate_block_saved_search(self, listingFormat, elementViewMore, showImage, blockId, jsonData,showOrganizationName);
                processingContainer.hide();
            });

        } 
    }
}

function searchresult_populate_block_saved_search(self, listingFormat, elementViewMore, showImage, blockId, jsonData,showOrganizationName) {
    var opportunityContainer;
    if(jsonData) {
        if (jsonData.status === 'ok') {
            var parameters = JSON.parse(jsonData.formData);
            if (listingFormat === 'LISTING_WITH_TILES') {
                //Populate content
                //Update title of total results
                self.find('.title-results').find('.total-occurrences').text(jsonData['total']);

                if (jsonData['opportunities']) {
                    opportunityContainer = elementViewMore.parents('.opportunities-result').first().find('.opportunities-service');

                    opportunityContainer.empty();

                    searchresult_populate_opportunity_container_listing(opportunityContainer, jsonData['opportunities'], showImage,showOrganizationName);
                }

                //Hide link if not exits more opportunities
                if (jsonData['total'] <= jsonData['opportunities'].length) {
                    elementViewMore.hide();
                }
                else {
                    var numberMore = jsonData['total'] - jsonData['opportunities'].length;
                    elementViewMore.show();

                    //Update span of more opportunities
                    elementViewMore.find('span.number-more').text(numberMore);
                }
            }
            else if (listingFormat === 'CALENDAR_WITH_TILES') {
                elementViewMore = self.find('.view-more-total').first();

                if (jsonData['opportunities']) {
                    opportunityContainer = self.find('.opportunities-result').first();

                    //Remove all data
                    opportunityContainer.find('.opportunity-date-container').remove();

                    searchresult_populate_opportunity_container_by_date(opportunityContainer, jsonData['opportunities'], showImage, self,showOrganizationName);
                }

                //Hide link if not exits more opportunities
                if (jsonData['total'] <= 50) {
                    elementViewMore.hide();
                }
                else {
                    var occurrenceMore = jsonData['total'] - 50;

                    //Update text of view more link
                    elementViewMore.find('span.number-more').text(occurrenceMore);
                    elementViewMore.show();

                }
                searchresult_populate_calendar_tile_link_more_behavior(self);
            }
            else if (listingFormat === 'LISTING_WITHOUT_TILES') {
                //Populate content
                //Update title of total results
                self.find('.title-results').find('.total-occurrences').text(jsonData['total']);

                if (jsonData['opportunities']) {
                    
                    opportunityContainer = self.find('#datatable-search-opportunities-block tbody');

                    opportunityContainer.empty();

                    refresh_results_for_default_listing(opportunityContainer, jsonData['opportunities'], self);
                }

                //Hide link if not exits more opportunities
                if (jsonData['total'] <= jsonData['opportunities'].length) {
                    elementViewMore.hide();
                }
                else {
                    var numberMore = jsonData['total'] - jsonData['opportunities'].length;
                    elementViewMore.show();

                    elementViewMore.find('.view-more-link').removeClass('is-hidden');
                    //Update span of more opportunities
                    elementViewMore.find('span.number-more').text(numberMore);
                }

            }else if(listingFormat === 'LISTING_WITH_TILE_FLIP'){

                self.find('.title-results').find('.total-occurrences').text(jsonData['total']);

                if (jsonData['opportunities']) {
                    opportunityContainer = elementViewMore.parents('.opportunities-result').first().find('.opportunities-service');
                    opportunityContainer.empty();
                    searchresult_populate_opportunity_container_listing_flip(opportunityContainer, jsonData['opportunities'], showImage,showOrganizationName);
                }

                //Hide link if not exits more opportunities
                if (jsonData['total'] <= jsonData['opportunities'].length) {
                    elementViewMore.hide();
                }
                else {
                    var numberMore = jsonData['total'] - jsonData['opportunities'].length;
                    elementViewMore.show();
                    //Update span of more opportunities
                    elementViewMore.find('span.number-more').text(numberMore);
                }
            }

            if (parameters.language != undefined && parameters.language !== '' && parameters.language !== null) {
                //setting language of the current saved searche only to find in the same engine
                //self.find('input[name="language"]').val(parameters.language);
                // This was agreed with Esteban in a metting the last 9/3/2018 - HOC3-7930
            }

            //Populate search inputs
            // 1 - Basic Search
            //console.log('populate keyword ' + parameters.keyword)
            self.find('input[name="keyword"]').val(parameters.keyword);
            self.find('input[name="location"]').val(parameters.location);
            self.find('select[name="causes"]').val(parameters.causes);
            self.find('select[name="distance"]').val(parameters.distance);
            self.find('select[name="location-type"]').val(parameters["location-type"]);

            // 2 - Sort By
            self.find('input[name="sort_by"][value="' + parameters.sort_by + '"]').prop('checked', true);

            // 3 - Dates
            self.find('input[name="searchvo_date_from"]').val(parameters.searchvo_date_from);
            self.find('input[name="searchvo_date_to"]').val(parameters.searchvo_date_to);
            var options = load_options_for_data_picker(parameters.searchvo_date_from, parameters.searchvo_date_to);
            self.find('input.date-picker-range-input').daterangepicker(
                options,
                function (start, end, label) {
                    var startDate = start.format(window.MomentDateFormat);
                    var endDate = end.format(window.MomentDateFormat);
                    self.find('input[name="searchvo_date_from"]').val(startDate);
                    self.find('input[name="searchvo_date_to"]').val(endDate);
                }
            );
            if(parameters.searchvo_date_from || parameters.searchvo_date_to) {
                if(self.find('.dates-section.fieldset-step').find('.open-close-button').find('a').hasClass('close-button') == false) {
                    self.find('.dates-section.fieldset-step').find('.open-close-button').find('a').trigger('click');
                }
            }

            // 4 - View By
            self.find('input[name="view_by"]').prop('checked', false);
            if(typeof parameters.view_by === 'object') {
                parameters.view_by.forEach(function(viewBy) {
                    self.find('input[name="view_by"][value="' + viewBy + '"]').prop('checked', true);
                });
            }
            else if(parameters.view_by) {
                self.find('input[name="view_by"][value="' + parameters.view_by + '"]').prop('checked', true);
            }
            if(parameters.view_by) {
                if(self.find('.view-by-section.fieldset-step').find('.open-close-button').find('a').hasClass('close-button') == false) {
                    self.find('.view-by-section.fieldset-step').find('.open-close-button').find('a').trigger('click');
                }
            }

            // 5 - Your availability
            self.find('input[name="your_availability"]').prop('checked', false);
            if(typeof parameters.your_availability === 'object') {
                parameters.your_availability.forEach(function(availability) {
                    self.find('input[name="your_availability"][value="' + availability + '"]').prop('checked', true);
                });
            }
            else if(parameters.your_availability) {
                self.find('input[name="your_availability"][value="' + parameters.your_availability + '"]').prop('checked', true);
            }

            if(parameters.duration) {
                self.find('select[name="duration"]').val(parameters.duration);
                self.find('select[name="duration"]').multiselect('reload');
            }

            if(parameters.your_availability || parameters.duration) {
                if(self.find('.availability-section.fieldset-step').find('.open-close-button').find('a').hasClass('close-button') == false) {
                    self.find('.availability-section.fieldset-step').find('.open-close-button').find('a').trigger('click');
                }
            }



            // 6 - Type of opportunity
            if (parameters['organization-serve']) {
                self.find('select[name="organization-serve"]').val(parameters['organization-serve']);
                self.find('select[name="organization-serve"]').multiselect('reload');
            }
            if(parameters['issue-areas']) {
                self.find('select[name="issue-areas"]').val(parameters['issue-areas']);
                self.find('select[name="issue-areas"]').multiselect('reload');
            }
            if(parameters['skills-use']) {
                self.find('select[name="skills-use"]').val(parameters['skills-use']);
                self.find('select[name="skills-use"]').multiselect('reload');
            }
            if(parameters['activity-type']) {
                self.find('select[name="activity-type"]').val(parameters['activity-type']);
                self.find('select[name="activity-type"]').multiselect('reload');
            }
            if(parameters['participate-event']) {
                self.find('select[name="participate-event"]').val(parameters['participate-event']);
                self.find('select[name="participate-event"]').multiselect('reload');
            }
            if(parameters['managed-by']) {
                self.find('select[name="managed-by"]').val(parameters['managed-by']);
                self.find('select[name="managed-by"]').multiselect('reload');
            }

            if(parameters['issue-areas'] || parameters['skills-use'] || parameters['activity-type'] || parameters['participate-event'] || parameters['managed-by']) {
                if(self.find('.type-opportunity-section.fieldset-step').find('.open-close-button').find('a').hasClass('close-button') == false) {
                    self.find('.type-opportunity-section.fieldset-step').find('.open-close-button').find('a').trigger('click');
                }
            }

            // 7 - Who to serve
            if(parameters['age-group']) {
                self.find('select[name="age-group"]').val(parameters['age-group']);
                self.find('select[name="age-group"]').multiselect('reload');
            }
            if(parameters['gender']) {
                self.find('select[name="gender"]').val(parameters['gender']);
                self.find('select[name="gender"]').multiselect('reload');
            }
            if(parameters['population']) {
                self.find('select[name="population"]').val(parameters['population']);
                self.find('select[name="population"]').multiselect('reload');
            }

            if (parameters['age-group'] || parameters['gender'] || parameters['population'] || parameters['organization-serve']) {
                if(self.find('.who-toserve-section.fieldset-step').find('.open-close-button').find('a').hasClass('close-button') == false) {
                    self.find('.who-toserve-section.fieldset-step').find('.open-close-button').find('a').trigger('click');
                }
            }


            // 8 - Appropiate For
            self.find('input[name="age_volunteer_specific"]').val(parameters.age_volunteer_specific);
            self.find('input[name="age_volunteer"]').prop('checked', false);
            self.find('input[name="other_criteria"]').prop('checked', false);

            if(typeof parameters.age_volunteer === 'object') {
                parameters.age_volunteer.forEach(function(ageVolunteer) {
                    self.find('input[name="age_volunteer"][value="' + ageVolunteer + '"]').prop('checked', true);
                });
            }
            else if(parameters.age_volunteer) {
                self.find('input[name="age_volunteer"][value="' + parameters.age_volunteer + '"]').prop('checked', true);
            }

            if(typeof parameters.other_criteria === 'object') {
                parameters.other_criteria.forEach(function(criteria) {
                    self.find('input[name="other_criteria"][value="' + criteria + '"]').prop('checked', true);
                });
            }
            else if(parameters.other_criteria) {
                self.find('input[name="other_criteria"][value="' + parameters.other_criteria + '"]').prop('checked', true);
            }

            if(parameters.age_volunteer || parameters.other_criteria) {
                if(self.find('.appropiate-for-section.fieldset-step').find('.open-close-button').find('a').hasClass('close-button') == false) {
                    self.find('.appropiate-for-section.fieldset-step').find('.open-close-button').find('a').trigger('click');
                }
            }

            // 9 - Invitation Code
            if(parameters.enter_code_invitation_code) {
                self.find('input[name="enter_code_invitation_code"]').val(parameters.enter_code_invitation_code);

                if(self.find('.invitation-code-section.fieldset-step').find('.open-close-button').find('a').hasClass('close-button') == false) {
                    self.find('.invitation-code-section.fieldset-step').find('.open-close-button').find('a').trigger('click');
                }
            }

            // 10 - My Org Section
            if(parameters.my_programs) {
                self.find('select[name="my_programs"]').val(parameters.my_programs);
                self.find('select[name="my_programs"]').multiselect('reload');
            }

            if(parameters.my_causes) {
                self.find('select[name="my_causes"]').val(parameters.my_causes);
                self.find('select[name="my_causes"]').multiselect('reload');
            }

            if(parameters.my_programs || parameters.my_causes) {
                if(self.find('.my-org-section.fieldset-step').find('.open-close-button').find('a').hasClass('close-button') == false) {
                    self.find('.my-org-section.fieldset-step').find('.open-close-button').find('a').trigger('click');
                }
            }

            // 11 - My searches
            if(parameters.my_saved_searches) {
                self.find('select[name="my_saved_searches"]').val(parameters.my_saved_searches);

                if(self.find('.my-searches-section.fieldset-step').find('.open-close-button').find('a').hasClass('close-button') == false) {
                    self.find('.my-searches-section.fieldset-step').find('.open-close-button').find('a').trigger('click');
                }
            }

            self.find('input[name="save_current_search_as"]').val('');

            var facets = JSON.parse(jsonData["facets"]);

            update_dropdowns_filters(self, facets, parameters, true);
            review_filter_view_by(self);   

            //Update localStorage
            formData = self.find('form').serializeObject();
            _assign_value_json_local_storage('searchresultblock-' + blockId, formData);
        }
    }
}

function searchresult_get_dropdown_values(self, processingContainer, blockId, processingWithDropdownValues) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    $.ajax({
        method: "POST",
        url: urlSite + "search/GetDropdownValuesSearchResult",
        data: { blockId: blockId },
        beforeSend: function () {
            //Display processing
            if(processingWithDropdownValues) {
                processingContainer.show();
            }
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);
        var savedSearches = [];

        if(jsonData) {
            if(jsonData['message'] === 'User not logged') { //Get saved searches from localstorage
                var searchResultId = self.find('input[name="searchResultId"]').val();
                var savedSearchesLocalStorage = localStorage.getItem('saved-searches-search-result-' + searchResultId);

                if(savedSearchesLocalStorage) {
                    savedSearches = JSON.parse(savedSearchesLocalStorage);
                }

                //Add class to identify is anonymous user
                self.find('select[name="my_saved_searches"]').addClass('anonymous');
            }
            else {
                savedSearches = jsonData.savedSearches;

                //Remove class to identify is not anonymous user
                self.find('select[name="my_saved_searches"]').removeClass('anonymous');
            }

            self.find('select[name="my_saved_searches"]').empty();
            self.find('select[name="my_saved_searches"]').append('<option value="">'+ window.translation.select_a_search +'</option>');

            //Populate saved searches listing
            if(savedSearches.length > 0) {
                if(savedSearches) {
                    savedSearches.forEach(function(search) {
                        self.find('select[name="my_saved_searches"]').append('<option value="' + search.idSearch + '">' + search.name + '</option>');
                    });
                }
            }
        }

        if(processingWithDropdownValues) {
            processingContainer.hide();
        }
    });
}

function searchresult_append_opportunity_container(ocurrenceInfo, occurrenceContainer, showImage,showOrganizationName) {
    var sid = ocurrenceInfo['SID'];
    var searchresultblock = occurrenceContainer.parents('.searchresultblock').first();
    var openIn = searchresultblock.find('input[name="OpenOppIn"]').val();
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var multiTimeZone = (searchresultblock.find('input[name="MultiTimeZone"]').length > 0) ? searchresultblock.find('input[name="MultiTimeZone"]').val().toLowerCase() == "true" : false;
    var displayTimeZoneMode = (searchresultblock.find('input[name="DisplayTimeZoneMode"]').length > 0) ? searchresultblock.find('input[name="DisplayTimeZoneMode"]').val() : '';
    var siteTimeZone = (searchresultblock.find('input[name="SiteTimeZone"]').length > 0) ? searchresultblock.find('input[name="SiteTimeZone"]').val() : '';

    if (occurrenceContainer.find('.opportunity-container[data-occurrence-id="' + sid + '"]').length === 0) {
        var durationOccurrence = ocurrenceInfo['Duration'];
        var dateOccurrence = ocurrenceInfo['DateOccurrence'];
        var timeZone = ocurrenceInfo['TimeZone'];
        var timeZoneAbbreviation = ocurrenceInfo['TimeZoneAbbreviation'];
        var timeOccurrence = ocurrenceInfo['TimeOcurrence'];
        var locationOccurrence = ocurrenceInfo['Location'];
        var description = ocurrenceInfo['Description'];
        var imageUrl = ocurrenceInfo['ImageURL'];
        var isOpportunity55 = ocurrenceInfo['IsOpportunity55'];
        var occurrenceMore = ocurrenceInfo['OccurrencesMore'];
        var spotsAvailable = ocurrenceInfo['SpotsAvailable'];
        var title = ocurrenceInfo['Title'];
        var type = ocurrenceInfo['Type'];
        var typeIndicator = ocurrenceInfo['TypeIndicator'];
        var urlImage = (imageUrl) ? "'"+imageUrl+"'" : "/img/placeholder_thumbnail.png";
        var ocurrencesVisibles = occurrenceContainer.find('.opportunity-container').length;
        var classContainer = (ocurrencesVisibles >= 5) ? 'hide-custom' : '';
        var classShowImage = (showImage !== 'True') ? 'image-hidden' : '';
        var titleTypeIndicator = window.translation.regular_opportunities;
        var waitlistEnabled = ocurrenceInfo['waitlistEnabled'];

        var OrganizationName =(showOrganizationName === 'True' && ocurrenceInfo['OrganizationName'] != null )? '<span class="organization-name"><a href="'+ocurrenceInfo['OrganizationUrl']+'">'+ocurrenceInfo['OrganizationName']+'</a></span>':'';

        
        var miniSitePath = (ocurrenceInfo['MiniSitePath'] != null && ocurrenceInfo['MiniSitePath'] !== undefined && ocurrenceInfo['MiniSitePath'] != '')?fix_minisite_path(ocurrenceInfo['MiniSitePath']):"";

        var occurrenceUrl =  urlSite + 'opportunity/' + sid;

            if(ocurrenceInfo['IsExternalOpportunity'] == true) 
                occurrenceUrl = ocurrenceInfo['OccurrenceUrl'];
            else if(miniSitePath.length > 0)
                occurrenceUrl = miniSitePath + "opportunity/" + sid;

        var cmtoken = (searchresultblock.find('input[name="cmtoken"]').length > 0) ? searchresultblock.find('input[name="cmtoken"]').val() : '';
        var hocInstanceId = (searchresultblock.find('input[name="hocInstanceId"]').length > 0) ? searchresultblock.find('input[name="hocInstanceId"]').val() : '';
        var contactId = (searchresultblock.find('input[name="contactId"]').length > 0) ? searchresultblock.find('input[name="contactId"]').val() : '';
        var siteId = (searchresultblock.find('input[name="siteId"]').length > 0) ? searchresultblock.find('input[name="siteId"]').val() : '';
        var returnUrl = (searchresultblock.find('input[name="returnUrl"]').length > 0) ? searchresultblock.find('input[name="returnUrl"]').val() : '';

        var additionalClass = "";

        if (($("div.searchresultblock input[name='showpopupexternalopportunities']").length > 0) && (ocurrenceInfo['IsExternalOpportunity'] == true)) {
            additionalClass = " external-opportunity-information";
        }

        if(typeIndicator) {
            if (typeIndicator === 'Filled')
            {
                titleTypeIndicator = window.translation.filled_opportunities;
            }
            else if (typeIndicator === 'Training')
            {
                titleTypeIndicator = window.translation.training;
            }
            else if (typeIndicator === 'SpecialEvents')
            {
                titleTypeIndicator = window.translation.special_events;
            }
        }

        if(cmtoken) {
            if(occurrenceUrl.indexOf('?') !== -1) {
                occurrenceUrl += '&hoctoken=' + cmtoken;
            }
            else {
                occurrenceUrl += '?hoctoken=' + cmtoken;
            }

            if(hocInstanceId) {
                occurrenceUrl += '&hocInstanceId=' + hocInstanceId;
            }

            if(contactId) {
                occurrenceUrl += '&contactId=' + contactId;
            }

            if(siteId) {
                occurrenceUrl += '&siteId=' + contactId;
            }

            if(returnUrl) {
                occurrenceUrl += '&returnUrl=' + returnUrl;
            }
        }

        var opportunityHTML = '<div class="opportunity-container ' + classContainer + '" data-occurrence-id="' + sid + '">';

        if(typeIndicator === 'Filled') {
            opportunityHTML += '<div class="filled-background"></div>';
        }

        var target = "_self";
        if (openIn === "NEW_TAB")
            target = "_blank";

        if(showImage === 'True') {
            opportunityHTML += '<div class="image-background" style="background:url(' + urlImage + ') center center;">'
                + '<div class="description-container ' + typeIndicator + '">'
                + '<p>'
                + '<a class="hidden-link" target="' + target + '"  href="/opportunity/' + sid + '"></a>'
                + '<span>' + description + '</span>'
                + '<a href="' + occurrenceUrl + '" target="' + target + '" class="' + additionalClass + '">' + window.translation.learn_more + '</a>'
                + '</p>'
                + '</div>'
                + '</div>';
        }

        opportunityHTML +=  '<span data-tooltip aria-haspopup="true" data-disable-hover="false" tabindex="1" title="'+ titleTypeIndicator +'" class="has-tip type_indicator '+ typeIndicator +'">'
                            +   '<span class="circle"></span>'
                            + '</span>';

        if (isOpportunity55 === true) {
            opportunityHTML += '<span data-tooltip aria-haspopup="true" data-disable-hover="false" tabindex="1" title="' + window.translation.opportunities_people_major_55 + '" class="has-tip type_indicator is-major-55">55+</span>';
        }

        opportunityHTML += '<div class="text-container '+ classShowImage +'">'
                            + '<span class="title">'
                            + '<a target="' + target + '" href="' + occurrenceUrl + '" class="' + additionalClass + '">' + title + '</a>'
                            + '</span>'+OrganizationName
                            + '<span class="location">' + locationOccurrence + '</span>';

        if (type === 'DateAndTimeSpecific') {
            if (spotsAvailable == '1') {
                opportunityHTML += '<span class="spots_available">' + window.translation.spot_available_on.replaceAll('{0}', spotsAvailable) + '</span>';
            }
            else {
                opportunityHTML += '<span class="spots_available">' + window.translation.spots_available_on.replaceAll('{0}', spotsAvailable) + '</span>';
            }


            if (displayTimeZoneMode == 'BOTH' || displayTimeZoneMode == 'VIRTUAL_ONLY' && ocurrenceInfo['LocationType'] == "Virtual") {
                if (!multiTimeZone && ocurrenceInfo['LocationType'] != "Virtual") {
                    dateOccurrence += ' ' + (siteTimeZone).replaceAll('_', ' ').toUpperCase();
                }
                else {
                    dateOccurrence += (timeZoneAbbreviation).replaceAll('_', ' ').toUpperCase();
                }
            }

            if (!multiTimeZone) {
                opportunityHTML += '<span class="date_time">' + dateOccurrence + '</span>';
            }
            else {
                opportunityHTML += '<span class="date_time" data-tooltip title="' + timeZone.replaceAll('_', ' ') + '">' + dateOccurrence + '</span>';
            }
            opportunityHTML += '<span class="duration">' + durationOccurrence + '</span>';

            if (spotsAvailable < 1) {
                if (waitlistEnabled) {
                    opportunityHTML += '<a target="' + target + '" href="' + occurrenceUrl + '" class="occurrence_more">' + window.translation.waitlist_available + '</a>';
                } else {
                    opportunityHTML += '<span class="occurrence_more">' + window.translation.waitlist_unavailable + '</span>';
                }
            } else {
                opportunityHTML += '<div class="white_space"></div>';
            }
            
        }
        else {
            opportunityHTML += '<span class="spots_available"></span>';
            opportunityHTML += '<span aria-label="' + window.translation.date + ':' + window.translation.ongoing + '" class="date_time">' + window.translation.ongoing + '</span>';
        }

        opportunityHTML +=  '</div></div>';

        occurrenceContainer.append(opportunityHTML);
    }
}

function searchresult_backend_behaviors() {
    if($('body').hasClass('backend-page') == true) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        
        //Open modal
        $(document).on('click', 'a[data-element-reveal="search-result-block-conf"]', function(){
            var self = $('#search-result-block-conf');
            var formSelector = '#search-result-block-conf';
            var blockId = $(this).attr('data-block-id');
            var elementReveal = "#search-result-block-conf";
            //Open modal
            $('#search-result-block-conf').foundation('open');
            $('#search-result-block-conf').foundation();

            $('#search-result-block-conf .row_calendar_additional_configuration').addClass("hide");
            $('#search-result-block-conf .row_calendar_additional_configuration input[name="default-date"]').val('');
            $('#search-result-block-conf .row_calendar_additional_configuration select[name="open-calendar-as"]').val('Month');

            self.find('input[name="display-additional-button"]').on('change', function () {
                if ($(this).is(':checked') === true) {
                    self.find('.additional-button-section').removeClass('hide');
                } else {
                    self.find('.additional-button-section').addClass('hide');        
                }

            });

            $('select[name="display-format"]').on('change', function () {
                var value = $(this).val();

                if (value === '5' || value === '6' || value === '7') {
                    $(formSelector).find('.fieldset-show-additional-filters').removeClass('hide');
                    $(formSelector).find('.fieldset-show-hide-filters').addClass('hide');
                    $(formSelector).find('.fieldset-show-hide-result-settings').addClass('hide');
                    $(formSelector).find('input[name="display-zipcode-location"]').prop('checked', false);
                    $(formSelector).find('.show-zip-code-location').addClass('hide');
                    $(formSelector).find('.show-image-section').addClass('hide');
                    $(formSelector).find('.show-organization-name-section').addClass('hide');

                    if (value === '5') {
                        $(formSelector).find('.section-only-for-grid-slider').addClass('hide');
                        $(formSelector).find('input[name="display-image"]').prop('checked', false);
                        $(formSelector).find('input[name="display-organization-name"]').prop('checked', false);
                    } else {
                        $(formSelector).find('.section-only-for-grid-slider').removeClass('hide');
                        $(formSelector).find('.fieldset-show-hide-result-settings').removeClass('hide');
                        $(formSelector).find('.show-organization-name-section').removeClass('hide');
                        $(formSelector).find('.show-image-section').removeClass('hide');

                    }


                } else {

                    $(formSelector).find('.fieldset-show-additional-filters').addClass('hide');
                    $(formSelector).find('.fieldset-show-hide-filters').removeClass('hide');
                    $(formSelector).find('.fieldset-show-hide-result-settings').removeClass('hide');

                    if (value === '1' || value === '3') {
                        $('#searchresult-form .sort-by-section').addClass('hide');
                        $('#searchresult-form .sort-type-distance-section').addClass('hide');
                        $('#searchresult-form .display-sort-filter-section').addClass('hide');

                    } else {
                        $('#searchresult-form .sort-by-section').removeClass('hide');
                        $('select[name="sort-by"]').val(0);
                        $('#searchresult-form .sort-type-distance-section').removeClass('hide');
                        $('#searchresult-form .display-sort-filter-section').removeClass('hide');

                    }

                    if (value === '2' || value === '3') {
                        $(formSelector).find('input[name="display-image"]').prop('checked', false);
                        $(formSelector).find('.show-image-section').addClass('hide');
                    } else {
                        $(formSelector).find('.show-image-section').removeClass('hide');
                    }


                    if (value === 3 || value === '3') {
                        $('#searchresult-form').find('.opportunity-type-section').addClass('hide');
                        $('#searchresult-form .hide-past-occ-mobile').removeClass("hide");
                        $('#search-result-block-conf .row_calendar_additional_configuration').removeClass("hide");
                        $('#search-result-block-conf .custom-sort-calendar').removeClass("hide");
                        $('#search-result-block-conf .show-footer-toolbar-calendar').removeClass("hide");
                        $('#search-result-block-conf .custom-sort').addClass("hide");

                    } else {
                        $('#search-result-block-conf .custom-sort-calendar').addClass("hide");
                        $('#search-result-block-conf .show-footer-toolbar-calendar').addClass("hide");
                        $('#search-result-block-conf .custom-sort').removeClass("hide");
                        $('#searchresult-form .hide-past-occ-mobile').addClass("hide");
                        $('#searchresult-form').find('.opportunity-type-section').removeClass('hide');
                        $('#search-result-block-conf .row_calendar_additional_configuration').addClass("hide");

                    }

                    if (value === '0' || value === '1' || value === '4') {
                        $('#search-result-block-conf .show-organization-name-section').removeClass("hide");
                    } else {
                        $('#search-result-block-conf .show-organization-name-section').addClass("hide");
                        $(formSelector).find('input[name="display-organization-name"]').prop('checked', false);
                    }

                } 

            });

            date_picker_input_inner();
            //Initiate jquery validate
            initiate_jquery_validate_reveal($('#searchresult-form'), 'searchresult-form');
            authorized_for_in_advance_section('#searchresult-form');
            cleanAdvFilter();
            if(blockId && blockId !== '0') {
                //Load data of block
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetSearchResultBlockInfo",
                    data: { blockId: blockId },
                    beforeSend: function () {
                        self.find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult) {

                        hideVisibleOptions(jsonResult.uniqueRegion, '#searchresult-advanced-settings');

                        if (jsonResult.hasCustomFilterSection === true) {
                            self.find('.custom-filter-section-config').removeClass('hide-custom');
                        } else {
                            self.find('.custom-filter-section-config').addClass('hide-custom');
                        }
                        //Set values to modal
                        //Block Info
                        if (jsonResult.blockInfo) {
                            self.find('input[name="block_id"]').val(jsonResult.blockInfo.ID);
                            self.find('input[name="system_name"]').val(jsonResult.blockInfo.BlockName);
                            self.find('select[name="region"]').val(jsonResult.blockInfo.Region);
                            self.find('input[name="sort_weight"]').val(jsonResult.blockInfo.Weight);
                            self.find('input[name="css_class"]').val(jsonResult.blockInfo.CssClass);

                            if (jsonResult.blockInfo.subsiteId !== '0' && jsonResult.blockInfo.subsiteId !== 0) {
                                if (self.find('select[name="subsite_id"]').length > 0) {
                                    self.find('select[name="subsite_id"]').val(jsonResult.blockInfo.subsiteId);
                                } else {
                                    self.find('input[name="subsite_id"]').val(jsonResult.blockInfo.subsiteId);
                                }
                            }

                            if (jsonResult.blockInfo.ShowTitle) {
                                self.find('input[name="searchresult_show_title"]').val(jsonResult.blockInfo.ShowTitle);
                                self.find('input.searchresult-show-title').prop('checked', true);
                            }
                            else {
                                self.find('input[name="searchresult_show_title"]').val(null);
                                self.find('input.searchresult-show-title').prop('checked', false);
                            }

                            if (jsonResult.blockInfo.Enabled) {
                                self.find('input[name="searchresult_enabled"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="searchresult_enabled"]').prop('checked', false);
                            }

                            self.find('input#searchresult_visibility_' + jsonResult.blockInfo.Visibility).prop('checked', true);
                            self.find('textarea[name="visibility_urls"]').val(jsonResult.blockInfo.VisibilityUrls);
                            self.find('select[name="open-opportunity-in"]').val(jsonResult.cmsBlock.OpenOpportunityIn);
                            self.find('input[name="numberofopp"]').val(jsonResult.cmsBlock.NumberOpportunities);

                            if (jsonResult.blockInfo.Visibility != 0) {
                                self.find('#searchresult_exception_url_container').removeClass('is-hidden');
                            }
                            else {
                                self.find('#searchresult_exception_url_container').addClass('is-hidden');
                            }

                            self.find('select[name="advance-setting-authorized-for"]').val(jsonResult.blockInfo.AuthorizedFor);
                            self.find('select[name="advance-setting-authorized-for-rol"]').val(jsonResult.blockInfo.AuthorizedForRole);

                            if (jsonResult.blockInfo.AuthorizedFor == 1) {
                                self.find('.authorized-for-role').removeClass("hide");
                            }
                        }

                        //Cms Info
                        if (jsonResult.cmsBlock) {

                            self.find('input[name="numberItems"]').val(jsonResult.cmsBlock.ItemsPerPage);
                            self.find('select[name="display-format"]').val(jsonResult.cmsBlock.Format);
                            if (jsonResult.cmsBlock.Format === 5 || jsonResult.cmsBlock.Format === 6 || jsonResult.cmsBlock.Format === 7) {
                                $('#searchresult-form').find('.fieldset-show-additional-filters').removeClass('hide');
                                $('#searchresult-form').find('.fieldset-show-hide-result-settings').addClass('hide');
                                $('#searchresult-form').find('.fieldset-show-hide-filters').addClass('hide');

                                if (jsonResult.cmsBlock.Format === 5) {
                                    $('#searchresult-form').find('.section-only-for-grid-slider').addClass('hide');
                                } else {
                                    $('#searchresult-form').find('.section-only-for-grid-slider').removeClass('hide');
                                }

                            } else {
                                $('#searchresult-form').find('.fieldset-show-additional-filters').addClass('hide');
                                $('#searchresult-form').find('.fieldset-show-hide-result-settings').removeClass('hide');
                                $('#searchresult-form').find('.fieldset-show-hide-filters').removeClass('hide');
                                if (jsonResult.cmsBlock.Format === 1 || jsonResult.cmsBlock.Format === 3) {
                                    $('#searchresult-form .sort-by-section').addClass('hide');
                                    $('#searchresult-form .sort-type-distance-section').addClass('hide');
                                    $('#searchresult-form .display-sort-filter-section').addClass('hide');
                                }
                                else {
                                    $('#searchresult-form .sort-by-section').removeClass('hide');
                                    $('#searchresult-form .sort-type-distance-section').removeClass('hide');
                                }
                                if (jsonResult.cmsBlock.Format === 2 || jsonResult.cmsBlock.Format === 3) {
                                    $('#searchresult-form .show-image-section').addClass('hide');
                                } else {
                                    $('#searchresult-form .show-image-section').removeClass('hide');
                                }


                                if (jsonResult.cmsBlock.Format === 3) {
                                    $('#searchresult-form .hide-past-occ-mobile').removeClass("hide");
                                    $('#search-result-block-conf .row_calendar_additional_configuration').removeClass("hide");
                                    $('#search-result-block-conf .custom-sort-calendar').removeClass("hide");
                                    $('#search-result-block-conf .show-footer-toolbar-calendar').removeClass("hide");
                                    $('#search-result-block-conf .custom-sort').addClass("hide");
                                    if (jsonResult.cmsBlock.CustomSort !== '' && jsonResult.cmsBlock.CustomSort != null)
                                        self.find('select[name="custom-sort-calendar"]').val(jsonResult.cmsBlock.CustomSort);
                                    if (jsonResult.cmsBlock.InitialDateForCalendar !== '' && jsonResult.cmsBlock.InitialDateForCalendar !== undefined)
                                        $('#search-result-block-conf .row_calendar_additional_configuration input[name="default-date"]').val(jsonResult.cmsBlock.InitialDateForCalendar);

                                    if (jsonResult.cmsBlock.CalendarOpenAs !== '' && jsonResult.cmsBlock.CalendarOpenAs !== undefined)
                                        $('#search-result-block-conf .row_calendar_additional_configuration select[name="open-calendar-as"]').val(jsonResult.cmsBlock.CalendarOpenAs);

                                } else {
                                    $('#searchresult-form .hide-past-occ-mobile').addClass("hide");
                                    $('#search-result-block-conf .custom-sort').removeClass("hide");
                                    $('#search-result-block-conf .custom-sort-calendar').addClass("hide");
                                    $('#search-result-block-conf .show-footer-toolbar-calendar').addClass("hide");
                                    self.find('input[name="custom-sort"]').val(jsonResult.cmsBlock.CustomSort);
                                }



                            }

                            if (jsonResult.cmsBlock.LinkLocation === '' || jsonResult.cmsBlock.LinkLocation === null)
                                jsonResult.cmsBlock.LinkLocation = 'IN_TITLE';
                                

                            self.find('select[name="opportunity-link-location"]').val(jsonResult.cmsBlock.LinkLocation);

                            if (jsonResult.cmsBlock.ShowAdditionalButton === true) {
                                self.find('input[name="display-additional-button"]').prop('checked', true);
                                self.find('input[name="additional-button-text"]').val(jsonResult.cmsBlock.ButtonText);
                                self.find('input[name="additional-button-url"]').val(jsonResult.cmsBlock.ButtonUrl);
                                self.find('select[name="additional-button-type"]').val(jsonResult.cmsBlock.ButtonType);

                                self.find('.additional-button-section').removeClass('hide');

                            } else {
                                self.find('input[name="display-additional-button"]').prop('checked', false);
                                self.find('input[name="additional-button-text"]').val('');
                                self.find('input[name="additional-button-url"]').val('');
                                self.find('.additional-button-section').addClass('hide');
                            }

                            if (jsonResult.cmsBlock.ShowOpportunityTitle === true) {
                                self.find('input[name="display-opportunity-title"]').prop('checked', true);
                            } else {
                                self.find('input[name="display-opportunity-title"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowShortDescription === true) {
                                self.find('input[name="display-opportunity-desc"]').prop('checked', true);
                            } else {
                                self.find('input[name="display-opportunity-desc"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowLocation === true) {
                                self.find('input[name="display-location"]').prop('checked', true);
                            } else {
                                self.find('input[name="display-location"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowAvailableSpot === true) {
                                self.find('input[name="display-spots-available"]').prop('checked', true);
                            } else {
                                self.find('input[name="display-spots-available"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowDateTime === true) {
                                self.find('input[name="display-opp-dates"]').prop('checked', true);
                            } else {
                                self.find('input[name="display-opp-dates"]').prop('checked', false);
                            }


                            self.find('select[name="sort-by"]').val(jsonResult.cmsBlock.SortBy);
                            if (jsonResult.cmsBlock.SortBy === 0) {                                
                                if (jsonResult.cmsBlock.Format === 0 || jsonResult.cmsBlock.Format === 2)
                                    $('#searchresult-form .sort-type-distance-section').removeClass('hide');
                                else
                                    $('#searchresult-form .sort-type-distance-section').addClass('hide');
                            } else {
                                $('#searchresult-form .sort-type-distance-section').addClass('hide');
                            }


                            self.find('select[name="distance-sort-by"]').val(jsonResult.cmsBlock.DistanceSortType);

                            self.find('input[name="searchresult-block-id"]').val(jsonResult.cmsBlock.ID);
                            self.find('select[name="default_distance"]').val(jsonResult.cmsBlock.DefaultValueDistance);

                            if (jsonResult.cmsBlock.ShowCustomFilter === true) {
                                self.find('input[name="display-custom-filter-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-custom-filter-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowKeyword === true) {
                                self.find('input[name="display-keywords"]').prop('checked', true);
                            } else {
                                self.find('input[name="display-keywords"]').prop('checked', false);

                            }

                            if (jsonResult.cmsBlock.ShowFilterAsTag === true) {
                                self.find('input[name="display-filter-as-tag"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-filter-as-tag"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowAutoCompleteFilter === true) {
                                self.find('input[name="display-autocomplete-filter"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-autocomplete-filter"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowFooterToolbar === true) {
                                self.find('input[name="show-footer-toolbar-calendar"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="show-footer-toolbar-calendar"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.SearchWhenFilterChange === true) {
                                self.find('input[name="search-when-filter-change"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="search-when-filter-change"]').prop('checked', false);
                            }



                            if (jsonResult.cmsBlock.ShowSortFilters && jsonResult.cmsBlock.ShowSortFilters == true) {
                                self.find('input[name="display-sort-by-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-sort-by-section"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowAvailabilitySection) {
                                self.find('input[name="display-availablity-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-availablity-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowWhoToServeSection) {
                                self.find('input[name="display-who-to-serve-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-who-to-serve-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowInvitationCodeSection) {
                                self.find('input[name="display-invitation-code-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-invitation-code-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowMySearchesSection) {
                                self.find('input[name="display-my-searches-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-my-searches-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowViewBySection) {
                                self.find('input[name="display-view-by-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-view-by-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowTypeOpportunitySection) {
                                self.find('input[name="display-type-opportunity-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-type-opportunity-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowAppropiateForSection) {
                                self.find('input[name="display-appropiate-for-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-appropiate-for-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowMyOrgSection) {
                                self.find('input[name="display-my-org-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-my-org-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.DisplayDistanceField) {
                                self.find('input[name="display-distance-field"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-distance-field"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowImage) {
                                self.find('input[name="display-image"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-image"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowCausesDropdown) {
                                self.find('input[name="display-my-causes-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-my-causes-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowZipCode) {
                                self.find('input[name="display-zipcode-location"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-zipcode-location"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowOrganizationName) {
                                self.find('input[name="display-organization-name"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-organization-name"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowLocationTypes) {
                                self.find('input[name="display-location-types-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-location-types-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowScheduleType) {
                                self.find('input[name="display-schedule-type"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-schedule-type"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowIssueAreasAddress) {
                                self.find('input[name="display-issue-areas-address"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-issue-areas-address"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowSkills) {
                                self.find('input[name="display-skills"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-skills"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.DisplayLocationSection) {
                                self.find('input[name="display-location-section"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-location-section"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowActivityType) {
                                self.find('input[name="display-activity-type"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-activity-type"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowParticipateEvent) {
                                self.find('input[name="display-participate-event"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-participate-event"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowManagedBy) {
                                self.find('input[name="display-managed-by"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-managed-by"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowOrganizationsServe) {
                                self.find('input[name="display-organizations-serve"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-organizations-serve"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowAgeGroup) {
                                self.find('input[name="display-age-group"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-age-group"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowGender) {
                                self.find('input[name="display-gender"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-gender"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowPopulation) {
                                self.find('input[name="display-population"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-population"]').prop('checked', false);
                            }


                            if (jsonResult.cmsBlock.ShowAgeVolunteer) {
                                self.find('input[name="display-age-volunteer"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-age-volunteer"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowCourtOrderedVolunteers) {
                                self.find('input[name="display-court-ordered-volunteers"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-court-ordered-volunteers"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowGroups) {
                                self.find('input[name="display-groups"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-groups"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.ShowSeniorsRSVP) {
                                self.find('input[name="display-seniors-rsvp"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-seniors-rsvp"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.ShowCityStateZipCode) {
                                self.find('input[name="display-city-state-zipcode"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="display-city-state-zipcode"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.EnableAutoCompleteLocation === true) {
                                self.find('input[name="location-autocomplete-address"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="location-autocomplete-address"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.HidePastOccurrenceMobile === true) {
                                self.find('input[name="hide-past-occ-mobile"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="hide-past-occ-mobile"]').prop('checked', false);
                            }


                            if (jsonResult.cmsBlock.ShowDates === true) {
                                self.find('input[name="display-dates-section"]').prop('checked', true);
                            } else {
                                self.find('input[name="display-dates-section"]').prop('checked', false);
                            }


                            self.find('select[name="location_type"]').val(jsonResult.cmsBlock.LocationTypeCriteria);
                            self.find('select[name="opportunity_type"]').val(jsonResult.cmsBlock.ProjectTypeCriteria);
                            self.find('select[name="manage_by"]').val(jsonResult.cmsBlock.ManageByCriteria);
                            self.find('select[name="manage_by"]').val(jsonResult.cmsBlock.ManageByCriteria);
                            self.find('input[name="occstardate"]').val(jsonResult.cmsBlock.OccStarDate);
                            self.find('input[name="occenddate"]').val(jsonResult.cmsBlock.OccEndDate);

                            if (jsonResult.cmsBlock.DisplayOnlyWithImage === true) {
                                self.find('input[name="only_with_images"]').prop('checked', true);
                            } else {
                                self.find('input[name="only_with_images"]').prop('checked', false);
                            }

                        }

                        //Language Info
                        if (jsonResult.languagesInfo) {
                            jsonResult.languagesInfo.forEach(function (languageInfo) {
                                var languageId = languageInfo.languageID;

                                self.find('input[name="title-' + languageId + '"]').val(languageInfo.title);
                            });
                        }

                        //Manage multiregions
                        if (jsonResult.regionsMultiple) {
                            //Apply multiselect widget to region select
                            apply_backend_multiselect_group(formSelector + ' select[name="region_multiple"]', false, jsonResult.regionsMultiple);
                        }

                        if (jsonResult.blockInfo.SystemName === 'System Default Search') {
                            $(formSelector).find('select[name="display-format"] option[value="3"]').hide();
                            $(formSelector).find('select[name="display-format"] option[value="1"]').hide();

                            $(formSelector).find('select[name="display-format"] option[value="2"]').show();
                            $(formSelector).find('select[name="display-format"] option[value="0"]').show();

                            $(formSelector).find('input[name="system_name"]').prop('readonly', true);
                            $(formSelector).find('.for-corporate-page-section').addClass('hide');

                        } else if (jsonResult.blockInfo.SystemName === 'System Default Calendar') {
                            $(formSelector).find('select[name="display-format"] option[value="2"]').hide();
                            $(formSelector).find('select[name="display-format"] option[value="0"]').hide();

                            $(formSelector).find('select[name="display-format"] option[value="3"]').show();
                            $(formSelector).find('select[name="display-format"] option[value="1"]').show();
                            $(formSelector).find('input[name="system_name"]').prop('readonly', true);
                            $(formSelector).find('.for-corporate-page-section').addClass('hide');

                        } else {
                            $(formSelector).find('select[name="display-format"] option[value="3"]').show();
                            $(formSelector).find('select[name="display-format"] option[value="1"]').show();
                            $(formSelector).find('select[name="display-format"] option[value="2"]').show();
                            $(formSelector).find('select[name="display-format"] option[value="0"]').show();
                            $(formSelector).find('input[name="system_name"]').removeAttr('readonly');
                            $(formSelector).find('.for-corporate-page-section').removeClass('hide');
                        }

                        //Load custom filters
                        if (jsonResult.cmsBlock.CustomFilters) {
                            var customFilters = JSON.parse(jsonResult.cmsBlock.CustomFilters);

                            $('#searchresult-form .filter_rules .rule').remove();
                            if (customFilters.criteria != null) {
                                $(formSelector).find('input[name="advanced-criteria-input"]').val(customFilters.criteria);
                            }
                            else {
                                $(formSelector).find('input[name="advanced-criteria-input"]').val('');
                            }
                            if (customFilters.filters && customFilters.filters.length > 0) {
                                $('#searchresult-form .without_rules').addClass('hide-custom');
                                customFilters.filters.forEach(function (item) {
                                    if (item != undefined && item != null) {
                                        addRuleFilterSearch(item.field, item.comparisonValue);
                                    }
                                });
                            }
                        } else {
                            $('#searchresult-form .filter_rules .rule').remove();
                            $('#searchresult-form .without_rules').removeClass('hide-custom');
                            $(formSelector).find('input[name="advanced-criteria-input"]').val('');
                        }                         

                        if (jsonResult.cmsBlock.IsForCorporatePage === true) {
                            $(formSelector).find('input[name="for-corporate-page"]').prop('checked', true);
                            $(formSelector).find('.corporate-page-result').removeClass('hide');
                            $(formSelector).find('.default-display-format-label').removeClass('hide');
                            $(formSelector).find('.display-format-label').addClass('hide');
                        }

                        else {
                            $(formSelector).find('input[name="for-corporate-page"]').prop('checked', false);
                            $(formSelector).find('.corporate-page-result').addClass('hide');
                            $(formSelector).find('.default-display-format-label').addClass('hide');
                            $(formSelector).find('.display-format-label').removeClass('hide');
                           
                        }
                            

                        $(formSelector).find('input[name="corporate-salesforce-org-id"]').val(jsonResult.cmsBlock.CorporateSalesforceID);

                        if (jsonResult.cmsBlock.CorporateResultText !== null && jsonResult.cmsBlock.CorporateResultText !== undefined && jsonResult.cmsBlock.CorporateResultText !== '') {
                            var items_languages = JSON.parse(jsonResult.cmsBlock.CorporateResultText);
                            items_languages.forEach(function (value, index) {
                                var selector = "corporate-result-" + value.languageID;
                                initialize_ckeditor_SearchResult('corporate-result-', value.languageID);
                                $(formSelector).find('textarea[name="' + selector + '"]').text(value.title);
                                add_event_for_ckeditor('corporate-result-' + value.languageID, "#searchresult-form");

                            });
                        }

                        //Filters Search Block
                        //Populate selects with parameters
                        backend_load_values_from_sf_populate_modal_searchresult(elementReveal, true, jsonResult, true);
                        if ((jsonResult.blockInfo.SystemName === 'System Default Calendar'
                            || jsonResult.blockInfo.SystemName === 'System Default Search') &&
                            (!$('body').hasClass('hoc-volunteer-system')
                            && !$('body').hasClass('hoc-volunteer-system-hybrid'))) {
                            $('#searchresult-form').find('.region-section').addClass('hide');
                            $('#searchresult-form').find('.show-visible-section').addClass('hide');
                        } else {
                            $('#searchresult-form').find('.region-section').removeClass('hide');
                            $('#searchresult-form').find('.show-visible-section').removeClass('hide');

                        }


                        if (jsonResult.cmsBlock !== null && jsonResult.cmsBlock !== undefined) {
                            if (jsonResult.cmsBlock.Format === 3) {
                                setTimeout(function () {
                                    $('#searchresult-form').find('.opportunity-type-section').addClass('hide');
                                }, 2000);
                                
                            } else {
                                $('#searchresult-form').find('.opportunity-type-section').removeClass('hide');
                            }

                        }

                        $('select[name="display-format"]').trigger("change");

                    }

                    //Set id of version in link rollback
                    self.find('.rollback-link').attr('data-block-id', blockId);
                    self.find('.rollback-link').show();
                    self.find('a.delete_block').show();

                    add_event_for_fields_in_modal('#searchresult-form');
                    Active_Invitation_Code_Section(self);
                    //self.find('.processing_screen').hide();
                });
            }
            else {
                //Hide remove link
                self.find('a.delete_block').hide();
                self.find('.rollback-link').hide();
                $('#searchresult-form .hide-past-occ-mobile').addClass("hide");
                self.find('.input-group-button.submit-button').css({
                    display: 'block',
                    width: '100%'
                });
                hideVisibleOptions(false, '#searchresult-advanced-settings');
                self.find('input[name="css_class"]').val('');
                self.find('.opportunity-type-section').removeClass('hide');
                //Clean modal
                self.find('input[name="searchresult-block-id"]').val('0');
                self.find('input[name="block_id"]').val(0);
                self.find('input[name="system_name"]').val(0);
                self.find('input[name="system_name"]').val('');
                self.find('input[name="sort_weight"]').val(0);
                self.find('.tabs-panel').find('input').val('');
                self.find('input[name="searchresult_show_title"]').val(null);
                self.find('input.searchresult-show-title').prop('checked', false);
                self.find('input[name="searchresult_enabled"]').prop('checked', true);
                //self.find('input#searchresult_visibility_0').prop('checked', true);
                self.find('textarea[name="visibility_urls"]').val('');
                self.find('#searchresult_exception_url_container').removeClass('is-hidden');
                self.find('input[name="searchresult_visible_to"][value="2"]').prop('checked', true);
                self.find('select[name="display-format"]').val(0);
                self.find('select[name="default_distance"]').val(0);
                self.find('input[name="custom-sort"]').val('');
                self.find('input[name="system_name"]').removeAttr('readonly');
                self.find('input[name="display-availablity-section"]').prop('checked', false);
                self.find('input[name="display-who-to-serve-section"]').prop('checked', false);
                self.find('input[name="display-invitation-code-section"]').prop('checked', false);
                self.find('input[name="display-my-searches-section"]').prop('checked', false);
                self.find('input[name="display-view-by-section"]').prop('checked', false);
                self.find('input[name="display-type-opportunity-section"]').prop('checked', false);
                self.find('input[name="display-appropiate-for-section"]').prop('checked', false);
                self.find('input[name="display-my-org-section"]').prop('checked', false);
                self.find('input[name="display-distance-field"]').prop('checked', false);
                self.find('input[name="display-image"]').prop('checked', false);
                self.find('input[name="display-zipcode-location"]').prop('checked', false);
                self.find('input[name="display-organization-name"]').prop('checked', false);
                self.find('input[name="for-corporate-page"]').prop('checked', false);
                self.find('.default-display-format-label').addClass('hide');
                self.find('input[name="corporate-salesforce-org-id"]').val('');
                self.find('.corporate-page-result').addClass('hide');
                self.find('.region-section').removeClass('hide');
                self.find('.show-visible-section').removeClass('hide');
                self.find('.processing_screen').hide();
                $(formSelector).find('.show-image-section').removeClass('hide');
                $(formSelector).find('.for-corporate-page-section').removeClass('hide');

                $(formSelector).find('.searchResultCMSckeditor').each(function () {
                    $(this).val('');
                    var languageID = $(this).attr('data-language-id');
                    initialize_ckeditor_listingCMS('corporate-result-', languageID);
                });

                //Manage multiregions field
                apply_backend_multiselect_group(formSelector + ' select[name="region_multiple"]', false, '');

                backend_load_values_from_sf_populate_modal_searchresult(elementReveal, true, null, true);

                add_event_for_fields_in_modal('#searchresult-form');
            }

            display_config_sections(self);

            $(formSelector).find('input[name="for-corporate-page"]').on('change', function () {
                if ($(this).is(':checked') === true) {
                    $(formSelector).find('.corporate-page-result').removeClass('hide');
                    $(formSelector).find('.display-format-label').addClass('hide');
                    $(formSelector).find('.default-display-format-label').removeClass('hide');
                } else {
                    $(formSelector).find('.corporate-page-result').addClass('hide');
                    $(formSelector).find('.default-display-format-label').addClass('hide');
                    $(formSelector).find('.display-format-label').removeClass('hide');
                }
            });


            $(formSelector).find('select[name="sort-by"]').on('change', function () {
                var value = $(this).val();
                if (value === '0') {
                    $('#searchresult-form .sort-type-distance-section').removeClass('hide');
                } else {
                    $('#searchresult-form .sort-type-distance-section').addClass('hide');
                }
            });

            var itemsToDisplay = addItemsForAutocomplete();
            $(formSelector).find('input[name="adv_organization_to_Serve"]').autocomplete({
                source: itemsToDisplay,
            });
            $(formSelector).find('input[name="adv_participate_in_event"]').autocomplete({
                source: itemsToDisplay,
            });
        });

        //Save or Update Block
        $(document).on('click', '#searchresult-form button.submit-button', function() {
            var self = $('#search-result-block-conf');
            for (var i in CKEDITOR.instances) {
                if (CKEDITOR.instances[i].name.indexOf("corporate-result") != -1) {
                    //$("#" + CKEDITOR.instances[i].name).text(escape(CKEDITOR.instances[i].getData()));
                    $("#" + CKEDITOR.instances[i].name).val(escape(CKEDITOR.instances[i].getData()));
                    /*if ($("#" + CKEDITOR.instances[i].name).length > 0) {
                    }*/
                }
            }

            if (!validate_url_fields_backend('#search-result-block-conf', 'input[name="searchresult_visible_to"]', 'textarea[name="visibility_urls"]'))
                return false;


            var formData = $("#searchresult-form").serializeObject();

            if ($("#searchresult-form").valid()) {
                
                if ($('#searchresult-form input[name="adv_organization_to_Serve"]').val() !='' || $('#searchresult-form input[name="adv_participate_in_event"]').val() !='' || $('#searchresult-form input[name="adv_invitation_code"]').val() !='') {
                    var ruleList = [];
                    var filterRules = {
                        filters: []
                    }
                    var index = 0;
                    if ($('#searchresult-form input[name="adv_organization_to_Serve"]').val() != '') {
                        ruleList.push({
                            fieldId: index + 1,
                            field: 'searchvo_serve_with_this_org',
                            typeField: 'string',
                            operator: '=',
                            comparisonValue: $('#searchresult-form input[name="adv_organization_to_Serve"]').val(),
                            friendlyFieldName: ''
                        });
                    }
                    index++;
                    if ($('#searchresult-form input[name="adv_participate_in_event"]').val() != '') {
                            ruleList.push({
                            fieldId: index + 1,
                            field: 'searchvo_participate_in_event',
                            typeField: 'string',
                            operator: '=',
                            comparisonValue: $('#searchresult-form input[name="adv_participate_in_event"]').val(),
                            friendlyFieldName: ''
                        });
                    }
                    index++;
                    if ($('#searchresult-form input[name="adv_invitation_code"]').val() != '') {
                            ruleList.push({
                            fieldId: index + 1,
                            field: 'enter_code_invitation_code',
                            typeField: 'string',
                            operator: '=',
                            comparisonValue: $('#searchresult-form input[name="adv_invitation_code"]').val(),
                            friendlyFieldName: ''
                        });
                    }
                    filterRules.filters = ruleList;
                    formData['custom_filters'] = JSON.stringify(filterRules);
                } else {
                    formData['custom_filters'] = '';
                }
                
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/AddOrUpdateSearchResultBlock",
                    data: formData,
                    beforeSend: function () {
                        self.find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult.status === 'ok') {
                        Swal.fire({
                            title: window.translation.success,
                            text: window.translation.search_result_block_saved_successfully,
                            icon: 'success',
                            closeOnConfirm: true

                        }).then(function (result) {
                            self.find('.processing_screen').show();
                            window.location.reload();
                        });
                    }
                    else {
                        Swal.fire({
                            title: window.translation.error,
                            text: jsonResult.message,
                            icon: "error",
                            closeOnConfirm: true
                        });

                    }

                    self.find('.processing_screen').hide();

                    return false;
                });
            }

            return false;
        });

        $(document).on('click', 'a.rollback_action[data-component-type="SearchResultBlock"]', function () {
            var versionId = $(this).data('version-id');
            var componentType = $(this).data('component-type');
            var pageName = $(this).data('pagename');
            var idsversion = $(this).data('idsversion');

            //Logic for CSRF token
            var theForm = $(this).closest('form');
            var requestVerificationToken = '';
            if (theForm !== null) {
                var theDataForm = theForm.serializeObject();
                requestVerificationToken = theDataForm['__RequestVerificationToken'];
            }

            if(componentType === 'SearchResultBlock') {
                if (versionId > 0) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/RestoreComponent",
                        data: {
                            versionId: versionId,
                            pageName: pageName,
                            idsversion: idsversion,
                            "__RequestVerificationToken": requestVerificationToken
                        },
                        beforeSend: function () {
                            $('#rollback-list .processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        $('#rollback-list').foundation('close');

                        //Load versions by componenet
                        if(componentType === 'SearchResultBlock') {
                            rollback_searchresultblock(jsonResult);
                        }
                        $('#rollback-list .processing_screen').hide();
                    });
                }
            }
        });

        $(document).on('change', '#searchresult-form input.searchresult-show-title', function () {
            var checked = $(this).prop('checked');
            $('#searchresult-form input.searchresult-show-title').prop('checked', checked);
            if (checked) {
                $('#searchresult-form input[name="searchresult_show_title"]').val(checked);
            }
            else {
                $('#searchresult-form input[name="searchresult_show_title"]').val(null);
            }
        });
    }
}

function addItemsForAutocomplete() {
    var items = [];
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    $.ajax({
        url: urlSite + 'admin/GetCurrentCustomSessionVariable'
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        jsonResult.forEach(function (item, index) {
            if (item.Token !== undefined && item.Token !== null && item.Token !== '')
                items.push(item.Token);
        });
    });
    return items;
}

function addRuleFilterSearch(fieldToFilter, filter_value) {
    if (fieldToFilter == 'searchvo_serve_with_this_org') {
        $('#searchresult-form input[name="adv_organization_to_Serve"]').val(filter_value);
    }
    else if (fieldToFilter == 'searchvo_participate_in_event') {
        $('#searchresult-form input[name="adv_participate_in_event"]').val(filter_value);
    }else if(fieldToFilter == 'enter_code_invitation_code'){
        $('#searchresult-form input[name="adv_invitation_code"]').val(filter_value);
    }
}

function cleanAdvFilter() {
    $('#searchresult-form input[name="adv_organization_to_Serve"]').val('');
    $('#searchresult-form input[name="adv_participate_in_event"]').val('');
    $('#searchresult-form input[name="adv_invitation_code"]').val('');
}

function rollback_searchresultblock(jsonResult) {
    hideVisibleOptions(jsonResult.uniqueRegion, '#searchresult-advanced-settings');
    
    var self = $('#search-result-block-conf');

    //Populate searchResultBlock info
    if(jsonResult.blockSearchResult.length > 0) {
        jsonResult.blockSearchResult.forEach(function (searchresultblock) {
            self.find('select[name="display-format"]').val(searchresultblock.format);
            if (searchresultblock.format === '1' || searchresultblock.format === '3') {
                $('#searchresult-form .sort-by-section').addClass('hide');
                $('#searchresult-form .display-sort-filter-section').addClass('hide');
            }
            else {
                $('#searchresult-form .display-sort-filter-section').removeClass('hide');
            }
            self.find('input[name="searchresult-block-id"]').val(searchresultblock.ID);
            self.find('select[name="default_distance"]').val(searchresultblock.defaultValueDistance);
            self.find('input[name="custom-sort"]').val(searchresultblock.customSort);

            if(searchresultblock.showAvailabilitySection) {
                self.find('input[name="display-availablity-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-availablity-section"]').prop('checked', false);
            }

            if(searchresultblock.showWhoToServeSection) {
                self.find('input[name="display-who-to-serve-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-who-to-serve-section"]').prop('checked', false);
            }

            if(searchresultblock.showInvitationCodeSection) {
                self.find('input[name="display-invitation-code-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-invitation-code-section"]').prop('checked', false);
            }

            if(searchresultblock.showMySearchesSection) {
                self.find('input[name="display-my-searches-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-my-searches-section"]').prop('checked', false);
            }

            if(searchresultblock.showViewSection) {
                self.find('input[name="display-view-by-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-view-by-section"]').prop('checked', false);
            }

            if(searchresultblock.showTypeOpportunitySection) {
                self.find('input[name="display-type-opportunity-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-type-opportunity-section"]').prop('checked', false);
            }

            if(searchresultblock.showAppropiateForSection) {
                self.find('input[name="display-appropiate-for-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-appropiate-for-section"]').prop('checked', false);
            }

            if(searchresultblock.showMyOrgSection) {
                self.find('input[name="display-my-org-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-my-org-section"]').prop('checked', false);
            }

            if(searchresultblock.displayDistanceField) {
                self.find('input[name="display-distance-field"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-distance-field"]').prop('checked', false);
            }

            if(searchresultblock.showImage) {
                self.find('input[name="display-image"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-image"]').prop('checked', false);
            }

            if(searchresultblock.showCausesDropdown) {
                self.find('input[name="display-my-causes-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-my-causes-section"]').prop('checked', false);
            }

            if(searchresultblock.showZipCode) {
                self.find('input[name="display-zipcode-location"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-zipcode-location"]').prop('checked', false);
            }

            if(searchresultblock.showOrganizationName) {
                self.find('input[name="display-organization-name"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-organization-name"]').prop('checked', false);
            }

            if (searchresultblock.showLocationTypes) {
                self.find('input[name="display-location-types-section"]').prop('checked', true);
            }
            else {
                self.find('input[name="display-location-types-section"]').prop('checked', false);
            }
        });
    } 

    //Populate info of block
    if(jsonResult.blockData) {
        var blockInfo = jsonResult.blockData;

        self.find('input[name="system_name"]').val(blockInfo.SystemName);
        self.find('select[name="region"]').val(blockInfo.Region);
        self.find('input[name="sort_weight"]').val(blockInfo.Weight);

        if (blockInfo.ShowTitle) {
            self.find('input[name="searchresult_show_title"]').val(blockInfo.ShowTitle);
            self.find('input.searchresult-show-title').prop('checked', true);
        }
        else {
            self.find('input[name="searchresult_show_title"]').val(null);
            self.find('input.searchresult-show-title').prop('checked', false);
        }

        if(blockInfo.Enabled) {
            self.find('input[name="searchresult_enabled"]').prop('checked', true);
        }
        else {
            self.find('input[name="searchresult_enabled"]').prop('checked', false);
        }

        self.find('input#searchresult_visibility_' + blockInfo.Visibility).prop('checked', true);
        self.find('textarea[name="visibility_urls"]').val(blockInfo.VisibilityUrls);

        if(blockInfo.Visibility != 0) {
            self.find('#searchresult_exception_url_container').removeClass('is-hidden');
        }
        else {
            self.find('#searchresult_exception_url_container').addClass('is-hidden');
        }
    }

    //Populate info of languages block
    if(jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            self.find('input[name="title-'+ title.Language +'"]').val(title.Title);
        });
    }
}


function make_random_id() {
  var text = "";
  var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

  for (var i = 0; i < 10; i++)
    text += possible.charAt(Math.floor(Math.random() * possible.length));

  return text;
}

function reset_block_search_form() {
    if ($('.searchresultblock').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var url = new URL(window.location.href);
        var c = url.searchParams.get("shareId");

        if (c != null && c.trim() != "") {
            $('.searchresultblock').find('#block-result-filter-text').removeClass('hide');
            $('.searchresultblock').find('#info-filter-text-result').removeClass("hide");
        }


        $('a.new_search_block').on('click', this, function () {
            var blockID = $(this).attr("data-block-id");
            $(this).parents('.searchresultblock').find('form#opportunities-search-block')[0].reset();
            var self = $(this).parents('.searchresultblock');
            var titleLocalStorage = 'searchresultblock-' + blockID;
            //localStorage.removeItem(titleLocalStorage);
            var currUrl = window.location.href;
            localStorage.setItem(titleLocalStorage, "");

            //calendar default view
            if (self.hasClass('search-block-default-calendar')) {
                self.find("#query-string-form-calendar").val('');
                localStorage.setItem('query-string-searchvo-calendar', '');
                sessionStorage.setItem('calendar-search-last-date', '');

            }


            if (currUrl.indexOf("?") != -1) {
                var urlParts = currUrl.split("?");
                var newUrl = urlParts[0];
                window.location = newUrl;
            } else {
                location.reload();
            }
            return false;
        });

    }

}

function update_data_from_autocomplete(self) {

    var items = [];
    self.find('select').each(function () {
        var name = $(this).attr('name');
        var field = $(this);
        if (name !== 'distance' && name !== 'duration') {
            field.find('option').each(function () {
                var value = $(this).attr('value');
                var labelDisplay = $(this).text();
                var categoryname = "";
                if (field.attr('multiple') === "multiple") {
                    var labelfield = $(this).parents('.multi-select-row');
                    categoryname = labelfield.find('label.field-title').text();

                }
                var obj = { label: labelDisplay, field: name, category: categoryname, labelToDisplay: labelDisplay, originalValue: value };
                items.push(obj);
            });
        }
    });
    return items;
}


function generate_autocomplete_keyword(self) {

    if (self.find('input[name="keyword"]').length > 0) {
        var data = update_data_from_autocomplete(self);
        self.find('input[name="keyword"]').autocomplete({
            delay: 0,
            source: data,
            select: function (event, ui) {
                var value = ui.item.originalValue;
                var field = ui.item.field;
                update_multiselect_value(self, field, value, false);
                self.find('input[name="keyword"]').val('');
                refresh_search_result(self, false, true);
                return false;
            }


        }).autocomplete("instance")._renderItem = function (ul, item) {
            var text_to_display = "";
            if (item.category !== undefined && item.category !== null && item.category !== '')
                text_to_display = "<strong>" + item.category + "</strong>: " + item.labelToDisplay;
            else 
                text_to_display = item.labelToDisplay;
            return $("<li>")
                .append(text_to_display)
                .appendTo(ul);
        };
    }

}

function review_filter_view_by(self) {
    if (self.find('.view-by-section').length > 0) {
        var countRegular = 0;
        var countTraining = 0;
        var countFilled = 0;
        var countEvents = 0;
        var countOpp55 = 0;

        var aux = 0;
        aux = self.find('input[name="countRegular"]').val();
        countRegular = parseInt(aux);
        aux = self.find('input[name="countTraining"]').val();
        countTraining = parseInt(aux);
        aux = self.find('input[name="countFilled"]').val();
        countFilled = parseInt(aux);
        aux = self.find('input[name="countEvents"]').val();
        countEvents = parseInt(aux);
        aux = self.find('input[name="countOpp55"]').val();
        countOpp55 = parseInt(aux);

        if (countRegular > 0) {
            self.find('input#regular-opportunities').parents('li').removeClass('hide-custom');
        } else {
            self.find('input#regular-opportunities').parents('li').addClass('hide-custom');
        }

        if (countTraining > 0) {
            self.find('input#training-opportunities').parents('li').removeClass('hide-custom');
        } else {
            self.find('input#training-opportunities').parents('li').addClass('hide-custom');
        }
        if (countFilled > 0) {
            self.find('input#filled-opportunities').parents('li').removeClass('hide-custom');
        } else {
            self.find('input#filled-opportunities').parents('li').addClass('hide-custom');
        }
        if (countEvents > 0) {
            self.find('input#special-events').parents('li').removeClass('hide-custom');
        } else {
            self.find('input#special-events').parents('li').addClass('hide-custom');
        }
        if (countOpp55 > 0) {
            self.find('input#major-55-opportunities').parents('li').removeClass('hide-custom');
        } else {
            self.find('input#major-55-opportunities').parents('li').addClass('hide-custom');
        }


    }
}


function refresh_results_for_default_listing(opportunityContainer, opportunities, self, isViewMore) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    if ($.fn.DataTable.isDataTable(self.find('table#datatable-search-opportunities-block')))
        self.find('table#datatable-search-opportunities-block').DataTable().destroy();
    var targetValue = self.find('input[name="OpenOppIn"]').val();

    if (isViewMore !== true) {
        opportunityContainer.empty();
    }

    var targetSetting = '_self';
    if (targetValue === 'NEW_TAB') {
        targetSetting = '_blank';
    }
    var countFilled = 0;
    var countTraining = 0;
    var countEvents = 0;
    var countRegular = 0;
    var countOpp55 = 0;
    var countRow = 0;
    $.each(opportunities, function (index, item) {
        countRow++;
        var classCurrentOpp = 'blue-key';
        var titleTypeIndicator = window.translation.regular_opportunities;
        if (item.TypeIndicator === 'Filled') {
            countFilled++;
            classCurrentOpp = "light-gray-key";
            titleTypeIndicator = window.translation.filled_opportunities;
        } else if (item.TypeIndicator === 'Training') {
            classCurrentOpp = "black-key";
            countTraining++;
            titleTypeIndicator = window.translation.training;
        } else if (item.TypeIndicator === 'SpecialEvents') {
            classCurrentOpp = "green-key";
            countEvents++;
            titleTypeIndicator = window.translation.special_events;
        } else if (item.TypeIndicator === 'Regular') {
            classCurrentOpp = 'blue-key';
            countRegular++;
            titleTypeIndicator = window.translation.regular_opportunities;
        }

        if (item.IsOpportunity55 === true) {
            countOpp55++;
        }

        var oppUrl = urlSite + 'opportunity/' + item.SID;
        if (item.IsExternalOpportunity === true) {
            oppUrl = item.OccurrenceUrl;
        }

        var classRow = "even";
        if (countRow % 2 !== 0) {
            classRow = "odd";
        }

        var ariaLabelText = window.translation.wcag_search_volunteer_opportunity_group.replaceAll('{0}', titleTypeIndicator);

        var htmlOption = '<tr aria-label="' + ariaLabelText + '" role="row" class="' + classRow + '">';

        htmlOption += '<td data-th="Opportunity"><a class="' + classCurrentOpp + '" target="' + targetSetting + '" href="' + oppUrl + '">' + item.Title + '</a></td>';
        htmlOption += '<td data-th="Organization"><a target="_blank" href="' + item.OrganizationUrl + '" aria-label="' + window.translation.organization + ': ' + item.OrganizationName + '">' + item.OrganizationName + '</a></td>';
        htmlOption += '<td data-th="Where" tabindex="0" aria-label="' + window.translation.location + ':' + item.Location + '">' + item.Location + '</td>';
        htmlOption += '<td data-th="Time" tabindex="0" aria-label="' + item.TimeColumnDataAriaLabel + '" data-order="' + item.StartDateTimeValue + '">' + item.TimeColumnData + '</td>';
        htmlOption += '<td data-th="Distance" tabindex="0" aria-label="' + window.translation.distance + ': ' + item.Distance + '" data-order="' + item.DistanceValue + '">' + item.Distance + '</td>';

        htmlOption += '</tr>';
        opportunityContainer.append(htmlOption);
    });

    self.find('input[name="countRegular"]').val(countRegular);
    self.find('input[name="countTraining"]').val(countTraining);
    self.find('input[name="countFilled"]').val(countFilled);
    self.find('input[name="countEvents"]').val(countEvents);
    self.find('input[name="countOpp55"]').val(countOpp55);

    reload_datatable_for_listing(self, countRow);
}


function searchresult_populate_next_opportunities_listing_default(self, processingContainer, formData, currentRows) {
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var elementViewMore = self.find('.view-more.searchresult-listing');
    var showImage = self.find('input[name="showImage"]').val();
    var searchResultBlockId = self.find('input[name="searchResultId"]').val();
    $.ajax({
        method: "POST",
        url: urlSite + "search/GetOpportunitiesSearchResultBlockListing",
        data: { parameters: formData, currentRows: currentRows, isViewMore: true, blockId: searchResultBlockId },
        beforeSend: function () {
            //Display processing
            processingContainer.removeClass('hide-custom');
            processingContainer.show();
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);

        if (jsonData) {
            if (jsonData['opportunities']) {
                var opportunityContainer = self.find('#datatable-search-opportunities-block tbody');
               // opportunityContainer.empty();
                refresh_results_for_default_listing(opportunityContainer, jsonData['opportunities'], self,true);
            }
            //Hide link if not exits more opportunities
            var recordsReturned = jsonData['opportunities'].length;
            if (jsonData['total'] <= (currentRows + recordsReturned)) {
                elementViewMore.hide();
            }
            else {
                var numberMore = jsonData['total'] - (currentRows + 50);
                elementViewMore.show();

                //Update span of more opportunities
                elementViewMore.find('span.number-more').text(numberMore);
                elementViewMore.find('.view-more-link').removeClass('is-hidden');
            }


            var queryToSend = jsonData['queryToSend'];
            var pathPage = window.location.pathname;
            var queryStringFormCalendar = queryToSend;
            if (queryStringFormCalendar !== null && queryStringFormCalendar !== undefined && queryStringFormCalendar !== '') {
                if (pathPage.indexOf('?') > -1) {
                    pathPage = pathPage + "&" + queryStringFormCalendar;
                } else {
                    pathPage = pathPage + "?" + queryStringFormCalendar;
                }
            }

            var title = "Search - Listing without Tile";
            //Tracking in google tags
            gtag('event', 'page_view', {
                page_title: title,
                page_path: pathPage
            });


        }

        //Hide processing
        processingContainer.addClass('hide-custom');
        processingContainer.hide();
    });

}


function initialize_ckeditor_SearchResult(element, languageId) {
    if ($('#cke_' + element + languageId).length > 0) {
        $('#cke_' + element + languageId).remove();
    }

    var editor = CKEDITOR.replace(element + languageId, {
        //extraPlugins: 'uploadimage,image2',
        //removePlugins: 'image',
        filebrowserBrowseUrl: '/custom-ckfinder/connector',
        filebrowserImageBrowseUrl: '/custom-ckfinder/connector?type=Images',
        filebrowserUploadUrl: '/ckfinder/connector?command=QuickUpload',
        filebrowserImageUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Images',
        filebrowserWindowWidth: 800,
        filebrowserWindowHeight: 600,
        customConfig: '/js/config/ckeditor_config.js',
        height: 100
    });
    CKFinder.setupCKEditor(editor);
}


function search_result_as_corporate_page() {
    if ($('.searchresultblock.search-block-as-corporate').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        $('.searchresultblock.search-block-as-corporate').each(function () {
            var self = $(this);
            var processingContainer = self.find('.processing_screen');

            var listingFormat = self.find('input[name="listingFormat"]').val();
            var invitationCode = self.find('input[name="invitationCode"]').val();
            var default1 = false;
            var default2 = false;
            var default3 = false;
            var default4 = false;
            var default5 = false;
            if (listingFormat === 'LISTING_WITH_TILES') 
                default1 = true;
            else if (listingFormat === 'LISTING_WITHOUT_TILES')
                default2 = true;
            else if (listingFormat === 'CALENDAR_WITH_TILES')
                default3 = true;
            else if (listingFormat === 'CALENDAR_WITHOUT_TILES')
                default4 = true;
            else if (listingFormat === 'LISTING_WITH_TILE_FLIP')
                default5 = true;
            if ($('#multiple-views').length > 0) {
                var options = {
                    dataUrl: urlSite + 'Partners/getOpportunitiesForCorporatePartner',
                    requestType: 'POST',
                    requestData: function () {
                        var data = [];

                        return data;
                    },
                    dataToViews: function () {
                        var viewsData = self.find('#multiple-views').multipleViews().viewsData;
                        var rowsPerPage = window.rowPerPage;
                        var searchResultID = self.find('input[name="searchResultId"]').val();
                        var dataToView = {
                            "data": viewsData.data,
                            "rowsPerPage": rowsPerPage,
                            "searchResultID": searchResultID,
                            "invitationCode": invitationCode,
                        };
                        return dataToView;

                    },
                    views: [
                        {
                            id: "view-listing-with-tile",
                            viewUrl: "/Partners/CorporateListingWithTile",
                            default: default1
                        },
                        {
                            id: "view-listing-without-tile",
                            viewUrl: "/Partners/CorporateListingWithoutTile",
                            default: default2
                        },
                        {
                            id: "view-calendar-with-tile",
                            viewUrl: "/Partners/CorporateCalendarWithTile",
                            default: default3
                        },
                        {
                            id: "view-calendar-without-tile",
                            viewUrl: "/Partners/CorporateCalendarWithoutTile",
                            default: default4
                        },
                        {
                            id: "view-listing-with-tile-flip",
                            viewUrl: "/Partners/CorporateListingWithTileFlip",
                            default: default5
                        }

                    ],
                    buttonsContainer: self.find("#multiple-views-buttons"),
                    afterViewChange: function () {
                        $("#wait-message").show();
                    },
                    afterInit: function () {

                    },
                    afterViewLoad: function () {
                        var viewsData = self.find("#multiple-views").multipleViews().viewsData;
                        //detecting who is the active
                        var elementsViewMore = self.find('input[name="isMoreOccForCorporate"]').val();
                        var currentOption = self.find('.multiple-views-buttons a.active');
                        var selector = '';
                        var defaultCalendar = false;
                        var formatToManage = "";
                        if (currentOption.attr('id') === 'view-listing-with-tile') {
                            selector = '.opportunity-container.view-more.searchresult-listing';
                            formatToManage = "LISTING_WITH_TILES";
                        }
                        else if (currentOption.attr('id') === 'view-listing-without-tile') {
                            selector = '.opportunity-container.view-more.searchresult-listing';
                        }
                        else if (currentOption.attr('id') === 'view-calendar-with-tile') {
                            selector = '.opportunity-container.view-more-total.searchresult-by-date';
                            formatToManage = "CALENDAR_WITH_TILES";
                        }
                        else if (currentOption.attr('id') === 'view-calendar-without-tile') {
                            selector = '';
                            defaultCalendar = true;
                        }else if (currentOption.attr('id') === 'view-listing-with-tile-flip') {
                            selector = '.opportunity-container.view-more.searchresult-listing';
                            formatToManage = "LISTING_WITH_TILES_FLIP";
                        }
                            
                        if (elementsViewMore !== null && elementsViewMore !== undefined && elementsViewMore !== 0 && elementsViewMore !== '0') {
                            self.find(selector).show();
                        } else {
                            self.find(selector).hide();

                        }
                        if (defaultCalendar === true) {
                            process_calendar_default(self, false, processingContainer);
                            //open_close_fieldset_section_for_calendar(self);
                            expandable_behaviors();
                            /*add_multi_select_widget_for_corporate(self);
                            firstLoadCalendar = false;
                            events_for_calendar_corporate(self);*/
                        } else {
                            searchresult_behaviors(true);
                            expandable_behaviors();
                        }
                        reset_block_search_form();
                        if (formatToManage !== '')
                            fix_image_thumbnail_result(self, formatToManage);

                    },
                    afterDataLoad: function () {

                    }

                };
                self.find("#wait-message").show();
                self.find("#multiple-views").multipleViews(options);

                self.find('.multiple-views-buttons a').on('click', function () {
                    $("#wait-message").show();
                    var idLink = $(this).attr('id');
                    if (idLink === 'view-listing-with-tile') {
                        self.find('input[name="listingFormat"]').val('LISTING_WITH_TILES');
                    } else if (idLink === 'view-listing-without-tile') {
                        self.find('input[name="listingFormat"]').val('LISTING_WITHOUT_TILES');
                    } else if (idLink === 'view-calendar-with-tile') {
                        self.find('input[name="listingFormat"]').val('CALENDAR_WITH_TILES');
                    } else if (idLink === 'view-calendar-without-tile') {
                        self.find('input[name="listingFormat"]').val('CALENDAR_WITHOUT_TILES');
                    } else if(idLink === 'view-listing-with-tile-flip'){
                        self.find('input[name="listingFormat"]').val('LISTING_WITH_TILE_FLIP');
                    }

                });
            }

        });
    }
    $('.invitation-code-inner-section input[name="searchvo_invitation_code"]').on('change', function () {
        var invitationCode = $(this).val();
        var searchId = $(this).data('search-id');
        if ($(this).parent().find('input[name="searchvo_invitation_code-' + searchId + '"]').length > 0) {
            $(this).parent().find('input[name="searchvo_invitation_code-' + searchId + '"]').val(invitationCode);
        }
    });
}

function open_close_fieldset_section_for_calendar(self) {
    if (self.find('fieldset.fieldset-step .fieldset-title button').length !== 0) {
        var selector = self.find('fieldset.fieldset-step .fieldset-title button');
        selector.on('click', function () {
            var display = $(this).parents('fieldset').find('.fieldset-content').css('display');

            if (display === 'block') {
                $(this).parents('fieldset').find('.fieldset-content').hide('fast');
                $(this).addClass("button-open");
                $(this).removeClass("button-close");
            }
            else {
                $(this).addClass("button-close");
                $(this).removeClass("button-open");
                $(this).parents('fieldset').find('.fieldset-content').show('fast', function () {
                });
            }

            return false;
        });
    }
}

function add_multi_select_widget_for_corporate(self) {
    setTimeout(function () {
        self.find('select[multiple]:not(".jqmsLoaded")').multiselect({
            'selectAll': true,
            'columns': 1,
            'showCheckbox': true,
            'texts': {
                placeholder: window.translation.select_options,
                search: window.translation.search,
                selectedOptions: ' ' + window.translation.selected,
                selectAll: window.translation.select_all
            }
        });


    }, 2000);

}

function events_for_calendar_corporate(self) {
    
    self.find('.advanced-search-section-for-calendar a.button.submit-calendar-button').on('click', function () {
        var selfButton = $(this);
        searchresult_populate_opportunities(selfButton, true, false, false);
        return false;
    });

}

function display_config_sections(self) {
    self.find('.fields-filters .open-close-button a.button-display-suboptions').on('click', function (e) {
        e.preventDefault();
        if ($(this).hasClass('open-button-option')) {
            $(this).removeClass('open-button-option');
            $(this).addClass('close-button-option');
            $(this).parents('.parent-section').find('.subfilter-section').removeClass('hide-custom');
        } else {
            $(this).removeClass('close-button-option');
            $(this).addClass('open-button-option');
            $(this).parents('.parent-section').find('.subfilter-section').addClass('hide-custom');
        }
        return false;
    });


    self.find('input[name="display-location-section"]').on('change', function () {

        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-distance-field"]').prop('checked', true);
            self.find('input[name="display-location-types-section"]').prop('checked', true);
            self.find('input[name="display-city-state-zipcode"]').prop('checked', true);
            self.find('input[name="display-keywords"]').prop('checked', true);
        } else {
            //no
            self.find('input[name="display-distance-field"]').prop('checked', false);
            self.find('input[name="display-location-types-section"]').prop('checked', false);
            self.find('input[name="display-city-state-zipcode"]').prop('checked', false);
            self.find('input[name="display-keywords"]').prop('checked', false);
        }
    });

    self.find('input[name="display-type-opportunity-section"]').on('change', function () {

        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-schedule-type"]').prop('checked', true);
            self.find('input[name="display-issue-areas-address"]').prop('checked', true);
            self.find('input[name="display-skills"]').prop('checked', true);
            self.find('input[name="display-activity-type"]').prop('checked', true);
            self.find('input[name="display-participate-event"]').prop('checked', true);
            self.find('input[name="display-managed-by"]').prop('checked', true);
        } else {
            //no
            self.find('input[name="display-schedule-type"]').prop('checked', false);
            self.find('input[name="display-issue-areas-address"]').prop('checked', false);
            self.find('input[name="display-skills"]').prop('checked', false);
            self.find('input[name="display-activity-type"]').prop('checked', false);
            self.find('input[name="display-participate-event"]').prop('checked', false);
            self.find('input[name="display-managed-by"]').prop('checked', false);
        }
    });

    self.find('input[name="display-who-to-serve-section"]').on('change', function () {

        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-organizations-serve"]').prop('checked', true);
            self.find('input[name="display-age-group"]').prop('checked', true);
            self.find('input[name="display-gender"]').prop('checked', true);
            self.find('input[name="display-population"]').prop('checked', true);
        } else {
            //no
            self.find('input[name="display-organizations-serve"]').prop('checked', false);
            self.find('input[name="display-age-group"]').prop('checked', false);
            self.find('input[name="display-gender"]').prop('checked', false);
            self.find('input[name="display-population"]').prop('checked', false);
        }
    });

    self.find('input[name="display-appropiate-for-section"]').on('change', function () {

        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-age-volunteer"]').prop('checked', true);
            self.find('input[name="display-court-ordered-volunteers"]').prop('checked', true);
            self.find('input[name="display-groups"]').prop('checked', true);
            self.find('input[name="display-seniors-rsvp"]').prop('checked', true);
        } else {
            //no
            self.find('input[name="display-age-volunteer"]').prop('checked', false);
            self.find('input[name="display-court-ordered-volunteers"]').prop('checked', false);
            self.find('input[name="display-groups"]').prop('checked', false);
            self.find('input[name="display-seniors-rsvp"]').prop('checked', false);
        }
    });

    self.find('input[name="display-age-volunteer"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-appropiate-for-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-appropiate-for-section", self);
        }
    });

    self.find('input[name="display-court-ordered-volunteers"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-appropiate-for-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-appropiate-for-section", self);
        }
    });

    self.find('input[name="display-groups"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-appropiate-for-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-appropiate-for-section", self);
        }
    });

    self.find('input[name="display-seniors-rsvp"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-appropiate-for-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-appropiate-for-section", self);
        }
    });

    self.find('input[name="display-organizations-serve"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-who-to-serve-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-who-to-serve-section", self);
        }
    });

    self.find('input[name="display-age-group"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-who-to-serve-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-who-to-serve-section", self);
        }
    });

    self.find('input[name="display-gender"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-who-to-serve-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-who-to-serve-section", self);
        }
    });

    self.find('input[name="display-population"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-who-to-serve-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-who-to-serve-section", self);
        }
    });

    self.find('input[name="display-schedule-type"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-type-opportunity-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-type-opportunity-section", self);
        }
    });

    self.find('input[name="display-issue-areas-address"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-type-opportunity-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-type-opportunity-section", self);
        }
    });

    self.find('input[name="display-skills"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-type-opportunity-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-type-opportunity-section", self);
        }
    });

    self.find('input[name="display-activity-type"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-type-opportunity-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-type-opportunity-section", self);
        }
    });

    self.find('input[name="display-participate-event"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-type-opportunity-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-type-opportunity-section", self);
        }
    });

    self.find('input[name="display-managed-by"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-type-opportunity-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-type-opportunity-section", self);
        }
    });

    self.find('input[name="display-distance-field"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-location-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-location-section", self);
        }
    });

    self.find('input[name="display-location-types-section"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-location-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-location-section", self);
        }
    });

    self.find('input[name="display-city-state-zipcode"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-location-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-location-section", self);
        }
    });

    self.find('input[name="display-keywords"]').on('change', function () {
        if ($(this).is(':checked')) {
            //yes
            self.find('input[name="display-location-section"]').prop('checked', true);
        } else {
            ValidateDisplaySectionField("display-location-section", self);
        }
    });

    self.find('input[name="adv_invitation_code"]').on('input', function () {
        Active_Invitation_Code_Section(self)
    });
}

function Active_Invitation_Code_Section(self){
    var value = self.find('input[name="adv_invitation_code"]').val();
    if(value){
        self.find('input[name="display-invitation-code-section"]').prop('checked', false).prop("disabled", true);
    }else{
        self.find('input[name="display-invitation-code-section"]').prop("disabled", false);
    }
}

function ValidateDisplaySectionField(name, self) {
    if (name == "display-type-opportunity-section") {
        if (!self.find('input[name="display-schedule-type"]').is(':checked') && !self.find('input[name="display-issue-areas-address"]').is(':checked') && !self.find('input[name="display-skills"]').is(':checked') && !self.find('input[name="display-activity-type"]').is(':checked') && !self.find('input[name="display-participate-event"]').is(':checked') && !self.find('input[name="display-managed-by"]').is(':checked')) {
            self.find('input[name="display-type-opportunity-section"]').prop('checked', false);
        }
    }

    if (name == "display-who-to-serve-section") {
        if (!self.find('input[name="display-organizations-serve"]').is(':checked') && !self.find('input[name="display-age-group"]').is(':checked') && !self.find('input[name="display-gender"]').is(':checked') && !self.find('input[name="display-population"]').is(':checked')) {
            self.find('input[name="display-who-to-serve-section"]').prop('checked', false);
        }
    }

    if (name == "display-appropiate-for-section") {
        if (!self.find('input[name="display-age-volunteer"]').is(':checked') && !self.find('input[name="display-court-ordered-volunteers"]').is(':checked') && !self.find('input[name="display-groups"]').is(':checked') && !self.find('input[name="display-seniors-rsvp"]').is(':checked')) {
            self.find('input[name="display-appropiate-for-section"]').prop('checked', false);
        }
    }

    if (name == "display-location-section") {
        if (!self.find('input[name="display-keywords"]').is(':checked') && !self.find('input[name="display-city-state-zipcode"]').is(':checked') && !self.find('input[name="display-distance-field"]').is(':checked') && !self.find('input[name="display-location-types-section"]').is(':checked')) {
            self.find('input[name="display-location-section"]').prop('checked', false);
        }
    }
}

function reload_datatable_for_listing(self, rowPerPage) {
    var sortField = self.find('input[name="sort_by"]:checked').val();
    var order = [[4, 'asc']];
    if (sortField !== null && sortField !== undefined && sortField !== '') {
        if (sortField === "Distance") {
            order = [[4, 'asc']];
        } else if (sortField === "Next Date") {
            order = [[3, 'asc']];
        } else if (sortField === "Alphabetically") {
            order = [[0, 'asc']];
        }
    }

    var defaultOptions = {
        'bFilter': false,
        "paging": false,
        "pageLength": parseInt(rowPerPage),
        "order": order
    };
    
    self.find('table#datatable-search-opportunities-block').DataTable(defaultOptions);
}

function process_calendar_default(self, recreate, processingContainer) {

    processingContainer.removeClass('hide-custom');
    processingContainer.show();

    if (self.find('input[name="query-string-form-calendar"]').length !== 0) {
        var queryString = handleQueryStringCalendar(localStorage.getItem("query-string-searchvo-calendar"));
        if (self.find('input[name="query-string-form-calendar"]').val()==='') {
            self.find('input[name="query-string-form-calendar"]').val(queryString);
        }
    }
    var searchResultBlockId = self.find('input[name="calendar-search-block-id"]').val();
    var parametersAPI = {};
    let configurationInitialDate = self.find('input[name="InitialDateForCalendar"]').val();

    if (self.find('form#search_calendar input[name="searchvo_include_location_name"]').length > 0) {
        parametersAPI['searchvo_include_location_name'] = 'true';
    }

    parametersAPI["searchResultBlockId"] = searchResultBlockId;
    parametersAPI['isRecreateAction'] = recreate;
    var lastDate = null;
    var isCorporateBlock = self.hasClass('search-block-as-corporate');
    var queryStringFormCalendar = window.location.href;

    if (configurationInitialDate !== null && configurationInitialDate !== '' && configurationInitialDate !== undefined) {
        try {
            let tmpDate = moment(configurationInitialDate, window.MomentDateFormat)
            configurationInitialDate = tmpDate.format('YYYY-MM-DD');

        } catch (error) {
            console.log('error date search result block')
            configurationInitialDate = null;
        }
    }

    if (recreate) {
        parametersAPI['IsFromShareUrl'] = "false";
    } else {
        
        var foundValue = true;
        if (queryStringFormCalendar !== 'undefined' && queryStringFormCalendar !== null && queryStringFormCalendar !== '') {
            var qYear = get_parameter_from_query_string("year", queryStringFormCalendar);
            var qMonth = get_parameter_from_query_string("month", queryStringFormCalendar);
            var qDay = get_parameter_from_query_string("day", queryStringFormCalendar);
            var qWeek = get_parameter_from_query_string("week", queryStringFormCalendar);
            if (qYear === null && qMonth === null && qDay === null && qWeek === null) {
                foundValue = false;
            }

            if (foundValue && (qYear !== undefined || qMonth !== undefined || qDay !== undefined)) {
                if (qDay == undefined || qDay == null) {
                    qDay = "01";
                    if ((qWeek != null && qWeek != undefined) && (qYear == null || qYear == undefined)) {
                        qDay = moment().format('DD');
                    }
                }
                else if (qDay.toLowerCase()=='true') {
                    qDay = moment().format('DD');
                    if (qMonth === undefined || qMonth == null) {
                        qMonth = moment().format('MM');
                    }
                }
                if (qMonth === undefined || qMonth == null) {
                    qMonth = "01";
                    if ((qWeek != null && qWeek != undefined) && (qYear == null || qYear == undefined)) {
                        qMonth = moment().format('MM');
                    }
                }
                if (qYear === undefined || qYear == null) {
                    qYear = moment().format('YYYY');
                }

                lastDate = qYear + '-' + qMonth + '-' + qDay;
            }

        } else {
            foundValue = false;
        }


        if (foundValue === false && isCorporateBlock === false) {

            var calendarSearchSessionStorage = getCalendarSearchLastDateSessionStorageSR();

            if (calendarSearchSessionStorage !== null && calendarSearchSessionStorage.last_date !== null) {
                lastDate = calendarSearchSessionStorage.last_date;
            }
            else {

                if (configurationInitialDate !== null && configurationInitialDate !== '' && configurationInitialDate !== undefined) {

                    const today = moment();
                    let isAfter = moment(configurationInitialDate).isAfter(today.format('YYYY-MM-DD'))

                    if (isAfter === true) // if not, then the initial date shouldn't be used
                        lastDate = configurationInitialDate;
                } else {
                    sessionStorage.setItem("calendar-search-last-date", '');
                    var today = new Date();
                    var mm = (today.getMonth() + 1);
                    var month = mm;
                    if (mm < 10) {
                        month = '0' + mm;
                    }
                    var dd = today.getDate();
                    var day = dd;
                    if (dd < 10) {
                        day = '0' + dd;
                    }
                    lastDate = today.getFullYear() + '-' + month + '-' + day;
                }
            }
        } 


        parametersAPI['IsFromShareUrl'] = self.find('input[name="IsFromShareUrl"]').val();
    }
    if (isCorporateBlock === true) {
        var today = new Date();
        var mm = (today.getMonth() + 1);
        var month = mm;
        if (mm < 10) {
            month = '0' + mm;
        }
        var dd = today.getDate();
        var day = dd;
        if (dd < 10) {
            day = '0' + dd;
        }
        lastDate = today.getFullYear() + '-' + month + '-' + day;

    }
    let openAs = self.find('input[name="OpenCalendarAs"]').val();
    let customSort = self.find('input[name="customSort"]').val();
    let showFooterToolbar = self.find('input[name="ShowFooterToolbar"]').val();

    var calendar = generate_calendar_widget(searchResultBlockId, lastDate, isCorporateBlock, openAs, customSort,showFooterToolbar);

    retrieve_occurrences(calendar, parametersAPI, processingContainer, self, recreate, false, true);
    fix_functionality_for_accesibility(self);


    if (self.find('button.fc-dayGridMonth-button').length > 0) {
        self.find('button.fc-dayGridMonth-button').on('click', function () {
            $(this).attr('aria-label', "Month Button Clicked, now the result were updated, displayed by Month");
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, false);

        });
    }

    if (self.find('button.fc-dayGridWeek-button').length > 0) {
        self.find('button.fc-dayGridWeek-button').on('click', function () {
            $(this).attr('aria-label', "Week Button Clicked, now the result were updated, displayed by Week");
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, false);
        });
    }

    if (self.find('button.fc-dayGridDay-button').length > 0) {
        self.find('button.fc-dayGridDay-button').on('click', function () {
            $(this).attr('aria-label', "Day Button Clicked, now the result were updated, displayed by Day");
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, false);
        });
    }

    if (self.find('button.fc-prev-button').length > 0) {
        self.find('button.fc-prev-button').on('click', function () {
            $(this).attr('aria-label', "Previous Button Clicked, now the result were updated");
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, false);
        });
    }
        
    if (self.find('button.fc-next-button').length > 0) {
        self.find('button.fc-next-button').on('click', function () {
            $(this).attr('aria-label', "Next Button Clicked, now the result were updated");
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, false);
        });
    }

    if (self.find('button.fc-today-button').length > 0) {
        self.find('button.fc-today-button').on('click', function () {
            $(this).attr('aria-label', "Today Button Clicked, now the result were updated, now you can the today results are rendered");
            saveSearchLastDateSR(calendar);
            remove_current_events(calendar);
            retrieve_occurrences(calendar, parametersAPI, processingContainer, self, true, false);
        });
    }

    self.find('a.button.submit-calendar-button').on('click', function (e) {
        $(this).attr('aria-label', "Submit Clicked, now the result were updated based in the criteria selected");
        e.preventDefault();
        processingContainer.show();
        reload_calendar_widget(self, calendar, processingContainer, true);
        invoke_calendar_for_mobile(self);
        return false;
    });

    self.find('.my-searches-section select[name="my_saved_searches"]').on('change', function () {
        var searchId = $(this).val();
        var isAnonymous = $(this).hasClass('anonymous');

        if (searchId) {
            var self = $(this).parents('.searchresultblock').first();
            var processingContainer = self.find('.processing_screen');
            var elementViewMore = self.find('.view-more.searchresult-listing');

            searchresult_load_search_shareable_for_default_calendar(self, processingContainer, searchId, isAnonymous, calendar);
        }

    });



    


    if (get_parameter_from_query_string("day", queryStringFormCalendar) != undefined ||
        get_parameter_from_query_string("week", queryStringFormCalendar) == "true" ||
        get_parameter_from_query_string("month", queryStringFormCalendar) != undefined ||
        get_parameter_from_query_string("year", queryStringFormCalendar) != undefined) {

        if (get_parameter_from_query_string("week", queryStringFormCalendar) == "true") {
            $('button.fc-dayGridWeek-button').trigger('click');
        }
        else if (get_parameter_from_query_string("day", queryStringFormCalendar) != undefined) {
            $('button.fc-dayGridDay-button').trigger('click');
        }
        else {
            $('button.fc-dayGridMonth-button').trigger('click');
        }
        $('button.fc-month-button').show();
        $('button.fc-basicWeek-button').show();
        $('button.fc-agendaDay-button').show();
    }

    self.find('.fc-footer-toolbar button').on('click', function () {
           $(document).ajaxComplete(function(event, xhr, settings) {
               //$('html, body').animate({scrollTop: $('.full-calendar-widget').offset().top - 150 },300); 
            var contentElement = document.querySelector('.search-block-default-calendar');
            contentElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
            
           });
    });

    invoke_calendar_for_mobile(self);
}

function invoke_calendar_for_mobile(self) {
    if ($(window).width() < 1024 || $("body").hasClass('tablet') || $("body").hasClass('mobile')) {
        $(document).ajaxStop(function () {
            responsive_calendar_widget(self);
        });
    }

}

function remove_current_events(calendar) {
    calendar.removeAllEvents();
}


function retrieve_occurrences(calendar, parametersAPI, processingContainer, self, recreate, oldCorporate, isFirstLoad) {
    var parameters = self.find('.full-calendar-widget').data('parameters');
    var hasFilters = false;

    parameters.forEach(function (parameter) {
        var parameterKey = parameter;
        var parameterValue = ((getParameterByNameForSR(parameterKey, true, false, self)) ? getParameterByNameForSR(parameterKey, true, false, self) : '').toString();
        if (parameterKey !== "searchvo_invitation_code")
            parameterValue = parameterValue.replaceAll('&', '_and_');
        else
            parameterValue = parameterValue.replaceAll('&', '&amp;');

        parametersAPI[parameterKey] = parameterValue;

        if (parameterKey !== "searchvo_zip" && parameterValue !== null && parameterValue !== "")
            hasFilters = true;
    });



    var isCorporateBlock = self.hasClass('search-block-as-corporate');
    if (oldCorporate === true)
        isCorporateBlock = true;
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

    var url = '/search/getOpportunitiesCalendar';

    var monthSelected = parseInt(calendar.view.activeStart.getUTCMonth()) + 1;
    var daySelected = parseInt(calendar.view.activeStart.getUTCDate());
    var startDateView = calendar.view.activeStart.getUTCFullYear() + '-' + (monthSelected < 10 ? '0' + monthSelected : monthSelected) + '-' + (daySelected < 10 ? '0' + daySelected : daySelected);
    monthSelected = parseInt(calendar.view.activeEnd.getUTCMonth()) + 1;
    daySelected = parseInt(calendar.view.activeEnd.getUTCDate());
    var endDateView = calendar.view.activeEnd.getUTCFullYear() + '-' + (monthSelected < 10 ? '0' + monthSelected : monthSelected) + '-' + (daySelected < 10 ? '0' + daySelected : daySelected);
    parametersAPI['searchvo_startfrom'] = startDateView;
    parametersAPI['searchvo_endfrom'] = endDateView;

    var currentLanguage = window.translation['language_iso'];
    var timeFormatSuffix = '';
    if (currentLanguage === 'nl-NL') {
        timeFormatSuffix = ' uur'; //HOC3-6291
    }

    $.ajax({
        method: "POST",
        url: urlSite + url,
        data: parametersAPI,
        dataType: "JSON",
        beforeSend: function (data) {
            processingContainer.show();
        },
        statusCode: {
            500: function () {
                processingContainer.hide();
            }
        }
    }).done(function (data) {



        var events = [];

        var newQueryString = self.find('input[name="query-string-form-calendar"]').val();

        update_input_query_string_local_storage(newQueryString, "2", isCorporateBlock);

        var countRegular = 0;
        var countTraining = 0;
        var countFilled = 0;
        var countEvents = 0;
        var countOpp55 = 0;

        data.items.forEach(function (item) {
            var day = item.dayDate;
            //Iterate the occurrences
            item.occurrences.forEach(function (occurence) {
                var titleOpp = occurence.opportunityName;
                titleOpp = htmlDecode(titleOpp);
                var organizationName = occurence.organizationServedName;
                organizationName = htmlDecode(organizationName);
                var description = occurence.description;
                description = htmlDecode(description);
                var timeZoneAbbreviation = '';
                if (occurence.TimeZoneAbbreviation && occurence.TimeZoneAbbreviation != '') {
                    timeZoneAbbreviation = ' ' + occurence.TimeZoneAbbreviation;
                }
                var time = occurence.startTime + timeFormatSuffix + timeZoneAbbreviation + ' - ' + occurence.endTime + timeFormatSuffix + timeZoneAbbreviation ;
                var spotRemaining = parseInt(occurence.volunteersStillNeeded);
                var managedBy = occurence.managingOrganization;
                var opportunityId = occurence.occurrenceId;
                var miniSitePath = fix_minisite_path(occurence.miniSitePath);
                var timezone = occurence.timezone;
                var specialType = 'Volunteer Opportunity';


                var startDate = occurence.startDateTimeISO;
                var endDate = occurence.endDateTimeISO;

                var className = 'blue-key';

                if (spotRemaining <= 0) {
                    className = 'gray-key';
                    countFilled++;
                    specialType = 'Already Filled';
                }
                else if (occurence.opportunityType === "Activity" || occurence.opportunityType === "Spreadsheets_AllForGood_Ad") {
                    className = 'black-key';
                    specialType = 'Trainings & Other Activities';
                    countTraining++;
                }

                if (className === 'blue-key') {
                    countRegular++;
                }

                if (moment(getFormattedDate(timezone)).isAfter(moment(startDate))) {
                    className += ' fc-past';
                    specialType = 'Past Opportunity';
                }


                //Validation to truncate description field in occurence item

                if (description !== null && description.length > 200) {
                    description = description.substring(0, 200) + '...';
                }


                events.push({
                    title: titleOpp,
                    start: startDate,
                    end: endDate,
                    className: className,
                    organizationName: organizationName,
                    description: description,
                    time: time,
                    spotRemaining: spotRemaining,
                    managedBy: managedBy,
                    opportunityId: opportunityId,
                    startDay: day,
                    type: "Ocurrence",
                    miniSitePath: miniSitePath,
                    specialType: specialType
                });

            });

            // Iterate the events
            item.events.forEach(function (eventInfo) {
                var titleOpp = eventInfo.name;
                titleOpp = htmlDecode(titleOpp);
                var description = eventInfo.description;
                description = htmlDecode(description);
                var eventId = eventInfo.eventLink.split('id=')[1];

                var startDate = day;
                var endDate = day;

                var className = 'green-key';
                countEvents++;

                //Validation to truncate description field in occurence item

                if (description !== null && description.length > 200) {
                    description = description.substring(0, 200) + '...';
                }

                if (moment().isAfter(moment(startDate), 'day')) {
                    className += ' fc-past';
                }



                events.push({
                    title: titleOpp,
                    className: className,
                    eventId: eventId,
                    start: startDate,
                    end: endDate,
                    startDay: day,
                    description: description,
                    type: "Event",
                    allDay: true
                });

            });
        });
        calendar.addEventSource(events);

        populate_multiselect_SR('.advanced-search-section-for-calendar select[name="organization-serve"]', "organization-serve", data.organizationsServed.join('---'), false, self);
        populate_multiselect_SR('.advanced-search-section-for-calendar select[name="population"]', "population", data.populationsServed.join('---'), true, self);
        populate_multiselect_SR('.advanced-search-section-for-calendar select[name="issue-areas"]', "issue-areas", data.impactAreas.join('---'), true, self);
        populate_multiselect_SR('.advanced-search-section-for-calendar select[name="activity-type"]', "activity-type", data.activityTypes.join('---'), true, self);
        populate_multiselect_SR('.advanced-search-section-for-calendar select[name="participate-event"]', "participate-event", data.participateInEvents.join('---'), true, self);
        populate_multiselect_SR('.advanced-search-section-for-calendar select[name="skills-use"]', "skills-use", data.skilltoServes.join('---'), true, self);
        populate_multiselect_SR('.advanced-search-section-for-calendar select[name="age-group"]', "age-group", data.ageGroup.join('---'), true, self);
        populate_multiselect_SR('.advanced-search-section-for-calendar select[name="gender"]', "gender", data.gender.join('---'), true, self);
        populate_select_SR('.basic-search-filter-section select[name="causes"]', "causes", data.causes.join('---'), true, self);

        self.find('#other-criteria').hide();
        self.find('.court-ordered-item-setting').hide();
        self.find('.show-groups-item-setting').hide();
        self.find('.show-seniors-rsvp-item-section').hide();
        if (data.appropriateFors !== null && data.appropriateFors !== undefined) {
            if (data.appropriateFors.length > 0) {
                var found = false;
                if (data.appropriateFors.includes('Court Ordered')) {
                    self.find('.court-ordered-item-setting').show();
                    found = true;
                }
                if (data.appropriateFors.includes('Groups')) {
                    self.find('.show-groups-item-setting').show();
                    found = true;
                }
                if (data.appropriateFors.includes('RSVP/Senior')) {
                    self.find('.show-seniors-rsvp-item-section').show();
                    found = true;
                }

            }
        }

        if (found === true) 
            self.find('#other-criteria').show();

        //update quantities
        self.find('input[name="countRegular"]').val(countRegular);
        self.find('input[name="countTraining"]').val(countTraining);
        self.find('input[name="countFilled"]').val(countFilled);
        self.find('input[name="countEvents"]').val(countEvents);
        self.find('input[name="countOpp55"]').val(countOpp55);

        var items = newQueryString.split('&');
        items.forEach(function (value, index) {
            if (value !== '' && value.indexOf('=') !== -1) {
                var text = value.split('=');
                if (text[0] === 'searchvo_zip') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '')
                        self.find('.basic-search-filter-section input[name="location"]').val(text[1]);
                } else if (text[0] === 'searchvo_distance') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '')
                        self.find('.basic-search-filter-section select[name="distance"]').val(text[1]);
                } else if (text[0] === 'searchvo_keyword') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '') {
                        self.find('.basic-search-filter-section input[name="keyword"]').val(text[1]);
                    }
                } else if (text[0] === 'searchvo_location_type') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '')
                        self.find('.basic-search-filter-section select[name="location-type"]').val(text[1]);
                } else if (text[0] === 'searchvo_appropiate_court_ordered_yes') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '' && text[1] === 'on')
                        self.find('.basic-search-filter-section input[id="other_criteria_court_ordered"]').prop('checked', true);
                } else if (text[0] === 'searchvo_appropiate_groups_yes') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '' && text[1] === 'on') {
                        self.find('.appropiate-for-section.fieldset-filter-calendar input[id="other_criteria_groups"]').prop('checked', true);
                    }
                } else if (text[0] === 'searchvo_appropiate_seniors_yes') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '' && text[1] === 'on') {
                        self.find('.appropiate-for-section.fieldset-filter-calendar input[id="other_criteria_seniors"]').prop('checked', true);
                    }
                } else if (text[0] === 'searchvo_availability') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '') {
                        if (text[1].indexOf('[') === 0) {
                            var array = JSON.parse(text[1]);
                            array.forEach(function (value, index) {
                                self.find('.availability-section.fieldset-filter-calendar input[id="' + value + '"]').prop('checked', true);
                            });
                        } else {
                            self.find('.availability-section.fieldset-filter-calendar input[id="' + text[1] + '"]').prop('checked', true);
                        }
                    }
                }
                else if (text[0] === 'searchvo_age_volunteer') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '') {
                        self.find('.appropiate-for-section.fieldset-filter-calendar input[id="age_volunteer_specific"]').val(text[1]);
                    }
                }
                else if (text[0] === 'searchvo_view_by') {
                    if (text[1] !== null && text[1] !== undefined && text[1] !== '') {
                        var textS = text[1].replaceAll('+', ' ');
                        textS = textS.replaceAll('%2c', ',');
                        var itemValues = text.split(',');
                        itemValues.forEach(function (v, i) {
                            $('.appropiate-for-section.fieldset-filter-calendar').find('input[name="view_by"][value="' + v + '"]').prop('checked', true);
                        });
                    }
                }

            }
        });


        if (countRegular > 0) {
            self.find('.advanced-search-section-for-calendar .view-identifier.regular').parents('li').removeClass('hide');
        } else {
            self.find('.advanced-search-section-for-calendar .view-identifier.regular').parents('li').addClass('hide');
        }

        if (countTraining > 0) {
            self.find('.advanced-search-section-for-calendar .view-identifier.training').parents('li').removeClass('hide');
        } else {
            self.find('.advanced-search-section-for-calendar .view-identifier.training').parents('li').addClass('hide');
        }

        if (countFilled > 0) {
            self.find('.advanced-search-section-for-calendar .view-identifier.filled').parents('li').removeClass('hide');
        } else {
            self.find('.advanced-search-section-for-calendar .view-identifier.filled').parents('li').addClass('hide');
        }

        if (countEvents > 0) {
            self.find('.advanced-search-section-for-calendar .view-identifier.special').parents('li').removeClass('hide');
        } else {
            self.find('.advanced-search-section-for-calendar .view-identifier.special').parents('li').addClass('hide');
        }
        if (recreate === false) {
            setTimeout(function () {
                enable_multiselect_feature_on_fields(self, "false");
            }, 2000);
        }
        if (hasFilters && !$('body').hasClass('corporate-partners-page')) {
            self.find('.filtered-results-text').removeClass('hide');
            self.find('.filtered-results-text .see_all').on('click', function (e) {
                e.preventDefault();
                var blockID = self.attr("data-block-id");
                self.find('form#opportunities-search-block')[0].reset();
                var titleLocalStorage = 'searchresultblock-' + blockID;
                var currUrl = window.location.href;
                localStorage.setItem(titleLocalStorage, "");
                if (self.hasClass('search-block-default-calendar')) {
                    self.find("#query-string-form-calendar").val('');
                    localStorage.setItem('query-string-searchvo-calendar', '');
                    sessionStorage.setItem('calendar-search-last-date', '');
                }
                if (currUrl.indexOf("?") != -1) {
                    var urlParts = currUrl.split("?");
                    var newUrl = urlParts[0];
                    window.location = newUrl;
                } else {
                    location.reload();
                }
                return false;
            });
        } else {
            self.find('.full-calendar-widget .filtered-results-text').addClass('hide');
        }

        process_for_gtag(newQueryString);

        if (isFirstLoad !== true) {
            saveSearchLastDateSR(calendar);
        }

        processingContainer.hide();

    });


}

function populate_select_SR(selector, name, data, translate, self) {
    if (data != undefined) {
        var listing = data.split('---');
        var listingFixed = new Array();
        var translation = window.translation;

        if (listing) {
            var selectField = self.find(selector);
            selectField.empty();

            listing = listing.sort(function (a, b) {
                if (a < b) return -1;
                if (a > b) return 1;
                return 0;
            });
            var option = $('<option></option>').text(window.translation.select_a_cause);
            selectField.append(option);
            listing.forEach(function (item) {
                if (item) {
                    //Fixes to & ,
                    var itemValue = item.replaceAll('&', '_and_');
                    itemValue = itemValue.replaceAll(',', '_comma_');
                    itemValue = itemValue.replaceAll('+', '_plus_');
                    itemValue = itemValue.replaceAll('"', '&ldquo;');

                    if (translation && translate) {
                        var key = item.toLowerCase().replaceAll('&', '').replaceAll('/', ' ').replaceAll(',', '').replaceAll('-', '_').replaceAll('  ', ' ').replaceAll('   ', ' ').replaceAll(' ', '_').replaceAll('__', '_').replaceAll('(', '').replaceAll(')', '').replaceAll(':', '');
                        if (translation[key] != null)
                            item = translation[key];
                    }
                    listingFixed.push(itemValue);
                    option = $('<option></option>').attr("value", itemValue).text(item);
                    selectField.append(option);
                }
            });

            //Populate field
            var parameter_name = find_parameter_for_new_calendar(name);
            var value = (getParameterByName(parameter_name, true, true)) ? getParameterByName(parameter_name, true, true) : '';
            if (value !== null && value !== undefined && value !== '')
                self.find(selector).val(value);
        }
    }

}


function populate_multiselect_SR(selector, name, data, translate, self) {
    if (data !== undefined) {
        var listing = data.split('---');
        var listingFixed = new Array();
        var translation = window.translation;

        if (listing) {
            var multiSelect = self.find(selector);
            multiSelect.empty();

            listing = listing.sort(function (a, b) {
                if (a < b) return -1;
                if (a > b) return 1;
                return 0;
            });
            listing.forEach(function (item) {
                if (item) {
                    //Fixes to & ,
                    var itemValue = item.replaceAll('&', '_and_');
                    itemValue = itemValue.replaceAll(',', '_comma_');
                    itemValue = itemValue.replaceAll('+', '_plus_');
                    itemValue = itemValue.replaceAll('"', '&ldquo;');

                    if (translation && translate) {
                        var key = item.toLowerCase().replaceAll('&', '').replaceAll('/', ' ').replaceAll(',', '').replaceAll('-', '_').replaceAll('  ', ' ').replaceAll('   ', ' ').replaceAll(' ', '_').replaceAll('__', '_').replaceAll('(', '').replaceAll(')', '').replaceAll(':', '');
                        if (name === 'searchvo_managed_by') {
                            if (item === 'Affiliate')
                                key = 'managed_by_us';
                            else if (item === 'Partner')
                                key = 'managed_by_partner';
                        }
                        if (translation[key] != null)
                            item = translation[key];
                    }
                    listingFixed.push(itemValue);
                    var option = $('<option></option>').attr("value", itemValue).text(item);
                    multiSelect.append(option);
                }
            });

            $(selector).multiselect('reload');

            //Populate field
            populate_field_search_form_SR(selector, name, self);
        }
    }
}

function populate_field_search_form_SR(selector, name, self) {
        if (selector !== "" && name !== "") {
            var parameter_name = find_parameter_for_new_calendar(name);

            var value = (getParameterByNameForSR(parameter_name, true, true, self)) ? getParameterByNameForSR(parameter_name, true, true, self) : '';
            self.find(selector).val(value);
            self.find(selector).multiselect('reload');
            if (value !== "") {
                //if (self.find(selector).parents(".fieldset-step").find('.fieldset-content').css('display') === 'none') {
                //    self.find(selector).parents(".fieldset-step").find(".fieldset-title button").trigger("click");
                //}
            }

        }
}


function getParameterByNameForSR(name, localS, select, self) {
    // This function is anonymous, is executed immediately and
    // the return value is assigned to QueryString!
    var query_string = {};
    var query_string_form = self.find('input[name="query-string-form-calendar"]').val();
    var query = (localS) ? query_string_form : window.location.search.substring(1);
    var value = null;
    //Fixes with characters +
    if (query) {
        query = query.replaceAll('+', '%20');
        query = query.replaceAll('%5b%5d', '');
        var vars = query.split("&");
        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split("=");
            // If first entry with this name
            if (typeof query_string[pair[0]] === "undefined") {
                query_string[pair[0]] = decodeURIComponent(pair[1]);
                // If second entry with this name
            } else if (typeof query_string[pair[0]] === "string") {
                var arr = [query_string[pair[0]], decodeURIComponent(pair[1])];
                query_string[pair[0]] = arr;
                // If third or later entry with this name
            } else {
                query_string[pair[0]].push(decodeURIComponent(pair[1]));
            }
        }

        //Fix string before return
        if (query_string[name] && select) {
            query_string[name] = query_string[name].split(',');
        }

        value = query_string[name];
    }

    return value;
}


function process_for_gtag(queryString) {
    var pathPage = window.location.pathname;
    var queryStringFormCalendar = queryString;
    if (queryStringFormCalendar !== null && queryStringFormCalendar !== undefined && queryStringFormCalendar !== '') {
        if (pathPage.indexOf('?') > -1) {
            pathPage = pathPage + "&" + queryStringFormCalendar;
        } else {
            pathPage = pathPage + "?" + queryStringFormCalendar;
        }
    }
    //Tracking in google tags
    gtag('event', 'page_view', {
        page_title: 'Calendar without Title',
        page_path: pathPage
    });

}

function generate_calendar_widget(searchResultBlockId, lastDate, isCorporateBlock, configurationOpenAs, customSort,showFooterToolbar) {
    var currentLanguage = window.translation['language_iso'];
    var prefixLang = currentLanguage.split('-')[0];
    var locale = $('body').attr('data-locale');

    if (prefixLang === 'en') {
        if (locale === 'en-GB') {
            locale = 'en-gb';
        } else if (locale === 'en-GB') {
            locale = 'en-gb';
        } else if (locale === 'en-AU') {
            locale = 'en-au';        
        } else {
            locale = prefixLang;
        }
    } else if (currentLanguage === 'zh-CHT') {
        locale = 'zh-tw';
    } else {
        locale = prefixLang;
    }

    var timeFormat = 'hh:mm a';
    if (currentLanguage === 'nl-NL') {
        moment.locale(currentLanguage);
        if (moment.localeData()._config.longDateFormat.LT !== undefined) {
            timeFormat = moment.localeData()._config.longDateFormat.LT;
        }
    }

    var timeFormatCalendar = process_time_format(timeFormat);
    var calendarEl = document.getElementById('new-calendar-widget-' + searchResultBlockId);
    var OpenOppInCalendar = $('#new-calendar-widget-' + searchResultBlockId).closest('.searchresultblock').find('input[name="OpenOppIn"]').val();

    var initialViewValue = 'dayGridMonth';


    //validating
    var calendarSearchSessionStorage = getCalendarSearchLastDateSessionStorage();

    if (configurationOpenAs !== '') {
        if (configurationOpenAs === 'Week')
            initialViewValue = 'dayGridWeek';
        else if (configurationOpenAs === 'Day')
            initialViewValue = 'dayGridDay';
    }

    if (calendarSearchSessionStorage !== null && calendarSearchSessionStorage.view_mode !== null && isCorporateBlock === false) {
        var view_mode = calendarSearchSessionStorage.view_mode;

        if (view_mode === 'basicWeek') {
            initialViewValue = 'dayGridWeek';
        }
        else if (view_mode === 'agendaDay') {
            initialViewValue = 'dayGridDay';
        }
        else {
            initialViewValue = 'dayGridMonth';
        }
    }
    var calendarConfig = {
        locale: locale,
        height: 'auto',
        initialDate: lastDate,
        initialView: initialViewValue,
        firstDay: get_start_day_of_week_from_locale(),
        headerToolbar: {
            left: 'title',
            center: 'dayGridMonth,dayGridWeek,dayGridDay',
            right: 'prev,next today'

        },
        eventTimeFormat: timeFormatCalendar,
        views: {
            dayGridMonth: {
                titleFormat: { year: 'numeric', month: 'short' },
                dayMaxEventRows: 6
            },
            dayGridDay: {
                titleFormat: { year: 'numeric', month: 'short', day: 'numeric' },
                slotEventOverlap: false
            }
        },
        eventContent: function (data) {
            if (currentLanguage === 'nl-NL') {
                data.timeText = data.timeText + ' uur';
            }
        },
        eventDidMount: function (data) {
            var props = data.event.extendedProps;
            if (props.spotRemaining >= 0 || props.type === 'Event') {

                var description = '';
                var startDay = parseInt(new Date(props.startDay).getDay());
                var myPosition = 'right center';
                var atPosition = 'center left';
                var translation = window.translation;
                var titleOrganization = (props.type !== "Event") ? '<span class="organization">' + props.organizationName + '</span>' : '';
                var event_description = (props.description) ? props.description : '';
                var dateOpp = props.startDay;
                var infoariaLabel = ((props.type === 'Event') ? "Event: " : (props.specialType !== null && props.specialType !== undefined && props.specialType !== '' ? props.specialType : 'Volunteer Opportunity '));
                infoariaLabel = infoariaLabel + " " + data.event.title + ". Organization: " + props.organizationName + " ";
                infoariaLabel += "Date: " + dateOpp + " ";

                if (startDay === 6) startDay = 0;
                else startDay = startDay + 1;

                if (startDay <= 2) {
                    myPosition = 'left center';
                    atPosition = 'center right';
                }
                if (props.type === "Event") {
                    if (event_description !== null && event_description !== undefined && event_description !== 'undefined') {
                        description = description + '<p class="minimal-space">' + event_description + '</p>';
                        infoariaLabel = infoariaLabel + " " + event_description + " ";
                    }
                }
                else {
                    if (event_description !== null && event_description !== undefined && event_description !== 'undefined') {
                        description = description + '<p class="minimal-space">' + event_description + '</p>';
                        infoariaLabel = infoariaLabel + " " + event_description + " ";
                    }
                    description = description + '<p class="time">' + props.time + '</p>';
                    infoariaLabel = infoariaLabel + " Time: " + props.time + " ";
                    description = description + '<p class="last-section"><span>' + translation['spots_remaining'] + ': ' + props.spotRemaining + '</span>';
                    infoariaLabel = infoariaLabel + " " + translation['spots_remaining'] + ': ' + props.spotRemaining + " ";
                    if (props.managedBy !== null && props.managedBy !== undefined) {
                        infoariaLabel = infoariaLabel + " " + translation['managed_by'] + ': ' + props.managedBy + " ";
                        description = description + '<span class="manage-organization-calendar-tooltip">' + translation['managed_by'] + ': ' + props.managedBy + '</span>';
                    }
                    description = description + '</p>';
                }


                var urlOpp = '';
                if (props.opportunityId) {
                    if (props.miniSitePath !== undefined && props.miniSitePath !== null && props.miniSitePath !== '') {
                        urlOpp = fix_minisite_path(props.miniSitePath) + 'opportunity/' + props.opportunityId;
                    }
                    else {
                        urlOpp = '/opportunity/' + props.opportunityId;
                    }
                }
                if (props.eventId) {
                    urlOpp = '/special-event/' + props.eventId;
                }

                if (urlOpp !== '') {

                    if (OpenOppInCalendar == 'NEW_TAB') {
                        $(data.el).attr('target', '_blank');
                    }

                    $(data.el).attr('url-opp', urlOpp);
                    $(data.el).attr('tabindex', '0');
                    $(data.el).attr('aria-label', infoariaLabel);
                    $(data.el).attr('href', urlOpp);
                }

                if ($(window).width() >= 639) {
                    $(data.el).qtip({
                        content: {
                            title: '<span>' + data.event.title + '</span>' + titleOrganization,
                            text: description
                        },
                        position: {
                            my: myPosition,
                            at: atPosition
                        }
                    });
                }

            }
        },
      
    };

    if (showFooterToolbar == 'true') {
        calendarConfig["footerToolbar"]= {
            left: 'title',
            center: 'dayGridMonth,dayGridWeek,dayGridDay',
            right: 'prev,next today'
        }
    }

    if (customSort !== null && customSort !== undefined) {
        if (customSort == "startDateTime desc") {
            calendarConfig["eventOrder"] = "-start";
        } else if (customSort == "volunteersNeeded asc") {
            calendarConfig["eventOrder"] = "spotRemaining";
        } else if (customSort == "volunteersNeeded desc") {
            calendarConfig["eventOrder"] = "-spotRemaining";
        }
    }

    var calendar = new FullCalendar.Calendar(calendarEl, calendarConfig);
    calendar.render();
    return calendar;
}


function process_time_format(timeFormat) {
    var timeFormatCalendar = null;
    var hours = '';
    var meridiem = false;
    var minute = '';
    if (endsWith(timeFormat, 'a')) {
        meridiem = true;
        var text = timeFormat.replace('a', '');
        text = text.trim();
        var values = text.split(':');
        if (values[0] === 'h')
            hours = 'numeric';
        else if (values[0] === 'hh')
            hours = '2-digit';
        if (values[1] === 'mm')
            minute = '2-digit';
    } else {
        var values = timeFormat.split(':');
        if (values[0] === 'H') {
            meridiem = false;
            hours = 'numeric';
        } else if (values[0] === 'HH') {
            meridiem = false;
            hours = '2-digit';

        }

        if (values[1] === 'mm')
            minute = '2-digit';
    }
    timeFormatCalendar = {
        hour: hours,
        minute: minute,
        meridiem: meridiem
    }

    return timeFormatCalendar;
}

function endsWith(str, suffix) {
    return str.indexOf(suffix, str.length - suffix.length) !== -1;
}

function remove_calendar_default_bind_events(self) {

        if (self.find('button.fc-dayGridMonth-button').length > 0) {
            self.find('button.fc-dayGridMonth-button').off('click');
        }

        if (self.find('button.fc-dayGridWeek-button').length > 0) {
            self.find('button.fc-dayGridWeek-button').off('click');
        }

        if (self.find('button.fc-dayGridDay-button').length > 0) {
            self.find('button.fc-dayGridDay-button').off('click');
        }

        if (self.find('button.fc-prev-button').length > 0) {
            self.find('button.fc-prev-button').off('click');
        }

        if (self.find('button.fc-next-button').length > 0) {
            self.find('button.fc-next-button').off('click');
        }

        if (self.find('button.fc-today-button').length > 0) {
            self.find('button.fc-today-button').on('click');
        }

        self.find('a.button.submit-calendar-button').off('click');

        self.find('.my-searches-section select[name="my_saved_searches"]').off('change');
}

function reload_calendar_widget(self, currentCalendar, processingContainer) {
    var formObject = self.find('form').first();

    var formData = formObject.serializeObject();
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    $.ajax({
        method: "POST",
        url: urlSite + "search/RetrieveQueryStringForCalendar",
        data: { parameters: formData },
        beforeSend: function () {
            //Display processing
            self.find('.refine-search').find('a.button').hide();
            self.find('.basic-search').find('a.button').hide();
            self.find('.processing-search').removeClass('hide-custom');
        }
    }).done(function (data) {
        var jsonData = JSON.parse(data);

        if (jsonData) {

            if (jsonData.code === 200) {
                var querystring = jsonData.queryStringValue;
                self.find('input[name="query-string-form-calendar"]').val(querystring);
                if (currentCalendar !== null && currentCalendar !== undefined) {
                    remove_calendar_default_bind_events(self);
                    currentCalendar.destroy();
                }
                //new call
                process_calendar_default(self, true, processingContainer);
            }
        }
        self.find('.basic-search').find('a.button').show();
        

    });
}

function getCurrentViewModeSR(calendar) {
    return calendar.view.type;
}

function saveSearchLastDateSR(calendar) {
    var viewMode = calendar.view.type;
    var dateToSave = '';
    var monthSelected = parseInt(calendar.view.activeStart.getUTCMonth()) + 1;
    if (monthSelected < 10)
        monthSelected = '0' + monthSelected;
    var daySelected = parseInt(calendar.view.activeStart.getUTCDate());
    var startDateView = calendar.view.activeStart.getUTCFullYear() + '-' + monthSelected + '-' + (daySelected < 10 ? '0' + daySelected : daySelected);
    var dayToSave = '';
    var monthToSave = '';
    var yearToSave = '';
    if (viewMode === 'dayGridMonth') {
        monthToSave = moment(startDateView).add(8, 'days').format("MM");
        yearToSave = moment(startDateView).add(8, 'days').format("YYYY");
        if (monthToSave == monthSelected)
            dateToSave = yearToSave + '-' + monthToSave + '-' + (daySelected < 10 ? '0' + daySelected : daySelected);
        else
            dateToSave = yearToSave + '-' + monthToSave + '-01';
    } else {
        dayToSave = moment(startDateView).add(1, 'days').format("DD");
        monthToSave = moment(startDateView).add(1, 'days').format("MM");
        yearToSave = moment(startDateView).add(1, 'days').format("YYYY");
        dateToSave = yearToSave + '-' + monthToSave + '-' + dayToSave;
    }
    var viewModeName = '';
    if (viewMode === 'dayGridMonth')
        viewModeName = 'month';
    else if (viewMode === 'dayGridWeek')
        viewModeName = 'basicWeek';
    else if (viewMode === 'dayGridDay')
        viewModeName = 'agendaDay';

    var data = new Object();
    data['last_date'] = dateToSave;
    data['local_storage_creation_timestamp'] = new Date().getTime();
    data['view_mode'] = viewModeName;
    _assign_value_json_session_storage('calendar-search-last-date', data);

}

function getCalendarSearchLastDateSessionStorageSR() {
    var values = sessionStorage.getItem('calendar-search-last-date');
    if (values != null && values != undefined)
        values = values.trim();
    var calendarSearchSessionStorage = null;
    if (values != 'undefined' && values != '') {
        calendarSearchSessionStorage = JSON.parse(values);
    }
    var lastDate = null;
    var hours = 0;

    if (calendarSearchSessionStorage && calendarSearchSessionStorage.last_date) {
        lastDate = calendarSearchSessionStorage.last_date;
    }

    if (calendarSearchSessionStorage && calendarSearchSessionStorage.local_storage_creation_timestamp) {
        var creation_date_milliseconds = parseInt(calendarSearchSessionStorage.local_storage_creation_timestamp);
        var diff = new Date() - new Date(creation_date_milliseconds);
        hours = Math.abs(diff) / 36e5;
    }

    if (hours > 24) {
        return null;
    }

    return calendarSearchSessionStorage;

}

function searchresult_load_search_shareable_for_default_calendar(self, processingContainer, searchId, isAnonymous, currentCalendar) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var listingFormat = self.find('input[name="listingFormat"]').val();
    var blockId = self.attr('data-block-id');
    var searchResultId = self.find('input[name="searchResultId"]').val();
    if (isAnonymous) {
        //Find parameters in localStorage.
        var searchesSavedStorage = localStorage.getItem('saved-searches-search-result-' + searchResultId);
        if (searchesSavedStorage) {
            var listingSavedSearches = JSON.parse(searchesSavedStorage);


            var savedSearchItem = null;
            listingSavedSearches.forEach(function (v, i) {
                if (v.idSearch == searchId)
                    savedSearchItem = v;
            });
            if (savedSearchItem !== null && savedSearchItem !== undefined) {

                $.ajax({
                    method: "POST",
                    url: urlSite + "search/LoadSavedSearchByParametersCalendar",
                    data: { parameters: savedSearchItem.parameters, listingFormat: listingFormat, blockId: searchResultId },
                    beforeSend: function () {
                        //Display processing
                        processingContainer.show();
                    }
                }).done(function (data) {
                    var jsonData = JSON.parse(data);
                    if (jsonData.code === 200) {
                        self.find('input[name="query-string-form-calendar"]').val(jsonData.queryStringToLoad);
                        if (currentCalendar !== null && currentCalendar !== undefined) {
                            remove_calendar_default_bind_events(self);
                            currentCalendar.destroy();
                        }
                        //new call
                        process_calendar_default(self, true, processingContainer);

                    } else {
                        Swal.fire({
                            title: '',
                            icon: 'error',
                            text: jsonData.message,
                            confirmButtonText: "Ok"
                        });
                    }

                    processingContainer.hide();
                });

            }
        }
    }
    else {
        $.ajax({
            method: "POST",
            url: urlSite + "search/LoadSavedSearchByParametersCalendar",
            data: { searchId: searchId, listingFormat: listingFormat, blockId: searchResultId },
            beforeSend: function () {
                //Display processing
                processingContainer.show();
            }
        }).done(function (data) {
            var jsonData = JSON.parse(data);
            if (jsonData.code === 200) {
                self.find('input[name="query-string-form-calendar"]').val(jsonData.queryStringToLoad);
                if (currentCalendar !== null && currentCalendar !== undefined) {
                    remove_calendar_default_bind_events(self);
                    currentCalendar.destroy();
                }
                //new call
                process_calendar_default(self, true, processingContainer);
            } else {
                Swal.fire({
                    title: '',
                    icon: 'error',
                    text: jsonData.message,
                    confirmButtonText: "Ok"
                });
            }

            processingContainer.hide();
        });


    }
}

function responsive_calendar_widget(self) {
    self.find('.block_processing').removeClass('hide-custom');
    if (self.find('.opportunity-calendar-content .calendar-container-responsive').length > 0) {
        self.find('.opportunity-calendar-content .calendar-container-responsive').empty();
    } else {
        var container = '<div class="opportunity-calendar-content"><div class="calendar-container-responsive"></div></div>';
        self.find('.full-calendar-widget .fc-view-harness').prepend(container);

    }


    var hidePastOccurrenceMobile = self.find('input[name="HidePastOccurrenceMobile"]').val();

    var calendarResponsive = self.find('.calendar-container-responsive');

    //self.find('.block_processing').show();
    if (self.find('.full-calendar-widget .fc-view').hasClass('fc-dayGridMonth-view')) {


        self.find('table.fc-scrollgrid tbody tr td.fc-day').each(function () {
            if (!$(this).hasClass('fc-day-other')) {
                var countEventToDisplay = 0;
                var datejc = $(this).attr('data-date');
                var day = '';
                if ($(this).hasClass('fc-day-sun')) { day = window.translation.sun + ': '; }
                if ($(this).hasClass('fc-day-mon')) { day = window.translation.mon + ': '; }
                if ($(this).hasClass('fc-day-tue')) { day = window.translation.tue + ': '; }
                if ($(this).hasClass('fc-day-wed')) { day = window.translation.wed + ': '; }
                if ($(this).hasClass('fc-day-thu')) { day = window.translation.thu + ': '; }
                if ($(this).hasClass('fc-day-fri')) { day = window.translation.fri + ': '; }
                if ($(this).hasClass('fc-day-sat')) { day = window.translation.sat + ': '; }
                if (day !== '') {
                    var dayNumber = $(this).find('.fc-daygrid-day-top a.fc-daygrid-day-number').text();
                    day = day + dayNumber;
                    var bodyAdd = '<div class="item-calen type-month day-num-' + datejc + '"><div class="title">' + day + '</div>';

                    $(this).find('.fc-daygrid-event-harness').each(function () {
                        var isPastEvent = false;
                        var date = $(this).find('.fc-event-time').text();
                        var title = $(this).find('.fc-event-title').text();
                        var link = $(this).find('a.fc-event');
                        var event_past = '';
                        var green_key = '';
                        var blue_key = '';
                        var black_key = '';
                        if (link.hasClass('fc-past')) { event_past = 'fc-past event_past'; isPastEvent = true; }
                        if (link.hasClass('green-key')) { green_key = 'green_key'; }
                        if (link.hasClass('blue-key')) { blue_key = 'blue_key'; }
                        if (link.hasClass('black-key')) { black_key = 'black_key'; }
                        var urlOpp = link.attr('url-opp');

                        if ((hidePastOccurrenceMobile !== 'true') || (hidePastOccurrenceMobile === 'true' && isPastEvent === false)) {
                            bodyAdd += '<a arial-label="' + title + '" class="fc-event ' + event_past + ' ' + green_key + ' ' + blue_key + ' ' + black_key + '" href="' + urlOpp + '">';
                            bodyAdd += '<div class="fc-content">';
                            if (date !== undefined && date !== null && date !== '') {
                                bodyAdd += '<span class="fc-time"> ' + date + '</span>';
                            }
                            if (title !== null && title !== undefined && title !== '') {
                                bodyAdd += '<span class="fc-title">' + title + '</span>';
                            }
                            bodyAdd += '</div>';
                            bodyAdd += '</a>';
                            countEventToDisplay++;
                        } 



                    });
                    if (countEventToDisplay > 0) {
                        bodyAdd += '<span class="more">More</span></div>';
                        calendarResponsive.append(bodyAdd);
                    }

                }

            }
        });
    }
    else if (self.find('.full-calendar-widget .fc-view').hasClass('fc-dayGridWeek-view')) {
        self.find('table.fc-scrollgrid thead table.fc-col-header tr th').each(function () {
            var daynum = $(this).attr('data-date');
            var bodyAdd = '<div class="item-calen type-Week day-num-' + daynum + '">';
            bodyAdd += '<div class="title"> ' + $(this).find('a.fc-col-header-cell-cushion').text() + '</div>';
            var countEventToDisplay = 0;
            self.find('table.fc-scrollgrid tbody tr td.fc-daygrid-day').each(function () {
                var isPastEvent = false;
                if ($(this).attr('data-date') == daynum) {
                    $(this).find('.fc-daygrid-event-harness a.fc-event').each(function () {
                        var event_past = '';
                        var green_key = '';
                        var blue_key = '';
                        var black_key = '';
                        //var link = $(this).find('.fc-daygrid-event-harness a.fc-event');
                        if ($(this).hasClass('fc-past')) { event_past = 'event_past'; isPastEvent = true;}
                        if ($(this).hasClass('green-key')) { green_key = 'green_key'; }
                        if ($(this).hasClass('blue-key')) { blue_key = 'blue_key'; }
                        if ($(this).hasClass('black-key')) { black_key = 'black_key'; }
                        if ((hidePastOccurrenceMobile !== 'true') || (hidePastOccurrenceMobile === 'true' && isPastEvent === false)) {
                            var urlOpp = $(this).attr('url-opp');
                            bodyAdd += '<a class="fc-event ' + event_past + ' ' + green_key + ' ' + blue_key + ' ' + black_key + '" href="' + urlOpp + '">';
                            var date = $(this).find('.fc-event-time').text();
                            var title = $(this).find('.fc-event-title').text();
                            bodyAdd += '<div class="fc-content">';
                            if (date !== undefined && date !== null && date !== '') {
                                bodyAdd += '<span class="fc-time"> ' + date + '</span>';
                            }
                            if (title !== null && title !== undefined && title !== '') {
                                bodyAdd += '<span class="fc-title">' + title + '</span>';
                            }
                            bodyAdd += '</div>';

                            bodyAdd += '</a>';
                            countEventToDisplay++;
                        }
                        

                    });
                }

                               
            });
            if (countEventToDisplay>0) {
                bodyAdd += '<span class="more"> More</span ></div>';
                calendarResponsive.append(bodyAdd);
            }
            
        });
    }
    else if (self.find('.full-calendar-widget .fc-view').hasClass('fc-dayGridDay-view')) {
        self.find('table.fc-scrollgrid thead table.fc-col-header tr th').each(function () {
            var daynum = $(this).attr('data-date');
            var bodyAdd = '<div class="item-calen type-Week day-num-' + daynum + '">';
            bodyAdd += '<div class="title"> ' + $(this).find('a.fc-col-header-cell-cushion').text() + '</div>';
            self.find('table.fc-scrollgrid tbody tr td.fc-daygrid-day .fc-daygrid-event-harness a.fc-event').each(function () {
                var event_past = '';
                var green_key = '';
                var blue_key = '';
                var black_key = '';
                //var link = $(this).find('.fc-daygrid-event-harness a.fc-event');
                if ($(this).hasClass('fc-past')) { event_past = 'event_past'; }
                if ($(this).hasClass('green-key')) { green_key = 'green_key'; }
                if ($(this).hasClass('blue-key')) { blue_key = 'blue_key'; }
                if ($(this).hasClass('black-key')) { black_key = 'black_key'; }
                var urlOpp = $(this).attr('url-opp');
                bodyAdd += '<a class="fc-event ' + event_past + ' ' + green_key + ' ' + blue_key + ' ' + black_key + '" href="' + urlOpp + '">';
                var date = $(this).find('.fc-event-time').text();
                var title = $(this).find('.fc-event-title').text();
                bodyAdd += '<div class="fc-content">';
                if (date !== undefined && date !== null && date !== '') {
                    bodyAdd += '<span class="fc-time"> ' + date + '</span>';
                }
                if (title !== null && title !== undefined && title !== '') {
                    bodyAdd += '<span class="fc-title">' + title + '</span>';
                }
                bodyAdd += '</div>';

                bodyAdd += '</a>';

            });
            bodyAdd += '<span class="more"> More</span ></div>';
            calendarResponsive.append(bodyAdd);
        });

    }

    self.find('.calendar-container-responsive > .item-calen').each(function () {
        if ($(this).find('.fc-event').length > 0) {
            $(this).find('.fc-event').each(function (index5, el5) {
                if (index5 < 3) {
                    $(this).addClass('active');
                    $(this).siblings('.more').hide();
                } else {
                    $(this).addClass('hide');
                    $(this).siblings('.more').show();
                }
            });
        } else {
            $(this).find('.more').hide();
        }
    });

    calendarResponsive.find('span.more').on('click', function(){
        var i_last = $(this).siblings('.active').last();
        i_last.nextAll("*:lt(3)").removeClass('hide').addClass('active');
        if ($(this).siblings('.fc-event').last().hasClass('active')) {
            $(this).hide();
        }
    });
    if (self.hasClass('search-block-as-corporate'))
        self.find('.block_processing').hide();
    self.find('.full-calendar-widget .fc-view').hide();
} 


function fix_functionality_for_accesibility(self) {
    self.find('h2.fc-toolbar-title').attr("tabindex", "0");
    self.find('button.fc-dayGridMonth-button').attr("tabindex", "0");
    self.find('button.fc-dayGridMonth-button').attr("aria-label", "Month, click here to update the results and display them by Month");
    self.find('button.fc-dayGridWeek-button').attr("tabindex", "0");
    self.find('button.fc-dayGridWeek-button').attr("aria-label", "Week, click here to update the results and display them by Week");
    self.find('button.fc-dayGridDay-button').attr("tabindex", "0");
    self.find('button.fc-dayGridDay-button').attr("aria-label", "Day, click here to update the results and display them by the current Day");
    self.find('button.fc-prev-button').attr("tabindex", "0");
    self.find('button.fc-prev-button').attr("aria-label", "Previous, click here to update the results and display the Previous Month, Week or Day");
    self.find('button.fc-dayGridDay-button').attr("tabindex", "0");
    self.find('button.fc-dayGridDay-button').attr("aria-label", "Next, click here to update the results and display the Next Month, Week or Day");

}


function fix_image_thumbnail_result(self, listingFormat) {
    if ($('body').hasClass('mobile') || $('body').hasClass('tablet')) {
        var format = self.find('input[name="listingFormat"]').val();
        if (listingFormat !== null && listingFormat !== undefined && listingFormat !== '')
            format = listingFormat;
        if (format !== "CALENDAR_WITHOUT_TILES" && format !== "LISTING_WITHOUT_TILES") {
            var selector = '';
            if (format === "LISTING_WITH_TILES") {
                selector = "#opportunities-search-block .content-section .opportunities-result .opportunities-service .image-background";
            }
            else if (format === "CALENDAR_WITH_TILES") {
                selector = "#opportunities-search-block .content-section .opportunities-result .opportunity-date-container .image-background";
            }

            if (selector !== '') {
                self.find(selector).each(function (index, item) {
                    var width = $(item).width();
                    var height = width;
                    $(item).height(height);
                });
            }
        }
    }
}

function backend_load_values_from_sf_populate_modal_searchresult(elementReveal, showProcessing, jsonResult, fromSearchResult) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
    if (isHybridIntegration()) {
        if (window.instance_prefix_hybrid !== null && window.instance_prefix_hybrid !== undefined && window.instance_prefix_hybrid !== 'none') {
            instancePrefix = window.instance_prefix_hybrid;
        }
    }
    var selector = $(elementReveal);
    //Fields to populate modal
    var fieldsModal = [instancePrefix + 'Opportunity_Characteristics__c', instancePrefix + 'Impact_Area_Local__c', instancePrefix + 'Program_Area_Local__c', instancePrefix + 'Primary_Impact_Area__c'];
    $.ajax({
        type: 'POST',
        url: urlSite + 'Admin/GetValuesSFByObjectAndFieldNames',
        data: { sfObject: instancePrefix + 'Volunteer_Opportunity__c', sfField: fieldsModal, includeSession: true },
        beforeSend: function () {
            if (showProcessing) selector.find('.processing_screen').show();
        },
        success: function (data) {
            data = JSON.parse(data);

            if (data.status === 'ok') {
                if (data.fields) {
                    data.fields.forEach(function (item) {
                        var salesforceField = item['field'];
                        var fieldModal = selector.find('[data-salesforce-field="' + salesforceField + '"]').first();
                        var isMultiple = (fieldModal.attr('multiple') == 'multiple') ? true : false;

                        fieldModal.val('');
                        fieldModal.empty();

                        //Append options 
                        //validating if there is a custom
                        var isThereCustom = false;
                        item.values.forEach(function (itemValue) {
                            if (itemValue && itemValue.group === 'custom') {
                                isThereCustom = true;
                            }
                        });

                        if (isThereCustom === true) {
                            data.groups.forEach(function (groupItem) {
                                if (groupItem) {
                                    var group = $('<optgroup></optgroup>').attr('label', groupItem.label);
                                    item.values.forEach(function (itemValue) {

                                        if (itemValue && itemValue.group == groupItem.value) {
                                            var option = $('<option></option>').attr('value', itemValue.value).text(itemValue.label);
                                            group.append(option);
                                        }
                                    });
                                    fieldModal.append(group);
                                }
                            });

                        } else {
                            item.values.forEach(function (itemValue) {
                                var option = $('<option></option>').attr('value', itemValue.value).text(itemValue.label);
                                fieldModal.append(option);
                            });
                        }

                        //Populate selects with parameters
                        if (jsonResult) {
                            //Search resultblock
                            //Criteria impact area

                            if (fromSearchResult == false) {
                                //Featured opportunity
                                //Criteria Impact area
                                if (jsonResult.issueArea != null &&
                                    typeof jsonResult.issueArea != 'undefined' &&
                                    jsonResult.issueArea != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.IssueArea"]').val(jsonResult.issueArea.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.IssueArea"]').val('');
                                }

                                //Criteria Opportunity Characteristics
                                if (jsonResult.customFilter != null &&
                                    typeof jsonResult.customFilter != 'undefined' &&
                                    jsonResult.customFilter != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.OpportunityCharacteristics"]').val(jsonResult.customFilter.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.OpportunityCharacteristics"]').val('');
                                }

                                //Criteria Impact Area (Local)
                                if (jsonResult.criteriaImpactArea != null &&
                                    typeof jsonResult.criteriaImpactArea != 'undefined' &&
                                    jsonResult.criteriaImpactArea != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.ImpactAreaLocal"]').val(jsonResult.criteriaImpactArea.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.ImpactAreaLocal"]').val('');
                                }

                                //Program Area (Local)
                                if (jsonResult.criteriaProgramArea != null &&
                                    typeof jsonResult.criteriaProgramArea != 'undefined' &&
                                    jsonResult.criteriaProgramArea != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.ProgramAreaLocal"]').val(jsonResult.criteriaProgramArea.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.ProgramAreaLocal"]').val('');
                                }

                            } else {
                                //Search Result
                                //Criteria Impact area
                                if (jsonResult.cmsBlock.CriteriaIssueArea != null &&
                                    typeof jsonResult.cmsBlock.CriteriaIssueArea != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaIssueArea != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.IssueArea"]').val(jsonResult.cmsBlock.CriteriaIssueArea.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.IssueArea"]').val('');
                                }

                                //Criteria Opportunity Characteristics
                                if (jsonResult.cmsBlock.CriteriaCustomFilter != null &&
                                    typeof jsonResult.cmsBlock.CriteriaCustomFilter != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaCustomFilter != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.OpportunityCharacteristics"]').val(jsonResult.cmsBlock.CriteriaCustomFilter.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.OpportunityCharacteristics"]').val('');
                                }

                                //Criteria Impact Area (Local)
                                if (jsonResult.cmsBlock.CriteriaImpactAreaLocal != null &&
                                    typeof jsonResult.cmsBlock.CriteriaImpactAreaLocal != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaImpactAreaLocal != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.ImpactAreaLocal"]').val(jsonResult.cmsBlock.CriteriaImpactAreaLocal.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.ImpactAreaLocal"]').val('');
                                }

                                //Program Area (Local)
                                if (jsonResult.cmsBlock.CriteriaProgramAreaLocal != null &&
                                    typeof jsonResult.cmsBlock.CriteriaProgramAreaLocal != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaProgramAreaLocal != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.ProgramAreaLocal"]').val(jsonResult.cmsBlock.CriteriaProgramAreaLocal.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.ProgramAreaLocal"]').val('');
                                }

                                //Type
                                if (jsonResult.cmsBlock.ScheduleAndRegisterType != null &&
                                    typeof jsonResult.cmsBlock.ScheduleAndRegisterType != 'undefined' &&
                                    jsonResult.cmsBlock.ScheduleAndRegisterType != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.CriteriaType"]').val(jsonResult.cmsBlock.ScheduleAndRegisterType.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.CriteriaType"]').val('');
                                }

                                if (jsonResult.cmsBlock.CriteriaLocationType != null &&
                                    typeof jsonResult.cmsBlock.CriteriaLocationType != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaLocationType != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.CriteriaLocationType"]').val(jsonResult.cmsBlock.CriteriaLocationType);
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.CriteriaLocationType"]').val('');
                                }

                                //Criteria Age Of Volunteers Range
                                if (jsonResult.cmsBlock.CriteriaAgeOfVolunteersRange != null &&
                                    typeof jsonResult.cmsBlock.CriteriaAgeOfVolunteersRange != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaAgeOfVolunteersRange != '') {
                                    $(elementReveal + ' input[name="oppBlockInfo.CriteriaAgeOfVolunteersRange"]').val(jsonResult.cmsBlock.CriteriaAgeOfVolunteersRange);
                                }
                                else {
                                    $(elementReveal + ' input[name="oppBlockInfo.CriteriaAgeOfVolunteersRange"]').val('');
                                }

                                //Criteria Court Ordered
                                if (jsonResult.cmsBlock.CriteriaCourtOrdered != null &&
                                    typeof jsonResult.cmsBlock.CriteriaCourtOrdered != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaCourtOrdered != '') {
                                    $(elementReveal + ' input[name="oppBlockInfo.CriteriaCourtOrdered"]').prop('checked', true);
                                }
                                else {
                                    $(elementReveal + ' input[name="oppBlockInfo.CriteriaCourtOrdered"]').prop('checked', false);
                                }

                                //Criteria Groups
                                if (jsonResult.cmsBlock.CriteriaGroups != null &&
                                    typeof jsonResult.cmsBlock.CriteriaGroups != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaGroups != '') {
                                    $(elementReveal + ' input[name="oppBlockInfo.CriteriaGroups"]').prop('checked', true);
                                }
                                else {
                                    $(elementReveal + ' input[name="oppBlockInfo.CriteriaGroups"]').prop('checked', false);
                                }

                                //Criteria Groups
                                if (jsonResult.cmsBlock.CriteriaRSVP != null &&
                                    typeof jsonResult.cmsBlock.CriteriaRSVP != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaRSVP != '') {
                                    $(elementReveal + ' input[name="oppBlockInfo.CriteriaRSVP"]').prop('checked', true);
                                }
                                else {
                                    $(elementReveal + ' input[name="oppBlockInfo.CriteriaRSVP"]').prop('checked', false);
                                }

                            }
                        }

                        //Reload multiselect
                        if (isMultiple) {
                            apply_backend_multiselect(elementReveal + ' [data-salesforce-field="' + salesforceField + '"]');
                            fieldModal.multiselect('reload');
                        }
                    });
                    apply_backend_multiselect(elementReveal + ' select[name="oppBlockInfo.CriteriaType"]');
                }
            }
            else {
                console.warn('Error loading values from SF to populate featuredOppModal', data.message);
            }

            if (showProcessing) selector.find('.processing_screen').hide();
        }
    });
}
;
var googleMapAPIAvailable = false;
$(document).ready(function () {
	//Set info of sharingPortal plus
	set_info_sharing_portal_plus_page();
});

//Load methods after load translations
function after_translation_resource_load_featuredOpp() {
	//Backend block
	backend_featured_opportunities();

	// To load google API if is needed
	load_google__api();
	
	// Get location from featured opportunities block
	set_location_for_featured_opportunities();
}

function backend_featured_opportunities() {
	//Get if site is sharingPortalPlus
	if (!is_backend_page()) return;
	var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

	$(document).on('click', 'a[data-element-reveal="featured-opp-settings"]', function () {
		var blockID = $(this).attr('data-block-id');
		var formSelector = '#featured-opp-settings';

		//  Open Modal
		$('#featured-opp-settings').foundation('open');

		//Reload elements inside modal
		$('#featured-opp-settings').foundation();

		initiate_jquery_validate_reveal($('#featured-opp-form'), 'featured-opp-form');

		authorized_for_in_advance_section('#featured-opp-form');
		
		if (blockID != 0) {
			// Show delete link
			$('#featured-opp-settings').find('.delete_block').show();
			$("#featured-opp-settings .rollback-link").show();
			$("#featured-opp-settings .rollback-link").attr("data-block-id", blockID);

			$.ajax({
				method: "POST",
				url: urlSite + "Admin/GetFeatureOppBlock",
				data: { blockId: blockID },
				beforeSend: function () {
					$('#featured-opp-settings').find('.processing_screen').show();
				}
			}).done(function (data) {
                var jsonResult = JSON.parse(data);
				$('#featured-opp-settings').find('.processing_screen').hide();

				if (jsonResult.status === 200) {
					//Backend_load_issue_areas_featured_opportunities(false);
					backend_load_values_from_sf_populate_modal('#featured-opp-form', true, jsonResult, false);

					$('#featured-opp-settings').find('.processing_screen').show();

					//Validate unique region
					hideVisibleOptions(jsonResult.uniqueRegion, '#featured-opp-advanced-settings');

					// Loading form's data
                    $('#featured-opp-form input[name="oppBlockInfo.Block.ID"]').val(jsonResult.blockId);
                    $('#featured-opp-form select[name="oppBlockInfo.OpenOpportunityIn"]').val(jsonResult.openOpportunityIn);
                    $('#featured-opp-form select[name="oppBlockInfo.LinkLocation"]').val(jsonResult.linkLocation);

					$('#featured-opp-form input[name="oppBlockInfo.ID"]').val(jsonResult.featuredId);
					$('#featured-opp-form input[name="oppBlockInfo.Block.SystemName"]').val(jsonResult.systemName);
                    $('#featured-opp-form input[name="oppBlockInfo.Block.CssClass"]').val(jsonResult.cssClass);
					$('#featured-opp-form select[name="oppBlockInfo.Block.Region_ID"]').val(jsonResult.region);
					$('#featured-opp-form select[name="oppBlockInfo.Criteria"]').val(jsonResult.criteria);
					//$('#featured-opp-form select[name="oppBlockInfo.CriteriaType"]').val(jsonResult.criteriaType);
					$('#featured-opp-form select[name="oppBlockInfo.CriteriaLocationType"]').val(jsonResult.criteriaLocationType);
                    $('#featured-opp-form select[name="oppBlockInfo.CriteriaManagedBy"]').val(jsonResult.criteriaManagedBy);
                    $('#featured-opp-form select[name="oppBlockInfo.CriteriaProjectType"]').val(jsonResult.criteriaProjectType);
                    $('#featured-opp-form input[name="oppBlockInfo.CriteriaOrganizationServed"]').val(jsonResult.criteriaOrganizationServed);
                    $('#featured-opp-form input[name="oppBlockInfo.OccStarDate"]').val(jsonResult.OccStarDate);
                    $('#featured-opp-form input[name="oppBlockInfo.OccEndDate"]').val(jsonResult.OccEndDate);

                    $('#featured-opp-form input[name="oppBlockInfo.CriteriaAgeOfVolunteersRange"]').val(jsonResult.ageVolunteers);
                    $('#featured-opp-form input[name="oppBlockInfo.CriteriaInvitationCode"]').val(jsonResult.criteriaInvitationCode);

					if (jsonResult.titles != null) {
						jsonResult.titles.forEach(function (field) {
							var lang = field.language;
							$('#featured-opp-form input[name="title-' + lang + '"]').val(field.title);
						});
					}
					$('#featured-opp-form select[name="oppBlockInfo.DisplayMode"]').val(jsonResult.displayMode);
					if (jsonResult.numberOpp != 0) {
						$('#featured-opp-form input[name="oppBlockInfo.NumberOfOpp"]').val(jsonResult.numberOpp);
					}
					if(jsonResult.displayMode === 3) {
						$('select[name="oppBlockInfo.DisplayMode"]').trigger('change');
					}

                    if (jsonResult.subsiteId !== '0' && jsonResult.subsiteId !== 0) {
                        if ($('#featured-opp-form select[name="subsite_id"]').length > 0) {
                            $('#featured-opp-form select[name="subsite_id"]').val(jsonResult.subsiteId);
                        } else {
                            $('#featured-opp-form input[name="subsite_id"]').val(jsonResult.subsiteId);
                        }
                    }

					$('#featured-opp-form input[name="oppBlockInfo.NumberOfRows"]').val(jsonResult.numberRows);
					$('#featured-opp-form input[name="oppBlockInfo.Block.Weight"]').val(jsonResult.sortWeight);

					//Checkboxs
					$('#featured-opp-form input[name="oppBlockInfo.CriteriaCourtOrdered"]').prop('checked', jsonResult.courtOrdered);
					$('#featured-opp-form input[name="oppBlockInfo.CriteriaGroups"]').prop('checked', jsonResult.groups);
					$('#featured-opp-form input[name="oppBlockInfo.CriteriaRSVP"]').prop('checked', jsonResult.rsvp);
                    $('#featured-opp-form input[name="oppBlockInfo.DisplayOnlyWithImage"]').prop('checked', jsonResult.displayOnlyWithImage);
					$('#featured-opp-form input[name="oppBlockInfo.ShowOppTitle"]').prop('checked', jsonResult.showOppTitle);
					$('#featured-opp-form input[name="oppBlockInfo.ShowAvailableSpots"]').prop('checked', jsonResult.showAvailableSpots);
					$('#featured-opp-form input[name="oppBlockInfo.ShowShortDesc"]').prop('checked', jsonResult.showShortDesc);
					$('#featured-opp-form input[name="oppBlockInfo.ShowLocation"]').prop('checked', jsonResult.showLocation);
					$('#featured-opp-form input[name="oppBlockInfo.ShowDateAndTime"]').prop('checked', jsonResult.showDateTime);
					$('#featured-opp-form input[name="oppBlockInfo.ShowRsvpIndicator"]').prop('checked', jsonResult.showRsvp);
					$('#featured-opp-form input[name="oppBlockInfo.Block.Enabled"]').prop('checked', jsonResult.enabled);
					if (jsonResult.showBlockTitle) {
						$('#featured-opp-form input[name="oppBlockInfo.Block.ShowTitle"]').val(jsonResult.showBlockTitle);
						$('#featured-opp-form input.featured-show-title').prop('checked', true);
					}
					else {
						$('#featured-opp-form input[name="oppBlockInfo.Block.ShowTitle"]').val(null);
						$('#featured-opp-form input.featured-show-title').prop('checked', false);
					}

					$('#featured-opp-form input[name="oppBlockInfo.ShowImage"]').prop('checked', jsonResult.showImage);
					$('#featured-opp-form input[name="oppBlockInfo.ShowAdditionalButton"]').prop('checked', jsonResult.showAdditionalButton);
					$('#featured-opp-form input[name="oppBlockInfo.ShowOrganization"]').prop('checked', jsonResult.showOrganization);
					$('#featured-opp-form input[name="oppBlockInfo.ShowMap"]').prop('checked', jsonResult.showMap);
					$('#featured-opp-form input[name="oppBlockInfo.TextAdditionalButton"]').val(jsonResult.textAdditionalButton);
					$('#featured-opp-form select[name="oppBlockInfo.TypeButton"]').val(jsonResult.typeAdditionalButton);
					$('#featured-opp-form input[name="oppBlockInfo.UrlAdditionalButton"]').val(jsonResult.urlAdditionalButton);
					$('#featured-opp-form #featured_visibility_' + jsonResult.visibleTo).prop("checked", true);
					if (jsonResult.visibleTo == 1 || jsonResult.visibleTo == 2) {
						$('#featured-opp-form #featured_exception_url_container').removeClass('is-hidden');
					}
					$('#featured-opp-form textarea[name="oppBlockInfo.Block.VisibilityUrls"]').text(jsonResult.visibilityUrl);
					$('#featured-opp-form input[name="oppBlockInfo.NumberOfRows"]').val(jsonResult.numberRows);
					$('#featured-opp-form input[name="oppBlockInfo.Block.Weight"]').val(jsonResult.sortWeight);

					if(jsonResult.showAdditionalButton) { //Validation additional button
						$('#featured-opp-form').find('input[name="oppBlockInfo.TextAdditionalButton"]').parents('.columns').first().fadeIn();
						$('#featured-opp-form').find('input[name="oppBlockInfo.UrlAdditionalButton"]').parents('.columns').first().fadeIn();
						$('#featured-opp-form').find('select[name="oppBlockInfo.TypeButton"]').parents('.columns').first().fadeIn();
					}
					else {
						$('#featured-opp-form').find('input[name="oppBlockInfo.TextAdditionalButton"]').parents('.columns').first().fadeOut();
						$('#featured-opp-form').find('input[name="oppBlockInfo.UrlAdditionalButton"]').parents('.columns').first().fadeOut();
						$('#featured-opp-form').find('select[name="oppBlockInfo.TypeButton"]').parents('.columns').first().fadeOut();
					}

					$('#featured-opp-form #featured_visibility_' + jsonResult.visibleTo).prop("checked", true);
					if (jsonResult.visibleTo == 1 || jsonResult.visibleTo == 2) {
						$('#featured-opp-form #featured_exception_url_container').removeClass('is-hidden');
					}
					$('#featured-opp-form textarea[name="oppBlockInfo.Block.VisibilityUrls"]').text(jsonResult.visibilityUrl);

					$('#featured-opp-form select[name="advance-setting-authorized-for"]').val(jsonResult.authorizedFor);
					$('#featured-opp-form select[name="advance-setting-authorized-for-rol"]').val(jsonResult.authorizedForRole);

					if (jsonResult.authorizedFor == 1) {
						$('#featured-opp-form .authorized-for-role').removeClass("hide");
                    }

					//Manage multiregions
					if(jsonResult.regionsMultiple) {
						//Apply multiselect widget to region select
						apply_backend_multiselect_group(formSelector + ' select[name="featured_opp_region_multiple"]', false, jsonResult.regionsMultiple);
                    }

                    if (jsonResult.noResultsMessage !== null && jsonResult.noResultsMessage !== undefined && jsonResult.noResultsMessage !== '') {
                        var items_languages = JSON.parse(jsonResult.noResultsMessage);
                        items_languages.forEach(function (value, index) {
                            var selector = "no-results-featuredopp-" + value.languageID;
                            
                            $(formSelector).find('textarea[name="' + selector + '"]').text(value.title);
                            
                        });
                    }
                    $('.featureOppckeditor').each(function () {
                        var languageID = $(this).attr('data-language-id');
                        initialize_ckeditor_featureOpp('no-results-featuredopp-', languageID);
                        add_event_for_ckeditor('no-results-featuredopp-' + languageID, "#featured-opp-form");
                    });
                    
                    

                    add_event_for_fields_in_modal('#featured-opp-form');
                    
				}
				else if (jsonResult.status === 500) {
					Swal.fire({
						title: window.translation.error,
						text: jsonResult.message,
						icon: "error",
						closeOnConfirm: true
					});
				}                
			});
		}
		else {
			$("#featured-opp-settings .rollback-link").hide();

			//Validate unique region
			hideVisibleOptions(false, '#featured-opp-advanced-settings');

			//Initialize fields
			$(formSelector + ' select[name="oppBlockInfo.Block.Region_ID"]').val($('select[name="oppBlockInfo.Block.Region_ID"] option:first-child').val());
			$(formSelector + ' input[name="oppBlockInfo.Block.Enabled"]').prop('checked', true);
			$('#featured_exception_url_container').removeClass('is-hidden');
			$(formSelector).find('input[name="oppBlockInfo.Block.Visibility"][value="2"]').prop('checked', true);
			$(formSelector + ' textarea[name="oppBlockInfo.Block.VisibilityUrls"]').val('');
            $(formSelector).find('input[name="subsite_id"]').val('');
            $(formSelector).find('select[name="subsite_id"]').val('0');
			$(formSelector).find('input[name="oppBlockInfo.Block.ID"]').val('');
			$(formSelector).find('input[name="oppBlockInfo.ID"]').val('');
            $(formSelector).find('input[name="oppBlockInfo.Block.CssClass"]').val('');
			$(formSelector).find('input[name="oppBlockInfo.TextAdditionalButton"]').parents('.columns').first().addClass('hide-custom');
			$(formSelector).find('input[name="oppBlockInfo.UrlAdditionalButton"]').parents('.columns').first().addClass('hide-custom');
			$(formSelector).find('select[name="oppBlockInfo.TypeButton"]').parents('.columns').first().addClass('hide-custom');
			$(formSelector).find('select[name="oppBlockInfo.DisplayMode"]').val(0);
			$(formSelector).find('input[name="oppBlockInfo.CriteriaAgeOfVolunteersRange"]').val('');
			$(formSelector).find('select[name="oppBlockInfo.DisplayMode"]').trigger('change');

			//Checkboxs
			$('#featured-opp-form input[name="oppBlockInfo.CriteriaCourtOrdered"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.CriteriaGroups"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.CriteriaRSVP"]').prop('checked', false);
            $('#featured-opp-form input[name="oppBlockInfo.DisplayOnlyWithImage"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowOppTitle"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowShortDesc"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowAvailableSpots"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowLocation"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowDateAndTime"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowRsvpIndicator"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.Block.ShowTitle"]').val(null);
			$('#featured-opp-form input.featured-show-title').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowImage"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowAdditionalButton"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowOrganization"]').prop('checked', false);
			$('#featured-opp-form input[name="oppBlockInfo.ShowMap"]').prop('checked', false);

			// Delete link
			$('#featured-opp-settings').find('.delete_block').hide();

			backend_load_values_from_sf_populate_modal('#featured-opp-form', true, null, false);

			$('#featured-opp-form input[name="oppBlockInfo.NumberOfRows"]').val(1);

			//Manage multiregions field
			apply_backend_multiselect_group(formSelector + ' select[name="featured_opp_region_multiple"]', false, '');


            add_event_for_fields_in_modal('#featured-opp-form');
            $('#featured-opp-settings .featureOppckeditor').each(function () {                
                var languageId = $(this).data('language-id');
                $('#no-results-featuredopp-' + languageId).text('');
                initialize_ckeditor_featureOpp('no-results-featuredopp-', languageId);
                
                add_event_for_ckeditor('no-results-featuredopp-' + languageId, "#featured-opp-form");
            });

		}
	});

    $(document).on('click', '#featured-opp-form button.submit-button', function () {

        for (var i in CKEDITOR.instances) {
            if (CKEDITOR.instances[i].name.indexOf("no-results-featuredopp") != -1) {
                $("#" + CKEDITOR.instances[i].name).val(escape(CKEDITOR.instances[i].getData()));
            }
        }
		var self = $('#featured-opp-settings');
		var formData = $("#featured-opp-form").serializeObject();
		
		if (!validate_url_fields_backend('#featured-opp-form', 'input[name="oppBlockInfo.Block.Visibility"]', 'textarea[name="oppBlockInfo.Block.VisibilityUrls"]'))
			return false;

		//Fix values with checkbox
		formData['oppBlockInfo.CriteriaCourtOrdered'] = (formData['oppBlockInfo.CriteriaCourtOrdered']) ? true : false;
		formData['oppBlockInfo.CriteriaGroups'] = (formData['oppBlockInfo.CriteriaGroups']) ? true : false;
        formData['oppBlockInfo.CriteriaRSVP'] = (formData['oppBlockInfo.CriteriaRSVP']) ? true : false;
        formData['oppBlockInfo.DisplayOnlyWithImage'] = (formData['oppBlockInfo.DisplayOnlyWithImage']) ? true : false;
		formData['oppBlockInfo.ShowOppTitle'] = (formData['oppBlockInfo.ShowOppTitle']) ? true : false;
		formData['oppBlockInfo.ShowShortDesc'] = (formData['oppBlockInfo.ShowShortDesc']) ? true : false;
		formData['oppBlockInfo.ShowAvailableSpots'] = (formData['oppBlockInfo.ShowAvailableSpots']) ? true : false;
		formData['oppBlockInfo.ShowLocation'] = (formData['oppBlockInfo.ShowLocation']) ? true : false;
		formData['oppBlockInfo.ShowDateAndTime'] = (formData['oppBlockInfo.ShowDateAndTime']) ? true : false;
		formData['oppBlockInfo.ShowRsvpIndicator'] = (formData['oppBlockInfo.ShowRsvpIndicator']) ? true : false;
		formData['oppBlockInfo.Block.Enabled'] = (formData['oppBlockInfo.Block.Enabled']) ? true : false;
		formData['oppBlockInfo.Block.ShowTitle'] = (formData['oppBlockInfo.Block.ShowTitle']) ? true : false;
		formData['oppBlockInfo.ShowImage'] = (formData['oppBlockInfo.ShowImage']) ? true : false;
		formData['oppBlockInfo.ShowAdditionalButton'] = (formData['oppBlockInfo.ShowAdditionalButton']) ? true : false;
		formData['oppBlockInfo.ShowOrganization'] = (formData['oppBlockInfo.ShowOrganization']) ? true : false;
		formData['oppBlockInfo.ShowMap'] = (formData['oppBlockInfo.ShowMap']) ? true : false;

		if ($('#featured-opp-form').valid()) {
			$.ajax({
				method: "POST",
				url: urlSite + "Admin/AddOrUpdateFeatureOppBlock",
				data: formData,
				beforeSend: function () {
					self.find('.processing_screen').show();
				}
			}).done(function (data) {
				var jsonResult = JSON.parse(data);

                if (jsonResult.status === 'ok') {
                    Swal.fire({
                        title: window.translation.success,
                        text: 'Featured Opportunity Saved Successfully',
                        icon: 'success',
                        closeOnConfirm: true
                    }).then(function (result) {
                        self.foundation('close');
                        location.reload(true);
                    });

				}
				else {
					Swal.fire({
						title: window.translation.error,
						text: jsonResult.message,
						icon: "error",
						closeOnConfirm: true
					});

				}

				self.find('.processing_screen').hide();

				return false;
			});
		}


		return false;
	});

	$(document).on('click', '#featured-opp-form a.delete_block', function () {
		var blockId = $(this).parents('form').find('input[name="oppBlockInfo.Block.ID"]').val();
		var datareveal = $(this).parents('.reveal').first().attr('id');
		var selfModal = $(this).parents('form');

        if (blockId && blockId !== '0') {

            Swal.fire({
                title: window.translation.are_you_sure,
                text: 'Do you want delete this block?',
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true

            }).then(function (result) {
                if (result.isConfirmed) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/DeleteFeaturedOppBlock",
                        data: { blockId: blockId.toString() },
                        beforeSend: function () {
                            selfModal.find('.processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        if (jsonResult.status.toString() === '200') {
                            Swal.fire({
                                title: window.translation.success,
                                text: jsonResult.message,
                                icon: "success",
                                closeOnConfirm: true
                            }).then(function (result2) {
                                $('#' + datareveal).foundation('close');
                                Swal.close();
                                location.reload(true);
                            });

                        } else {

                            Swal.fire({
                                title: window.translation.error,
                                text: jsonResult.message,
                                icon: "error",
                                closeOnConfirm: true
                            }).then(function (result2) {
                                $('#' + datareveal).foundation('close');
                                Swal.close();

                            });
                        }
                    });

                }
            });
		}
	});

	//Show additional button
	$(document).on('change', '#featured-opp-form input[name="oppBlockInfo.ShowAdditionalButton"]', function() {
		var value = $(this).prop('checked');

		if(!value) { //Display all field associated
			$('#featured-opp-form').find('input[name="oppBlockInfo.TextAdditionalButton"]').parents('.columns').first().fadeOut();
			$('#featured-opp-form').find('input[name="oppBlockInfo.UrlAdditionalButton"]').parents('.columns').first().fadeOut();
			$('#featured-opp-form').find('select[name="oppBlockInfo.TypeButton"]').parents('.columns').first().fadeOut();
		}
		else {
			$('#featured-opp-form').find('input[name="oppBlockInfo.TextAdditionalButton"]').parents('.columns').first().fadeIn();
			$('#featured-opp-form').find('input[name="oppBlockInfo.UrlAdditionalButton"]').parents('.columns').first().fadeIn();
			$('#featured-opp-form').find('select[name="oppBlockInfo.TypeButton"]').parents('.columns').first().fadeIn();

			$('#featured-opp-form').find('input[name="oppBlockInfo.TextAdditionalButton"]').val('');
			$('#featured-opp-form').find('input[name="oppBlockInfo.UrlAdditionalButton"]').val('');
		}
	});

	//Display mode "Map" disabled show map checkbox
	$(document).on('change', '#featured-opp-form select[name="oppBlockInfo.DisplayMode"]', function() {
		var mode = $(this).val();
		var modal = $('#featured-opp-form');

		if(mode === '3') {
			modal.find('input[name="oppBlockInfo.ShowMap"]').parents('.columns').first().fadeOut();
			modal.find('input[name="oppBlockInfo.NumberOfRows"]').parents('.columns').first().fadeOut();
			modal.find('input[name="oppBlockInfo.ShowShortDesc"]').parents('.row').first().fadeOut();
			modal.find('input[name="oppBlockInfo.ShowAvailableSpots"]').parents('.row').first().fadeOut();
			modal.find('input[name="oppBlockInfo.ShowLocation"]').parents('.row').first().fadeOut();
			modal.find('input[name="oppBlockInfo.ShowImage"]').parents('.row').first().fadeOut();
			modal.find('select[name="oppBlockInfo.CriteriaLocationType"]').val("Address");
			modal.find('.location-type-section').addClass('hide');
		}
		else if(modal.find('input[name="oppBlockInfo.ShowMap"]').parents('.columns').first().css('display') == 'none') {
			modal.find('input[name="oppBlockInfo.ShowMap"]').parents('.columns').first().fadeIn();
			modal.find('input[name="oppBlockInfo.NumberOfRows"]').parents('.columns').first().fadeIn();
			modal.find('input[name="oppBlockInfo.ShowShortDesc"]').parents('.row').first().fadeIn();
			modal.find('input[name="oppBlockInfo.ShowAvailableSpots"]').parents('.row').first().fadeIn();
			modal.find('input[name="oppBlockInfo.ShowLocation"]').parents('.row').first().fadeIn();
			modal.find('input[name="oppBlockInfo.ShowImage"]').parents('.row').first().fadeIn();
			modal.find('select[name="oppBlockInfo.CriteriaLocationType"]').val("");
			modal.find('.location-type-section').removeClass('hide');
		}
	});

	$(document).on('change', '#featured-opp-form input.featured-show-title', function () {
		var checked = $(this).prop('checked');
		$('#featured-opp-form input.featured-show-title').prop('checked', checked);
		if (checked) {
			$('#featured-opp-form input[name="oppBlockInfo.Block.ShowTitle"]').val(checked);
		}
		else {
			$('#featured-opp-form input[name="oppBlockInfo.Block.ShowTitle"]').val(null);
		}
	});

	if($('#featured-opp-settings').length > 0){
		var self = $('#featured-opp-settings');
		var currentDate = moment().format(window.MomentDateFormat);
		var optionDatePickerStart = getOptionForDatePicker(null, true, null);
		var startFieldInput = self.find('input[name="oppBlockInfo.OccStarDate"]');
		startFieldInput.fdatepicker('remove');
		var startField = startFieldInput.fdatepicker(optionDatePickerStart).on('changeDate', function (ev) {
			if(self.find('input[name="oppBlockInfo.OccEndDate"]').val()!=''){
				if (ev.date.valueOf() > endField.date.valueOf()) {
					var newDate = new Date(ev.date)
					newDate.setDate(newDate.getDate() + 1);
					endField.update(newDate);
				}
			}
		}).data('datepicker');
		var optionDatePickerEnd = getOptionForDatePicker(null, true, startField);
		var endFieldInput = self.find('input[name="oppBlockInfo.OccEndDate"]');
		endFieldInput.fdatepicker('remove');
		var endField = endFieldInput.fdatepicker(optionDatePickerEnd).data('datepicker');
	}
}


function load_google__api() {

	//featured_map
	if ($('body .featureOppContainer div.featured_map').length > 0) {
		//It means that atleast one block needs google maps
		$.getScript("https://maps.googleapis.com/maps/api/js?key=" + get_gmap_api_key(), function () {
			googleMapAPIAvailable = true;

			//now verify if exists blocks waiting for google maps to paint
			$('body .featureOppContainer.showmap').each(function () {
				var self = $(this);
				var blockId = self.attr('data-block-id');
				var locations = self.find('input[name="occ_information_map"]').val();
				var isProccessed = self.find('input[name="map_processed"]').val();

				if (isProccessed == "false" && locations !== "none") {
					var mapContainer = document.getElementById('featured_map_' + blockId);
					set_markers_to_map_featured_opportunities(mapContainer, self);
				}
			});

		});
    }
}
function load_block_data_featured_opportunities_nearest(position) {

	$('body .featureOppContainer.nearestblock').each(function () {
		try
		{
			load_block_data_featured_opportunities(position, $(this));
		}catch (e) {
			window.console && console.error(e)
		}
	});
}

function set_location_for_featured_opportunities() {
	if ($('body .featureOppContainer').length > 0) {
		var existBlockWithLocation = false;

		$('body .featureOppContainer.nonearestblock').each(function () {
			try {
				load_block_data_featured_opportunities(null, $(this));
			} catch (e) {
				window.console && console.error(e)
			}
		});

		var existBlockWithLocation = $('body .featureOppContainer.nearestblock').length > 0;

		if (existBlockWithLocation) {
			if (navigator.geolocation) {
				//Option getPosition
				var options = {
					enableHighAccuracy: true,
					timeout: 5000,
					maximumAge: 0
				};

				navigator.geolocation.getCurrentPosition(load_block_data_featured_opportunities_nearest, load_block_by_location_featured_opportunities_error, options);
			} 
		}
	}
}


function load_block_data_featured_opportunities(position, self) {
	var latitude = null;
	var longitude = null;
	if (position !== undefined && position !== null) {
		latitude = position.coords.latitude;
		longitude = position.coords.longitude;
	}

	//$('body .featureOppContainer').each(function () {
		//Get if site is sharingPortalPlus
		var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

		//var self = $(this);
		var blockId = self.attr('data-block-id')
		//var isnearest = self.find('input[name="nearest"]').val();
		var showMap = self.find('input[name="showMap"]').val();
		var displayMode = self.find('input[name="displayMode"]').val();
		var multiTimeZone = self.find('input[name="multitimezone"]').val();
		var siteTimeZone = self.find('input[name="sitetimezone"]').val();
		var target = self.find('input[name="openItemIn"]').val();
        var linkLocation = self.find('input[name="linkLocation"]').val();

		//if (isnearest == 'true') {
			$.ajax({
				type: 'POST',
				url: urlSite + 'Admin/GetAjaxFeaturedOppBlock',
				data: { blockId: blockId, latitude: latitude, longitude: longitude },
				beforeSend: function () {
					self.find('.processing_screen').show();
				},
				success: function (data) {
					data = JSON.parse(data);

					if (data.status === 200) {
						if (data.data.occurrences) {
							var showOppTitle = data.showOppTitle;
							var ShowShortDesc = data.ShowShortDesc;
							var ShowAvailableSpots = data.showAvailableSpots;
							var ShowLocation = data.showLocation;
							var ShowOrganization = data.showOrganization;
							var ShowDateAndTime = data.showDateTime;
							var ShowRsvpIndicator = data.showRSVP;
							var ShowImage = data.ShowImage;
							var itemPerPage = data.itemPerPage;
							var listOrGrid = data.listOrGrid;
							var sliderClass = data.sliderClass;
							var locationtext = "";
                            var datetimetext = "";

							var occurrencesLocations = [];
							var allOccurrences = [];// To merge the normal, EIO withoutLcoation and virtuals

							//delete default results
							var groupItems = self.find(".list-group").first();
							var wrapperId = groupItems.attr("id");
							var isSlider = false;
							$('#' + wrapperId).empty();

							allOccurrences = [...data.data.occurrencesVirtualLocation, ...data.data.occurrences, ...data.data.occurrencesEIOWOLocation];
							//Validate if is slider, grid or list mode
							if (groupItems.hasClass("owl-carousel")) {
								$('#' + wrapperId).trigger("destroy.owl.carousel");
								$('#' + wrapperId).removeClass("owl-carousel");
								isSlider = true;
							} else {
								var holder = $('#' + wrapperId).parent().find("div.holder").first();

								if (allOccurrences.length > itemPerPage && holder.length > 0 && holder.has('a').length > 0) {
									holder.jPages("destroy");
								} 
							}

							var isSharingPortalPlus = data.isSharingPortalPlus !== undefined ? data.isSharingPortalPlus : false;
							var siteHOCId = data.siteHOCId;
							var cdnUrl = data.cdnUrl !== undefined ? data.cdnUrl.replaceAll('/',''): '';

							if (allOccurrences.length > 0) {
								allOccurrences.forEach(function (item) {
									var opportunityUrl = "/opportunity/" + item.occurrenceId;
									var opportunityImageUrl = item.imageThumbnailUrl;

									if (siteHOCId != item.affiliateOrganizationID)
										opportunityUrl = item.opportunityLink;
									else if (item.miniSitePath != '' && item.miniSitePath != null && isSharingPortalPlus === false)
										opportunityUrl = item.miniSitePath + "opportunity/" + item.occurrenceId;

									var thumbnail = '<a href="' + opportunityUrl + '" aria-label="' + item.opportunityName + '" target="' + target + '"><img class="group list-group-image" src="/img/placeholder_thumbnail.png" alt="Opportunity Thumbnail" /></a>';

									var frequency = parseInt(item.frequency);

									if (ShowImage == true && opportunityImageUrl != null) {

										if (cdnUrl !== undefined && cdnUrl !== '' && opportunityImageUrl.indexOf('hocps.blob.core.windows.net') > -1) {
											opportunityImageUrl = opportunityImageUrl.replace('hocps.blob.core.windows.net', cdnUrl)
                                        }
                                        if (linkLocation=="0" || linkLocation==0) {
											thumbnail = '<a href="' + opportunityUrl + '" aria-label="' + item.opportunityName + '" target="' + target + '"><img class="group list-group-image" src="' + opportunityImageUrl + '" alt="Opportunity Thumbnail" /></a>';
                                        } else if (linkLocation=="1" || linkLocation==1) {
                                            thumbnail = '<img class="group list-group-image" src="' + opportunityImageUrl + '" alt="Opportunity Thumbnail" />';
                                        }
										
									}
									if (ShowImage) {
										thumbnail = '<div class="thumbnail">'
											+ thumbnail
											+ '</div>';
									}
									else {
										thumbnail = '';
									}

									var oppTitle = '';
                                    if (showOppTitle) {
                                        if (linkLocation == "0" || linkLocation == 0) {
											oppTitle = '<a href="' + opportunityUrl + '" aria-label="' + item.opportunityName + '" target="' + target + '">'
                                                + '<p class="group inner list-group-item-heading">' + item.opportunityName + '</p>'
                                                + '</a>';
                                        } else if(linkLocation=="1" || linkLocation==1){
                                            oppTitle = '<p class="group inner list-group-item-heading">' + item.opportunityName + '</p>';
                                        }
										
									}
									var servedOrganization = '';
									if (ShowOrganization) {
										servedOrganization = '<p class="group inner list-group-item-organization">' + item.organizationServedName+'</p>';
                                    }

									var shortDesc = '';
									if (ShowShortDesc && item.description != null && item.description != '') {

										shortDesc = '<p class="group inner list-group-item-text">' + item.description + '</p>';
									}

									var location = '';
									locationtext = "";
									if (ShowLocation || displayMode == 3) {
										if (item.locationCity != null && (item.locationType == null || item.locationType != "Virtual")) {
											locationtext = item.locationCity;
											if (item.locationState != null) {
												locationtext = locationtext + ", " + item.locationState;
											}
										}
										else if (item.locationType == "Virtual") {
											locationtext = item.locationName + " (" + window.translation.virtual_text + ")";
										}
										location = '<p class="group inner list-group-item-location">' + locationtext + '</p>';
									}

									var availableSpots = '<p class="group inner list-group-item-spot">';
									if (ShowAvailableSpots) {
										if (item.scheduleType == "Date & Time Specific") {
											if (item.volunteersStillNeeded == '1') {
												availableSpots += window.translation.spot_available_on.replace("{0}", item.volunteersStillNeeded);
											}
											else {
												availableSpots += window.translation.spots_available_on.replace("{0}", item.volunteersStillNeeded);
											}
										}
									}
									availableSpots += '</p>';

									var timeZoneToUse = siteTimeZone;

									if (multiTimeZone == "true") {
										if (item.TimeZone !== undefined && item.TimeZone !== null && item.TimeZone !== '') {
											timeZoneToUse = item.TimeZone.replaceAll("_", " ");
										}
									}

									var datetime = '';
									if (ShowDateAndTime || displayMode == 3) {
										if (item.scheduleType == "Date & Time Specific") {
											if (item.startDate != null) {
												datetimetext = item.startDate;
												if (item.startTime != null) {
													datetimetext = datetimetext + " " + item.startTime + item.TimeZoneAbbreviation;
												}

												if (multiTimeZone == "true") {
													datetimetext = '<span class="date-time-zone" data-tooltip title="' + timeZoneToUse + '">' + datetimetext + '</span>';
                                                }
											}
										}
										else {
											datetimetext = window.translation.ongoing;
										}

										datetime = '<p class="group inner list-group-item-datatime">' +
											datetimetext +
											((frequency > 0) ? '<a href="' + opportunityUrl + '" title="' + item.opportunityName + '" class="title" target="' + target + '">+' + window.translation.more + '</a>' : '') +
											'</p>';
									}


                                    var itemHTML = '<div class="item ' + listOrGrid + '">';
                                    if (linkLocation=="0" || linkLocation==0) {
                                        itemHTML = itemHTML
                                            + thumbnail
                                            + '<div class="caption">'
                                            + oppTitle
                                            + servedOrganization
                                            + shortDesc
                                            + location
                                            + availableSpots
                                            + datetime
                                            + '</div>'
                                            + '</div>';
                                    } else if (linkLocation=="1" || linkLocation==1) {
                                        itemHTML = itemHTML
                                            
                                            + thumbnail
                                            + '<div class="caption">'
                                            + '<a href="' + opportunityUrl + '" target="' + target + '>'
                                            + oppTitle
                                            + servedOrganization
                                            + shortDesc
                                            + location
                                            + availableSpots
                                            + datetime
                                            + '</a>'
                                            + '</div>'
                                            
                                            + '</div>';
                                    }
										
									groupItems.append(itemHTML);

									//Append info of locations
									if (showMap === 'true') {
										var occInfo = {};
										occInfo['Name'] = item.opportunityName;
										occInfo['Location'] = locationtext;
										if (ShowOrganization) {
											occInfo['Organization'] = servedOrganization;
										}

										if (ShowAvailableSpots === 'true' && item.scheduleType == "Date & Time Specific") {
											if (item.volunteersStillNeeded == '1') {
												occInfo['AvailableSpots'] = window.translation.spot_available_on.replace("{0}", item.volunteersStillNeeded);
											}
											else {
												occInfo['AvailableSpots'] = window.translation.spots_available_on.replace("{0}", item.volunteersStillNeeded);
											}
										}
										occInfo['Datetime'] = datetimetext;
										occInfo['Description'] = item.description;
										occInfo['LatLong'] = item.latitudeLongitude;
										occInfo['OccurrenceId'] = item.occurrenceId;
										if (item.locationType == null || item.locationType != "Virtual") {
											occurrencesLocations.push(occInfo);
										}
									}
								});

								if (isSlider == true) {
									$('#' + wrapperId).addClass("owl-carousel");
									featured_opp_cycle();
								} else {
									set_pagination_featured_opportunities(self);
								}

								//Call function to append sign up button
								if (typeof fix_sign_up_button_featured_opportunities_block == 'function') {
									//This function is declared in custom.js file of theme where is required.
									fix_sign_up_button_featured_opportunities_block();
								}
								//Call function to add markers to google map
								if (showMap === 'true') {
									var mapContainer = document.getElementById('featured_map_' + blockId);

									//Update input occ_information_map
									if (occurrencesLocations.length > 0) {
										self.find('input[name="occ_information_map"]').val(JSON.stringify(occurrencesLocations));
									}
									else {
										self.find('input[name="occ_information_map"]').val('');
									}
									set_markers_to_map_featured_opportunities(mapContainer, self);
                                }

                                update_thumbnail_images(self);
							} else {
								self.find("#opportunities-" + blockId).hide();
								self.find("#featured_map_" + blockId).hide();
								self.find("div.no-results").show();
                            }
						}
					} else {
						Swal.fire({
							title: "",
							icon: "error",
							text: data.message,
							confirmButtonText: "Ok"
						});
					}
				},
				complete: function (jqXHR, textStatus) {
					$('.processing_screen').hide();
				}
			});
		//}
	//});
}


function load_block_by_location_featured_opportunities_error(err) {
	console.warn('Error loading featuredOppBlock(' + err.code + '): ' + err.message);
	load_block_data_featured_opportunities_nearest(null);
}

function set_google_map_featured_opportunities() {
	if ($('body .featureOppContainer .featured_map').length > 0) {
		//Load library of getScript only if exist one featuredOppBlock with showMap true
		$.getScript("https://maps.googleapis.com/maps/api/js?key=" + get_gmap_api_key(), function() {
			$('body .featureOppContainer').each(function () {
				var self = $(this);
                var blockId = self.attr('data-block-id');
				var showMap = self.find('input[name="showMap"]').val();
				var mapContainer = document.getElementById('featured_map_' + blockId);

				if(showMap === 'true') {
					set_markers_to_map_featured_opportunities(mapContainer, self);
				}
			});
		});
	}
}

function set_markers_to_map_featured_opportunities(mapContainer, block) {

	if (googleMapAPIAvailable === false)
	{
		return;
    }
	//Get if site is sharingPortalPlus
	var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var target = block.find('input[name="openItemIn"]').val();
    var info_locations = block.find('input[name="occ_information_map"]').val();
	var jarray_location = info_locations ? JSON.parse(info_locations) : '';
	var isMobile = $(window).width() < 1025;

	block.find('input[name="map_processed"]').val("true");
	var map;
	var optionsMap = {}

	//Create map
	map = new google.maps.Map(mapContainer, optionsMap);

	google.maps.event.addListenerOnce(map, 'bounds_changed', function (event) {
		this.setZoom(map.getZoom() - 1);

		if (this.getZoom() > 15) {
			this.setZoom(15);
		}
	});
	var blockMapId = block.data('blockId');
	var areLocations = false;
	if(jarray_location) {
		var markers = [];
		var markersForCluster = []

		//renderer
		var mcOptions = {
			title: ' tracks: click to show',
			imagePath: '/img/m'
		};
		var mapCluster = new markerClusterer.MarkerClusterer({ map, markersForCluster });
		//Load locations
		jarray_location.forEach(function(location) {
			var latitudeLong = location.LatLong;

			if(latitudeLong && latitudeLong !== null) {
				var latLongInfo = latitudeLong.split(',');
				var item =  {
								lat: latLongInfo[0], 
								lng: latLongInfo[1],
								name: location.Name,
								description: location.Description,
								datetime: location.Datetime,
								location: location.Location,
								occurrenceId: location.OccurrenceId,
								availableSpots: location.AvailableSpots,
								organization: location.Organization
							};

                var countItemExist = latlong_exist_in_array(markers, item.lat, item.lng);
                if (countItemExist !== 0) {
                    item.lat += countItemExist;
                    item.lng += countItemExist;
                }
				markers.push(item);
			}
        });

		//Bounds to be used in auto-zoom and auto-center
		var bounds  = new google.maps.LatLngBounds();

		//Foreach to display all markers
		markers.forEach(function (markerInfo) {
			
			var markerPosition = new google.maps.LatLng(parseFloat(markerInfo.lat), parseFloat(markerInfo.lng));
			var oppName = markerInfo.name;

			//Add to bounds
			bounds.extend(markerPosition);

			//Marker object
			var marker = new google.maps.Marker({
				position: markerPosition,
				map: map,
				title: oppName
			});

			mapCluster.addMarker(marker);

			var organizationDataToDisplay = (markerInfo.organization) ? ('<strong>' + window.translation.organization + ':</strong> ' + markerInfo.organization) : '';
			var availableDataToDisplay = (markerInfo.availableSpots) ? ('<p><strong>' + markerInfo.availableSpots + '</strong></p>') : '';

			var contentString = '<div id="content">' +
									'<p><strong>'+ window.translation.name_report +':</strong> '+ oppName +'</p>' + 
									organizationDataToDisplay +
									'<p><strong>'+ window.translation.location_details +':</strong> '+ markerInfo.location +'</p>' + 
									availableDataToDisplay +
									'<p><strong>'+ window.translation.datetime +':</strong> '+ markerInfo.datetime +'</p>';

			if (!isMobile) {
				contentString += '<p><strong>'+ window.translation.click_marker_go_opportunity_detail +'</strong></p>';
			}
			else {
				contentString += '<p><a href="/opportunity/' + markerInfo.occurrenceId + '" target="' + target + '">' + window.translation.click_here_to_go_opportunity_detail + '</a></p>';
			}

			contentString += '</div>';
			//Info modal object
			var infowindow = new google.maps.InfoWindow({
				content: contentString
			});

			//Add event to open info modal with hover of pin
			marker.addListener('mouseover', function() {
				if(!isMobile) {
					infowindow.open(map, marker);
				}
				return false;
			});
			marker.addListener('mouseout', function() {
				if(!isMobile) {
					infowindow.close();
				}
				return false;
			});

			
			//Add event to open info modal with click of modal
			marker.addListener('click', function(e) {
				if(!isMobile) {
					window.location = urlSite + 'opportunity/' + markerInfo.occurrenceId;
				}
				else {
					infowindow.open(map, marker);
				}

				return false;
			});
			
			markersForCluster.push(marker);

		});

		areLocations = markers.length > 0;
	}

	if (areLocations) {
		//Auto zoom and center of map by markers
		map.fitBounds(bounds);       // auto-zoom
		map.panToBounds(bounds);     // auto-center
	} else {
		$('.map-item-' + blockMapId).hide();
    }
}
/*
function latlong_exist_in_array(array, lat, lng) {
    var countItemExist = 0;
    for (var i = 0; i < array.length; i++) {
        if (array[i].lat.startsWith(lat) && array[i].lng.startsWith(lng)) {
            countItemExist++;
        }
    }
    return countItemExist;
}*/
function set_pagination_featured_opportunities(self) {
	if (self !== undefined) {
			// validate if container not is a slider mode
			var isSlider = self.find(".list-group").hasClass("owl-carousel");
			var containerId = self.find(".list-group").attr("id");
			var totalItems = self.find(".item").length;
			var itemsperPage = self.find("input[name='itemsPerPage']").val();
			var p = parseInt(itemsperPage);
			var paginator = self.find("div.holder").first();

			if (itemsperPage != null && p > 0 && isSlider == false && totalItems > p && paginator.length > 0) {

                paginator.jPages({
                    containerID: containerId,
                    perPage: p,
                    first: window.translation.datatable_first,
                    previous: window.translation.datatable_previous,
                    next: window.translation.datatable_next,
                    last: window.translation.datatable_last,
                    minHeight: false,
                    callback: function (pages, items) {
                        var itemsDisplayed = items.showing;
                        itemsDisplayed.each(function () {
                            if ($(this).css('display') == 'block') {
                                $(this).css('display', 'inline-block');
                            }
                        });
                    }
                });
			}
	}
}

function backend_load_values_from_sf_populate_modal(elementReveal, showProcessing, jsonResult, fromSearchResult) {
	//Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var instancePrefix = (window.instance_prefix != undefined) ? window.instance_prefix : 'HOC__';
	var selector = $(elementReveal);
	//Fields to populate modal
    var fieldsModal = [instancePrefix + 'Opportunity_Characteristics__c', instancePrefix + 'Impact_Area_Local__c', instancePrefix + 'Program_Area_Local__c', instancePrefix + 'Primary_Impact_Area__c'];
	$.ajax({
		type: 'POST',
		url: urlSite + 'Admin/GetValuesSFByObjectAndFieldNames',
        data: { sfObject: instancePrefix + 'Volunteer_Opportunity__c', sfField:fieldsModal},
		beforeSend: function () {
		    if (showProcessing) selector.find('.processing_screen').show();
		},
		success: function (data) {
			data = JSON.parse(data);

			if(data.status === 'ok') {
				if(data.fields) {
					data.fields.forEach(function(item){
						var salesforceField = item['field'];
						var fieldModal = selector.find('[data-salesforce-field="' + salesforceField + '"]').first();
						var isMultiple = (fieldModal.attr('multiple') == 'multiple') ? true : false;

						fieldModal.val('');
						fieldModal.empty();

						//Append options
						item.values.forEach(function (itemValue) {
							if (itemValue) {
								var option = $('<option></option>').attr('value', itemValue.value).text(itemValue.label);
								fieldModal.append(option);
							}
						});

						//Populate selects with parameters
						if (jsonResult) {
						    //Search resultblock
						    //Criteria impact area

						    if (fromSearchResult==false) {
						        //Featured opportunity
						        //Criteria Impact area
						        if (jsonResult.issueArea != null &&
                                    typeof jsonResult.issueArea != 'undefined' &&
                                    jsonResult.issueArea != '') {
						            $(elementReveal + ' select[name="oppBlockInfo.IssueArea"]').val(jsonResult.issueArea.split(';'));
						        }
						        else {
						            $(elementReveal + ' select[name="oppBlockInfo.IssueArea"]').val('');
						        }

						        //Criteria Opportunity Characteristics
						        if (jsonResult.customFilter != null &&
                                    typeof jsonResult.customFilter != 'undefined' &&
                                    jsonResult.customFilter != '') {
						            $(elementReveal + ' select[name="oppBlockInfo.OpportunityCharacteristics"]').val(jsonResult.customFilter.split(';'));
						        }
						        else {
						            $(elementReveal + ' select[name="oppBlockInfo.OpportunityCharacteristics"]').val('');
						        }

						        //Criteria Impact Area (Local)
						        if (jsonResult.criteriaImpactArea != null &&
                                    typeof jsonResult.criteriaImpactArea != 'undefined' &&
                                    jsonResult.criteriaImpactArea != '') {
						            $(elementReveal + ' select[name="oppBlockInfo.ImpactAreaLocal"]').val(jsonResult.criteriaImpactArea.split(';'));
						        }
						        else {
						            $(elementReveal + ' select[name="oppBlockInfo.ImpactAreaLocal"]').val('');
						        }

						        //Program Area (Local)
						        if (jsonResult.criteriaProgramArea != null &&
                                    typeof jsonResult.criteriaProgramArea != 'undefined' &&
                                    jsonResult.criteriaProgramArea != '') {
						            $(elementReveal + ' select[name="oppBlockInfo.ProgramAreaLocal"]').val(jsonResult.criteriaProgramArea.split(';'));
						        }
						        else {
						            $(elementReveal + ' select[name="oppBlockInfo.ProgramAreaLocal"]').val('');
						        }
                                //Type
                                if (jsonResult.criteriaType != null &&
                                    typeof jsonResult.criteriaType != 'undefined' &&
                                    jsonResult.criteriaType != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.CriteriaTypeValue"]').val(jsonResult.criteriaType.split(';'));
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.CriteriaTypeValue"]').val('');
                                }

						    } else {
						        //Search Result
						        //Criteria Impact area
						        if (jsonResult.cmsBlock.CriteriaIssueArea != null &&
                                    typeof jsonResult.cmsBlock.CriteriaIssueArea != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaIssueArea != '') {
						            $(elementReveal + ' select[name="oppBlockInfo.IssueArea"]').val(jsonResult.cmsBlock.CriteriaIssueArea.split(';'));
						        }
						        else {
						            $(elementReveal + ' select[name="oppBlockInfo.IssueArea"]').val('');
						        }

						        //Criteria Opportunity Characteristics
						        if (jsonResult.cmsBlock.CriteriaCustomFilter != null &&
                                    typeof jsonResult.cmsBlock.CriteriaCustomFilter != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaCustomFilter != '') {
						            $(elementReveal + ' select[name="oppBlockInfo.OpportunityCharacteristics"]').val(jsonResult.cmsBlock.CriteriaCustomFilter.split(';'));
						        }
						        else {
						            $(elementReveal + ' select[name="oppBlockInfo.OpportunityCharacteristics"]').val('');
						        }

						        //Criteria Impact Area (Local)
						        if (jsonResult.cmsBlock.CriteriaImpactAreaLocal != null &&
                                    typeof jsonResult.cmsBlock.CriteriaImpactAreaLocal != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaImpactAreaLocal != '') {
						            $(elementReveal + ' select[name="oppBlockInfo.ImpactAreaLocal"]').val(jsonResult.cmsBlock.CriteriaImpactAreaLocal.split(';'));
						        }
						        else {
						            $(elementReveal + ' select[name="oppBlockInfo.ImpactAreaLocal"]').val('');
						        }

						        //Program Area (Local)
						        if (jsonResult.cmsBlock.CriteriaProgramAreaLocal != null &&
                                    typeof jsonResult.cmsBlock.CriteriaProgramAreaLocal != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaProgramAreaLocal != '') {
						            $(elementReveal + ' select[name="oppBlockInfo.ProgramAreaLocal"]').val(jsonResult.cmsBlock.CriteriaProgramAreaLocal.split(';'));
						        }
						        else {
						            $(elementReveal + ' select[name="oppBlockInfo.ProgramAreaLocal"]').val('');
						        }
                                
						        //Type
                                if (jsonResult.cmsBlock.ScheduleAndRegisterType != null &&
                                    typeof jsonResult.cmsBlock.ScheduleAndRegisterType != 'undefined' &&
                                    jsonResult.cmsBlock.ScheduleAndRegisterType != '') {
                                    $(elementReveal + ' select[name="oppBlockInfo.CriteriaType"]').val(jsonResult.cmsBlock.ScheduleAndRegisterType.split(';'));
						        }
                                else {
						            $(elementReveal + ' select[name="oppBlockInfo.CriteriaType"]').val('');
						        }

								if (jsonResult.cmsBlock.CriteriaLocationType != null &&
									typeof jsonResult.cmsBlock.CriteriaLocationType != 'undefined' &&
									jsonResult.cmsBlock.CriteriaLocationType != '') {
									$(elementReveal + ' select[name="oppBlockInfo.CriteriaLocationType"]').val(jsonResult.cmsBlock.CriteriaLocationType);
								}
								else {
									$(elementReveal + ' select[name="oppBlockInfo.CriteriaLocationType"]').val('');
								}

						        //Criteria Age Of Volunteers Range
						        if (jsonResult.cmsBlock.CriteriaAgeOfVolunteersRange != null &&
                                    typeof jsonResult.cmsBlock.CriteriaAgeOfVolunteersRange != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaAgeOfVolunteersRange != '') {
						            $(elementReveal + ' input[name="oppBlockInfo.CriteriaAgeOfVolunteersRange"]').val(jsonResult.cmsBlock.CriteriaAgeOfVolunteersRange);
						        }
						        else {
						            $(elementReveal + ' input[name="oppBlockInfo.CriteriaAgeOfVolunteersRange"]').val('');
						        }

						        //Criteria Court Ordered
						        if (jsonResult.cmsBlock.CriteriaCourtOrdered != null &&
                                    typeof jsonResult.cmsBlock.CriteriaCourtOrdered != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaCourtOrdered != '') {
						            $(elementReveal + ' input[name="oppBlockInfo.CriteriaCourtOrdered"]').prop('checked', true);
						        }
						        else {
						            $(elementReveal + ' input[name="oppBlockInfo.CriteriaCourtOrdered"]').prop('checked', false);
                                }

                                //Criteria Organization Served
                                if (jsonResult.cmsBlock.CriteriaOrganizationServed != null &&
                                    typeof jsonResult.cmsBlock.CriteriaOrganizationServed != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaOrganizationServed != '') {
                                    $(elementReveal + ' input[name="oppBlockInfo.CriteriaOrganizationServed"]').val(jsonResult.cmsBlock.CriteriaOrganizationServed);
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.CriteriaOrganizationServed"]').val('');
                                }

								//OccStarDate
                                if (jsonResult.cmsBlock.OccStarDate != null &&
                                    typeof jsonResult.cmsBlock.OccStarDate != 'undefined' &&
                                    jsonResult.cmsBlock.OccStarDate != '') {
                                    $(elementReveal + ' input[name="oppBlockInfo.OccStarDate"]').val(jsonResult.cmsBlock.OccStarDate);
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.OccStarDate"]').val('');
                                }
                                //OccEndDate
                                if (jsonResult.cmsBlock.CriteriaOrganizationServed != null &&
                                    typeof jsonResult.cmsBlock.OccEndDate != 'undefined' &&
                                    jsonResult.cmsBlock.OccEndDate != '') {
                                    $(elementReveal + ' input[name="oppBlockInfo.OccEndDate"]').val(jsonResult.cmsBlock.OccEndDate);
                                }
                                else {
                                    $(elementReveal + ' select[name="oppBlockInfo.OccEndDate"]').val('');
                                }
						        //Criteria Groups
						        if (jsonResult.cmsBlock.CriteriaGroups != null &&
                                    typeof jsonResult.cmsBlock.CriteriaGroups != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaGroups != '') {
						            $(elementReveal + ' input[name="oppBlockInfo.CriteriaGroups"]').prop('checked', true);
						        }
						        else {
						            $(elementReveal + ' input[name="oppBlockInfo.CriteriaGroups"]').prop('checked', false);
						        }

						        //Criteria Groups
						        if (jsonResult.cmsBlock.CriteriaRSVP != null &&
                                    typeof jsonResult.cmsBlock.CriteriaRSVP != 'undefined' &&
                                    jsonResult.cmsBlock.CriteriaRSVP != '') {
						            $(elementReveal + ' input[name="oppBlockInfo.CriteriaRSVP"]').prop('checked', true);
						        }
						        else {
						            $(elementReveal + ' input[name="oppBlockInfo.CriteriaRSVP"]').prop('checked', false);
						        }
						        
						    }
						}

						//Reload multiselect
						if(isMultiple) {
                            apply_backend_multiselect(elementReveal + ' [data-salesforce-field="' + salesforceField + '"]');

							fieldModal.multiselect('reload');
						}
                    });
                    apply_backend_multiselect(elementReveal + ' select[name="oppBlockInfo.CriteriaTypeValue"]');
				}
			}
			else {
				console.warn('Error loading values from SF to populate featuredOppModal', data.message);
			}

			if (showProcessing) selector.find('.processing_screen').hide();
		}
	});
}

function rollback_FeaturedOppBlock(jsonResult) {
	hideVisibleOptions(jsonResult.uniqueRegion, '#featured-opp-advanced-settings');

	var self = $('#featured-opp-settings');

	//Populate info of block
	if (jsonResult.blockData) {
		var blockInfo = jsonResult.blockData;

		self.find('input[name="oppBlockInfo.Block.SystemName"]').val(blockInfo.SystemName);
		self.find('input[name="oppBlockInfo.Block.Weight"]').val(blockInfo.Weight);
		self.find('input[name="oppBlockInfo.Block.ShowTitle"]').prop('checked', blockInfo.ShowTitle);
		self.find('input[name="oppBlockInfo.Block.Enabled"]').prop('checked', blockInfo.Enabled);
		self.find('input[name="oppBlockInfo.Block.Visibility"]').prop('checked', false);
		self.find('input#featured_visibility_' + blockInfo.Visibility).prop('checked', true);
		self.find('textarea[name="oppBlockInfo.Block.VisibilityUrls"]').val(blockInfo.VisibilityUrls);
		self.find('select[name="oppBlockInfo.Block.Region_ID"]').val(blockInfo.Region);

		if (blockInfo.Visibility != 0) {
			self.find('#featured_exception_url_container').removeClass('is-hidden');
		}
		else {
			self.find('#featured_exception_url_container').addClass('is-hidden');
		}
	}

	//Populate info of languages block
	if (jsonResult.blockTitles.length > 0) {
		jsonResult.blockTitles.forEach(function (title) {
			self.find('input[name="title-' + title.Language + '"]').val(title.Title);
		});
	}

	//Populate info of featuredOppBlock
	if(jsonResult.blockFeaturedOppBlock) {
		jsonResult.blockFeaturedOppBlock.forEach(function(featuredOpp) {
			self.find('select[name="oppBlockInfo.Criteria"]').val(featuredOpp.Criteria);
			self.find('select[name="oppBlockInfo.CriteriaType"]').val(featuredOpp.CriteriaTypes);
			self.find('input[name="oppBlockInfo.CriteriaCourtOrdered"]').prop('checked', featuredOpp.CriteriaCourtOrdered);
			self.find('input[name="oppBlockInfo.CriteriaGroups"]').prop('checked', featuredOpp.CriteriaGroups);
			self.find('input[name="oppBlockInfo.CriteriaRSVP"]').prop('checked', featuredOpp.CriteriaRSVP);
			self.find('select[name="oppBlockInfo.DisplayMode"]').val(featuredOpp.DisplayMode);
			self.find('input[name="oppBlockInfo.NumberOfOpp"]').val(featuredOpp.NumberOfOpp);
			self.find('input[name="oppBlockInfo.NumberOfRows"]').val(featuredOpp.NumberOfRows);
			self.find('input[name="oppBlockInfo.ShowOppTitle"]').prop('checked', featuredOpp.ShowOppTitle);
			self.find('input[name="oppBlockInfo.ShowShortDesc"]').prop('checked', featuredOpp.ShowShortDesc);
			self.find('input[name="oppBlockInfo.ShowAvailableSpots"]').prop('checked', featuredOpp.ShowAvailableSpots);
			self.find('input[name="oppBlockInfo.ShowLocation"]').prop('checked', featuredOpp.ShowLocation);
			self.find('input[name="oppBlockInfo.ShowDateAndTime"]').prop('checked', featuredOpp.ShowDateAndTime);
			self.find('input[name="oppBlockInfo.ShowImage"]').prop('checked', featuredOpp.ShowImage);
			self.find('input[name="oppBlockInfo.ShowAdditionalButton"]').prop('checked', featuredOpp.ShowAdditionalButton);
			self.find('input[name="oppBlockInfo.ShowOrganization"]').prop('checked', featuredOpp.ShowOrganization);
			self.find('input[name="oppBlockInfo.TextAdditionalButton"]').val(featuredOpp.TextAdditionalButton);
			self.find('select[name="oppBlockInfo.TypeButton"]').val(featuredOpp.TypeButton);
			self.find('input[name="oppBlockInfo.UrlAdditionalButton"]').val(featuredOpp.UrlAdditionalButton);
			self.find('input[name="oppBlockInfo.ShowMap"]').prop('checked', featuredOpp.ShowMap);
			self.find('input[name="oppBlockInfo.CriteriaAgeOfVolunteersRange"]').val(featuredOpp.CriteriaAgeOfVolunteersRange);

			if(featuredOpp.CriteriaIssueArea) {
				self.find('select[name="oppBlockInfo.IssueArea"]').val(featuredOpp.CriteriaIssueArea.split(';'));
			}
			if(featuredOpp.CriteriaCustomFilter) {
				self.find('select[name="oppBlockInfo.OpportunityCharacteristics"]').val(featuredOpp.CriteriaCustomFilter.split(';'));
			}
			if(featuredOpp.CriteriaImpactAreaLocal) {
				self.find('select[name="oppBlockInfo.ImpactAreaLocal"]').val(featuredOpp.CriteriaImpactAreaLocal.split(';'));
			}
			if(featuredOpp.CriteriaProgramAreaLocal) {
				self.find('select[name="oppBlockInfo.ProgramAreaLocal"]').val(featuredOpp.CriteriaProgramAreaLocal.split(';'));
			}

			if(featuredOpp.ShowAdditionalButton) { //Validation additional button
				self.find('input[name="oppBlockInfo.TextAdditionalButton"]').parents('.columns').first().fadeIn();
				self.find('input[name="oppBlockInfo.UrlAdditionalButton"]').parents('.columns').first().fadeIn();
				self.find('select[name="oppBlockInfo.TypeButton"]').parents('.columns').first().fadeIn();
			}
			else {
				self.find('input[name="oppBlockInfo.TextAdditionalButton"]').parents('.columns').first().fadeOut();
				self.find('input[name="oppBlockInfo.UrlAdditionalButton"]').parents('.columns').first().fadeOut();
				self.find('select[name="oppBlockInfo.TypeButton"]').parents('.columns').first().fadeOut();
			}

			//Reload multiselects
			$('#featured-opp-form select[name="oppBlockInfo.IssueArea"]').multiselect('reload');
			$('#featured-opp-form select[name="oppBlockInfo.OpportunityCharacteristics"]').multiselect('reload');
			$('#featured-opp-form select[name="oppBlockInfo.ImpactAreaLocal"]').multiselect('reload');
			$('#featured-opp-form select[name="oppBlockInfo.ProgramAreaLocal"]').multiselect('reload');
		});
	}
}
function initialize_ckeditor_featureOpp(element, languageId) {
    if ($('#cke_' + element + languageId).length > 0) {
        $('#cke_' + element + languageId).remove();
    }
    var editor = CKEDITOR.replace(element + languageId, {
        //extraPlugins: 'uploadimage,image2',
        //removePlugins: 'image',
        filebrowserBrowseUrl: '/custom-ckfinder/connector',
        filebrowserImageBrowseUrl: '/custom-ckfinder/connector?type=Images',
        filebrowserUploadUrl: '/ckfinder/connector?command=QuickUpload',
        filebrowserImageUploadUrl: '/ckfinder/connector?command=QuickUpload&type=Images',
        filebrowserWindowWidth: 800,
        filebrowserWindowHeight: 600,
        customConfig: '/js/config/ckeditor_config.js',
        height: 100
    });
    CKFinder.setupCKEditor(editor);
}


function update_thumbnail_images(self) {
    if (self.find('.item .thumbnail').length > 0) {
        setTimeout(function () {

            var maxHeight = 0;
            self.find('.item .thumbnail').each(function () {
                var totalH = $(this).height();
                if (totalH > maxHeight)
                    maxHeight = totalH;
            });
            self.find('.item .thumbnail').each(function () {
                var totalH = $(this).height();
                if (totalH < maxHeight)
                    $(this).find('a').css('height', maxHeight + 'px');
            });


        }, 2000);
    }
}

;
$(document).ready(function () {
	//Events without translations
	
	//Set info of sharingPortal plus
 	set_info_sharing_portal_plus_page();
});

//Load methods after load translations
function after_translation_resource_load_buttonblock() {
	//Basic behaviors
	button_block_backend_events();
}

function button_block_backend_events() {
	if($('body').hasClass('backend-page') === true){
		//Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

		//Open modal and populate with data of block
		$('.backend-page').on('click', 'a[data-element-reveal="button-block-configuration"]', function() {
			var self = $('#button-block-configuration');
			var blockId = $(this).attr('data-block-id');
			var elementReveal = '#button-block-configuration';
			var form = self.find('#button-block-form');
			var formName = 'button-block-form';

			//Open modal
			self.foundation('open');
			self.foundation();

			//Initiate jquery validate
			initiate_jquery_validate_reveal(form, formName);

			if(blockId && blockId !== '0') { //Edit block
				//Load data of block
				$.ajax({
					method: "POST",
					url: urlSite + "admin/GetButtonBlockInfo",
					data: { blockId: blockId },
					beforeSend: function () {
							self.find('.processing_screen').show();
					}
				}).done(function (data) {
					var jsonResult = JSON.parse(data);

					if(jsonResult) {
						hideVisibleOptions(jsonResult.uniqueRegion, '#button-block-advanced-settings');

						if(jsonResult.blockInfo) { //Block info
							self.find('input[name="block_id"]').val(jsonResult.blockInfo.ID);
							self.find('.rollback-link').attr('data-block-id', jsonResult.blockInfo.ID);
							self.find('input[name="system_name"]').val(jsonResult.blockInfo.SystemName);
							self.find('select[name="region"]').val(jsonResult.blockInfo.Region);
							self.find('input[name="sort_weight"]').val(jsonResult.blockInfo.Weight);
							self.find('textarea[name="button_visibility_urls"]').val(jsonResult.blockInfo.VisibilityUrls);

							if (jsonResult.blockInfo.ShowTitle) {
								self.find('input[name="show_title"]').val(jsonResult.blockInfo.ShowTitle);
								self.find('input.button-show-title').prop('checked', true);
							}
							else {
								self.find('input[name="show_title"]').val(null);
								self.find('input.button-show-title').prop('checked', false);
							}

							self.find('input[name="enabled"]').prop('checked', jsonResult.blockInfo.Enabled);
                            self.find('input[name="css_class"]').val(jsonResult.blockInfo.CssClass);
                            self.find('input#button_visibility_' + jsonResult.blockInfo.Visibility).prop('checked', true);
                            if (jsonResult.blockInfo.subsiteId !== 0 && jsonResult.blockInfo.subsiteId !== '0') {
                                if (self.find('select[name="subsite_id"]').length > 0) 
                                    self.find('select[name="subsite_id"]').val(jsonResult.blockInfo.subsiteId);
                                else
                                    self.find('input[name="subsite_id"]').val(jsonResult.blockInfo.subsiteId);
                            }
                            
							if(jsonResult.blockInfo.Visibility != 0) {
								self.find('#button_exception_url_container').removeClass('is-hidden');
							}
							else {
								self.find('#button_exception_url_container').addClass('is-hidden');
							}
						}

						if(jsonResult.cmsBlock) { //ButtonBlock info
							self.find('input[name="button_block_id"]').val(jsonResult.cmsBlock.ID);
							self.find('input[name="button_url"]').val(jsonResult.cmsBlock.Url);
							self.find('select[name="button_target"]').val(jsonResult.cmsBlock.Target);
							self.find('select[name="button_alignment"]').val(jsonResult.cmsBlock.Alignment);
							self.find('select[name="button_type"]').val(jsonResult.cmsBlock.TypeButton);
						}
						
						if(jsonResult.languagesInfo) { //Language Info
							jsonResult.languagesInfo.forEach(function(languageInfo) {
								var languageId = languageInfo.languageID;

								self.find('input[name="title-'+ languageId +'"]').val(languageInfo.title);
							});
						}

						if(jsonResult.languageTextInfo) { //ButtonText info
							jsonResult.languageTextInfo.forEach(function(languageInfo) {
								var languageId = languageInfo.LanguageId;

								self.find('input[name="text-button-'+ languageId +'"]').val(languageInfo.TextButton);
							});
						}

						if (jsonResult.regionsMultiple) { //Multiple Regions
							//Apply multiselect widget to region select
							apply_backend_multiselect_group(elementReveal + ' select[name="region_multiple"]', false, jsonResult.regionsMultiple);
						}
                    }
                    add_event_for_fields_in_modal('#button-block-form');

					self.find('.processing_screen').hide();
				});
			}
			else { //Create new block
				//Hide remove link
				self.find('a.delete_block').hide();
				self.find('.rollback-link').hide();
				self.find('.rollback-link').attr('data-block-id', 0);
				self.find('.input-group-button.submit-button').css({
					display: 'block',
					width: '100%'
				});
                self.find('select[name="subsite_id"]').val('0');
                self.find('input[name="subsite_id"]').val('');

				hideVisibleOptions(false, '#button-block-advanced-settings');

				//Clean all data of modal
                self.find('input[name="css_class"]').val('');
				self.find('input[name="block_id"]').val('0');
				self.find('input[name="button_block_id"]').val('0');
				self.find('select[name="region"]').val('');
				self.find('input[name="system_name"]').val('');
				self.find('input[name="sort_weight"]').val(0);
				self.find('.tabs-panel').find('input').val('');
				self.find('input[name="show_title"]').prop('checked', false);
				self.find('input[name="enabled"]').prop('checked', true);
				self.find('input#button_visibility_0').prop('checked', true);
				self.find('textarea[name="button_visibility_urls"]').val('');
				self.find('#button_exception_url_container').removeClass('is-hidden');
				self.find('input[name="button_visible_to"][value="2"]').prop('checked', true);
				self.find('input[type="text"]').val('');

				//Manage multiregions field
				apply_backend_multiselect_group(elementReveal + ' select[name="region_multiple"]', false, '');


                add_event_for_fields_in_modal('#button-block-form');

				self.find('.processing_screen').hide();
			}
		});

		//Event to submit modal
		$('.backend-page').on('click', '#button-block-configuration input[type="submit"]', function() {
			var self = $('#button-block-configuration');
			var elementReveal = 'button-block-configuration';
			var formData = $("#button-block-form").serializeObject();

			if ($("#button-block-form").valid()) {
				if (!validate_url_fields_backend('#' + elementReveal, 'input[name="button_visible_to"]', 'textarea[name="button_visibility_urls"]'))
					return false;

				$.ajax({
					method: "POST",
					url: urlSite + "admin/AddOrUpdateButtonBlock",
					data: formData,
					beforeSend: function () {
							self.find('.processing_screen').show();
					}
				}).done(function (data) {
					var jsonResult = JSON.parse(data);

                    if (jsonResult.status === 'ok') {

                        Swal.fire({
                            title: window.translation.success,
                            text: 'Button block saved Successfully',
                            icon: 'success',
                            closeOnConfirm: true
                        }).then(function (result) {
                            self.find('.processing_screen').show();
                            window.location.reload();

                        });

					}
					else {
						Swal.fire({
							title: window.translation.error,
							text: jsonResult.message,
							icon: "error",
							closeOnConfirm: true
						});

					}

					self.find('.processing_screen').hide();

					return false;
				});

				return false;
			}
		});


		$(document).on('change', '#button-block-configuration input.button-show-title', function () {
			var checked = $(this).prop('checked');
			$('#button-block-configuration input.button-show-title').prop('checked', checked);
			if (checked) {
				$('#button-block-configuration input[name="show_title"]').val(checked);
			}
			else {
				$('#button-block-configuration input[name="show_title"]').val(null);
			}
		});
	}
};
/*
	Custom events and methods to implement
*/
$(document).ready(function () {
    //Events where is not required translation
    validate_placeholder_image();
});


//Load methods after load translations
function after_translation_resource_load_image_block() {
}

//Validate image placeholder and when image is loaded complete load
function validate_placeholder_image() {
	$('.image-block').each(function(index, el) {
		var self = $(this);
		var image = self.find('img');
		var imagePlaceholder = self.find('.image_placeholder');

		image.one('load', function(){
			image.addClass('loaded');
			imagePlaceholder.removeClass('loading');
			image_block_for_IE(self);
			fix_image_block_positions(self);
        }).each(function () {
            if (this.complete) $(this).trigger('load');
		});
	});
}

function image_block_for_IE(selfImage) {
    var userAgent, ieReg, ie;
    userAgent = window.navigator.userAgent;
    ieReg = /msie|Trident.*rv[ :]*11\./gi;
    ie = ieReg.test(userAgent);

    if (ie) {
        var selfBlock = selfImage;
        var image = selfBlock.find('img');
        var imagePlaceholder = selfBlock.find('.image_placeholder');
        var imageURL = image.attr('src');
        if (imageURL) {
            imageURL = replaceSpecialCharacters(imageURL);
            imagePlaceholder.css("backgroundImage", "url('" + imageURL + "')");
            image.addClass('compatible-ie');
            imagePlaceholder.addClass('custom-slider-fit');
        }
    }
}

function fix_image_block_positions(selfImage) {
    var container = selfImage.parents('.container');
    if (container !== undefined && container !== null) {
        if (container.hasClass('fixed-height')) {
            var height = container.css("height");
            if (height !== undefined && height !== null && height !== "") {
                var imageHeight = selfImage.find('img').css("height");
                var finalH = 0;
                if (height > imageHeight) {
                    //requires changes in the height.
                    var blockHeight = selfImage.css("height");
                    if (container.find('.container-block-section').length > 1) {
                        if (height >= blockHeight)
                            finalH = blockHeight;
                        else
                            finalH = height;
                        container.find("img").css("height", finalH);
                        container.find("img").removeAttr("height");
                    } else {
                        if (height > blockHeight)
                            finalH = height;
                        else
                            finalH = blockHeight;
                        container.find("img").css("height", finalH);
                        container.find("img").removeAttr("height");
                    }
                }
                container.css("overflow", "hidden");
            }

        }
    }

    var self = selfImage;
    var height = self.height();
    var h3Pos = height * 30.0 / 100.0;
    if (height < 251)
        h3Pos = height * 16.0 / 100.0;
    var titleh = 0;
    if (self.find('h3').length > 0) {
        self.find('h3').css('top', h3Pos);
        titleh = self.find('h3').height();
    }
    var sumh = 0;
    if (self.find('.text-summary').length > 0) {
        self.find('.text-summary').css('top', titleh + 5 + h3Pos);
        sumh = self.find('.text-summary').height();
    }
    if (self.find('.text-button-section').length > 0)
        self.find('.text-button-section').css('top', titleh + 10 + h3Pos + sumh);



}

;
/*
	Custom events and methods to implement
*/
$(document).ready(function () {
    //Events where is not required translation
    validate_placeholder_image_slider();
});


//Load methods after load translations
function after_translation_resource_load_image_slider_block() {
}

//Validate image placeholder and when image is loaded complete load
function validate_placeholder_image_slider() {
	$('.image-slider-block').each(function(index, el) {
		var selfSlider = $(this);
		var slides = $(this).find('.content-slide');
		var countImages = $(this).find('img').length;
    	var countLoadedImages = 0;

		slides.each(function(index, el) {
			var self = $(this);
			var image = self.find('img');
			var imagePlaceholder = self.find('.image_placeholder');

			image.one('load', function(){
				image.addClass('loaded');
				imagePlaceholder.removeClass('loading');

				countLoadedImages = countLoadedImages + 1;

                if(countLoadedImages === countImages) {
                	slides.removeClass('secondary-slide');
                    //Load event to load cycle of app_cycle_events.js
                    image_slider_block_cycle(selfSlider);
                }
			}).each(function() {
			    if (this.complete) {
			        $(this).trigger('load');
			        //verify if it is ie
			    }
			});
		});
	});

}
;
$(document).ready(function () {
	//Events without translations

    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();
});

//Load methods after load translations
function after_translation_resource_load_donationblock() {
	//Basic behaviors
	donation_block_events();

	//Backend behaviors
	donation_block_backend_events();

    //Populate ip client address
    donation_block_populate_ip();
}

function donation_block_events() {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    urlSite = urlSite.substring(0, urlSite.length - 1);

	var saleId = getParameterByName("saleId", false, false);
    var authorizationId = getParameterByName("authorizationId", false, false);
    var transactionId = getParameterByName("transactionId", false, false);
    var donationAmount = getParameterByName("donationAmount", false, false);

    if($('.donationBlock').length > 0) {
        $('.donationBlock').each(function() {
            var self = $(this);
            var isARS = $(this).find('input[name="is_ars"]').val();
            var paymentType = self.find('input[name="payment_type"]').val();
            var redirectUrlP = self.find('input[name="redirect_url_p"]').val();
            var redirectUrl = self.find('input[name="redirect_url"]').val();

            //Select by default first amount and first frequency
            if(self.find('input[name="amountField"]').length > 0) {
                var amountSelected = self.find('input[name="amountField"]').first().val();
                var amountSelectedLabel = self.find('input[name="amountField"]').first().attr('data-amount-label');

                self.find('input[name="amountField"]').first().prop('checked', true);

                //Set value to hidden of form amount field
                self.find('input[name="formAmountField"]').val(amountSelected);
                self.find('input[name="formAmountLabel"]').val(amountSelectedLabel);
                self.find('input[name="formAmountFieldP"]').val(amountSelected);
                self.find('input[name="formAmountLabelP"]').val(amountSelectedLabel);

                //If the first amount is "Other amount" enable otherAmount textfield
                if(amountSelected !== 'Other Amount') {
                    self.find('input[name="amount_other_value"]').attr('readonly', 'readonly');
                }
                else {
                    self.find('input[name="amount_other_value"]').removeAttr('readonly');
                }
            }
            if(self.find('input[name="frecuencyDonation"]').length > 0) {
                self.find('input[name="frecuencyDonation"]').first().prop('checked', true);
            }

            //Get site id to validate if workflow already has a donation transaction
            $.ajax({
                type: "GET",
                url: urlSite + '/ARS/getSiteId',
                beforeSend: function() {
                    self.find('.processing_screen.processing_donation_form').addClass('always_show');
                },
                success: function (data) {
                    var siteId = data;
                    var alreadyDonate = (transactionId) ? true : false;

                    if(isARS && isARS === 'True') {
                        if($('input.branch-logic-info').length > 0) {
                            //Get info of localStorage
                            var workflowId = $('input.branch-logic-info').first().attr('data-workflow');
                            var typeBranchLogic = $('input.branch-logic-info').first().attr('data-type');
                            switch (typeBranchLogic) {
                                case 'REGISTRATION':
                                    var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                                    break;
                                case 'SIGNUP':
                                    var formData = JSON.parse(localStorage.getItem('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId));
                                    break;
                                case 'PARTNER_REGISTRATION':
                                    var formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));;
                                    break;
                                default:
                                    var formData = null;
                            }
                            
                            //Update localStorage if exists transaction on the URL
                            if(transactionId) {
                                formData['donationTransactionId'] = transactionId;
                            }
                            if(donationAmount) {
                                formData['donationAmount'] = donationAmount
                            }
                            if(authorizationId) {
                                formData['donationAuthorizationId'] = authorizationId
                            }

                            if(typeBranchLogic === 'REGISTRATION') {
                                _assign_value_json_local_storage('vol-branch-logic-form-data-' + siteId, formData);
                            }
                            else if (typeBranchLogic === 'PARTNER_REGISTRATION') {
                                _assign_value_json_local_storage('partner-branch-logic-form-data-' + siteId, formData);
                            }
                            else {
                                _assign_value_json_local_storage('signup-branch-logic-form-data-' + siteId + '-wr-' + workflowId, formData);
                            }

                            if ((formData !== null && formData !== undefined && formData.donationTransactionId) || transactionId) {
                                self.find('.processing_screen.processing_donation_form').find('span').text(window.translation.we_got_your_donation);
                                self.find('.processing_screen.processing_donation_form').find('img').hide();
                                self.find('.processing_screen.processing_donation_form').addClass('large_content');
                                self.find('.processing_screen.processing_donation_form').addClass('always_show');
                                self.find('form[name="donation-form"]').addClass('already_donated');

                                alreadyDonate = true;
                            }
                        }
                        else if(alreadyDonate) {
                            self.find('.processing_screen.processing_donation_form').find('span').text(window.translation.we_got_your_donation);
                            self.find('.processing_screen.processing_donation_form').find('img').hide();
                            self.find('.processing_screen.processing_donation_form').addClass('large_content');
                            self.find('.processing_screen.processing_donation_form').addClass('always_show');
                            self.find('form[name="donation-form"]').addClass('already_donated');
                        }
                    }
                    else {
                        self.find('.processing_screen.processing_donation_form').hide();
                        self.find('.processing_screen.processing_donation_form').removeClass('always_show');

                        if (saleId && transactionId && donationAmount) {

                            Swal.fire({
                                title: window.translation.donation_completed,
                                icon: 'success',
                                text: window.translation.donation_has_been_received,
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            }).then(function (result) {
                                if (redirectUrl || redirectUrlP) {
                                    self.find('.processing_screen.processing_donation_form').show();
                                    self.find('.processing_screen.processing_donation_form').addClass('always_show');
                                    window.location = urlSite + ((redirectUrl) ? redirectUrl : redirectUrlP);
                                }

                            });

                        }
                    }

                    if(alreadyDonate === false) {
                        //Populate firstName, lastName and Email if user is logged, in other case populate using localStorage of volunteer registration form or partner registration according to apply
                        $.ajax({
                            type: "GET",
                            url: urlSite + '/User/getContactInfo',
                            success: function (data) {
                                var jsonResult = JSON.parse(data);

                                if(jsonResult['email']) {
                                    self.find('input[name="first-name"]').val(jsonResult.firstName);
                                    self.find('input[name="last-name"]').val(jsonResult.lastName);
                                    self.find('input[name="email"]').val(jsonResult.email);
                                    self.find('input[name="formPaypalEmail"]').val(jsonResult.email);
                                    self.find('input[name="formPaypalEmailP"]').val(jsonResult.email);
                                    self.find('.processing_screen.processing_donation_form').hide();
                                    self.find('.processing_screen.processing_donation_form').removeClass('always_show');
                                }
                                else {
                                    //Populate using localStorage of volunteer registration or partner registration
                                    if ($('input.branch-logic-info').length > 0) {
                                        //Get info of localStorage
                                        var workflowId = $('input.branch-logic-info').first().attr('data-workflow');
                                        var typeBranchLogic = $('input.branch-logic-info').first().attr('data-type');
                                        switch (typeBranchLogic) {
                                            case 'REGISTRATION':
                                                var formData = JSON.parse(localStorage.getItem('vol-branch-logic-form-data-' + siteId));
                                                if (formData) {
                                                    self.find('input[name="first-name"]').val(formData.first_name);
                                                    self.find('input[name="last-name"]').val(formData.last_name);
                                                    self.find('input[name="email"]').val(formData.email);

                                                    if (formData.street) self.find('input[name="address"]').val(formData.street);
                                                    if (formData.home_country) self.find('select[name="country_name"]').val(formData.home_country);
                                                    if (formData.state) self.find('select[name="state"]').val(formData.state);
                                                    if (formData.state_text) self.find('input[name="state_text"]').val(formData.state_text);
                                                    if (formData.city) self.find('input[name="city"]').val(formData.city);
                                                    if (formData.zip) self.find('input[name="postal-code"]').val(formData.zip);
                                                    if (formData.phone) {
                                                        var telInput = self.find('input[name="phone"]').get(0);
                                                        var iti = window.intlTelInputGlobals.getInstance(telInput);
                                                        iti.setNumber(formData.phone);
                                                        
                                                        //self.find('input[name="phone"]').intlTelInput('setNumber', formData.phone);
                                                    }

                                                    self.find('input[name="formPaypalEmail"]').val(formData.email);
                                                    self.find('input[name="formPaypalEmailP"]').val(formData.email);
                                                }
                                                break;
                                            case 'PARTNER_REGISTRATION':
                                                var formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));
                                                if (formData) {
                                                    self.find('input[name="first-name"]').val(formData.contact_firstname);
                                                    self.find('input[name="last-name"]').val(formData.contact_lastname);
                                                    self.find('input[name="email"]').val(formData.email);

                                                    if (formData.street) self.find('input[name="address"]').val(formData.street);
                                                    if (formData.home_country) self.find('select[name="country_name"]').val(formData.country);
                                                    if (formData.state) self.find('select[name="state"]').val(formData.state);
                                                    if (formData.state_text) self.find('input[name="state_text"]').val(formData.state_text);
                                                    if (formData.city) self.find('input[name="city"]').val(formData.city);
                                                    if (formData.zip) self.find('input[name="postal-code"]').val(formData.zip);
                                                    if (formData.phone) {
                                                        var telInput = self.find('input[name="phone"]').get(0);
                                                        var iti = window.intlTelInputGlobals.getInstance(telInput);
                                                        iti.setNumber(formData.phone);
                                                        
                                                        //self.find('input[name="phone"]').intlTelInput('setNumber', formData.phone);
                                                    }
                                                    self.find('input[name="formPaypalEmail"]').val(formData.email);
                                                    self.find('input[name="formPaypalEmailP"]').val(formData.email);
                                                }
                                                break;
                                            default:
                                                var formData = null;
                                        }
                                    }
                                    
                                    self.find('.processing_screen.processing_donation_form').removeClass('always_show');
                                }
                            }
                        });
                    }  
                }
            });

            if(paymentType == 'BOTH') {
                self.find('.payment-information').find('.content-credit-card').show();
                self.find('.payment-information').find('.content-echeck').hide();
            }


            var selectedCountry = self.find('select[name="country_name"]').val();

            if (selectedCountry === undefined || selectedCountry === "United States") {
                self.find('select[name="state"]').show();
                self.find('input[name="state_text"]').hide();
            } else if (selectedCountry !== "United States") {
                self.find('select[name="state"]').hide();
                self.find('input[name="state_text"]').show();
            } else {
                self.find('select[name="state"]').show();
                self.find('input[name="state_text"]').hide();
            }

            //Event to select of payment type
            self.on('change', 'select[name="payment-type"]', function() {
                var paymentType = $(this).val();

                self.find('.payment-information .processing_screen_payment').show();
                
                if(paymentType === 'CreditCard') {
                    self.find('.payment-information').find('.content-credit-card').show(1000, function() {
                        self.find('.payment-information .processing_screen_payment').hide();
                    });
                    self.find('.payment-information').find('.content-echeck').hide(500);
                }
                else {
                    self.find('.payment-information').find('.content-credit-card').hide(500);
                    self.find('.payment-information').find('.content-echeck').show(1000, function() {
                        self.find('.payment-information .processing_screen_payment').hide();
                    });
                }
            });

            //Event if is change the value of radio amount enable or disable amount field
            self.on('change', 'input[name="amountField"]', function() {
                var amountSelected = $(this).val();
                var amountSelectedLabel = $(this).attr('data-amount-label');

                //Set value to hidden of form amount field
                self.find('input[name="formAmountField"]').val(amountSelected);
                self.find('input[name="formAmountLabel"]').val(amountSelectedLabel);
                self.find('input[name="formAmountFieldP"]').val(amountSelected);
                self.find('input[name="formAmountLabelP"]').val(amountSelectedLabel);

                if(amountSelected !== 'Other Amount') {
                    self.find('input[name="amount_other_value"]').attr('readonly', 'readonly');
                }
                else {
                    self.find('input[name="amount_other_value"]').removeAttr('readonly');
                }
            });

            //Event to assign to hidden value of other amount
            self.on('change', 'input[name="amount_other_value"]', function () {
                var valueAmount = $(this).val();

                if(valueAmount) {
                    self.find('input[name="formAmountOtherValue"]').val(valueAmount);
                    self.find('input[name="formAmountOtherValueP"]').val(valueAmount);
                }
            });

            //Event to select of country
            self.on('change', 'select[name="country_name"]', function() {
                var countryValue = $(this).val();

                if(countryValue === 'United States' || countryValue === '') {
                    self.find('select[name="state"]').show();
                    self.find('input[name="state_text"]').hide();
                }
                else {
                    self.find('select[name="state"]').hide();
                    self.find('input[name="state_text"]').show();
                }

                $('#state_text-error').hide();
                $('#state-error').hide();
            });

            //Event to click donation field of other amount
            self.on('click', 'input[name="amount_other_value"]', function () {
                //Check radio of other amount and enable field
                self.find('input[name="amount_other_value"]').removeAttr('readonly');
                self.find('input[name="amountField"][value="Other Amount"]').prop('checked', true);

                var amountSelected = self.find('input[name="amountField"][value="Other Amount"]').val();
                var amountSelectedLabel = self.find('input[name="amountField"][value="Other Amount"]').attr('data-amount-label');

                //Set value to hidden of form amount field
                self.find('input[name="formAmountField"]').val(amountSelected);
                self.find('input[name="formAmountLabel"]').val(amountSelectedLabel);
                self.find('input[name="formAmountFieldP"]').val(amountSelected);
                self.find('input[name="formAmountLabelP"]').val(amountSelectedLabel);


            });

            //Event to display modal when user try pay with paypal without amount
            self.on('submit', 'form.pay-with-paypal-account', function(){
                var amountSelected = self.find('input[name="amountField"]:checked').val();
                var amountSelectedLabel = self.find('input[name="amountField"]:checked').attr('data-amount-label');
                var otherAmount = self.find('input[name="amount_other_value"]').val();

                if(amountSelected && amountSelected) {
                    if(amountSelected !== 'Other Amount' && amountSelectedLabel !== 'Other Amount') {
                        return true;
                    }
                    else if(amountSelected === 'Other Amount' && amountSelectedLabel === 'Other Amount' && otherAmount) {
                    	//Assign amount label
                        var amountSelected = self.find('input[name="amountField"]:checked').val();
                       	var amountSelectedLabel = self.find('input[name="amountField"]:checked').attr('data-amount-label');

                        //Assing amount to PaypalForm
                        self.find('form.pay-with-paypal-account input[name="formAmountFieldP"]').val(amountSelected);
                        self.find('form.pay-with-paypal-account input[name="formAmountLabelP"]').val(amountSelectedLabel);
                        self.find('form.pay-with-paypal-account input[name="formAmountOtherValueP"]').val(otherAmount);

                        return true;
                    }
                }

                Swal.fire({
                    title: window.translation.missing_values,
                    icon: 'warning',
                    text: window.translation.please_complete_valid_amount,
                });

                return false; 
            });

            //Populate ip address
            $.getJSON('https://jsonip.com/?callback=?', function (data) {
                self.find('input[name="ip_address"]').val(data.ip);
            });

            //Event when the block no exist in any block
            if (isARS !== 'True') {
                self.on('click', 'form[name="donation-form"] input[type="submit"]', function () {
                    var labelErrors = self.find('label.error:visible');
                    var formDonation = self.find('form[name="donation-form"]');
                    var formData = formDonation.serializeObject();
                    var isRecurring = self.find('input[name="is_recurring"]').val();
                    var isMandatory = self.find('input[name="is_mandatory"]').val();
                    var frecuency = self.find('input[name="frecuencyDonation"]:checked').length;
                    var amount = self.find('input[name="amountField"]:checked').length;
                    var amountValue = self.find('input[name="amountField"]:checked').val();
                    var otherAmount = self.find('input[name="amount_other_value"]').val();
                    var currentScrollTopUser = $(document).scrollTop();
                    var topRedirect = 0;

                    if (formDonation.valid() && labelErrors.length === 0) {
                        if (amountValue === 'Other Amount' && (otherAmount === '' || otherAmount === null)) {

                            Swal.fire({
                                title: window.translation.missing_values,
                                icon: 'warning',
                                text: window.translation.please_complete_valid_amount,
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true
                            }).then(function (result) {
                                topRedirect = self.find('.amount_listing').first().offset().top;

                                $('body,html').animate({
                                    scrollTop: (topRedirect > 20) ? topRedirect - 20 : topRedirect,
                                }, 1000
                                );

                            });

                        }
                        else {
                            //Assign amount label
                            var amountSelected = self.find('input[name="amountField"]:checked').val();
                            var amountSelectedLabel = self.find('input[name="amountField"]:checked').attr('data-amount-label');

                            //Set value to hidden of form amount field
                            formData["formAmountField"] = amountSelected;
                            formData["formAmountLabel"] = amountSelectedLabel;


                            var securityKey = getClientSecurityKey();
                            var recalculateToken = false;
                            if (securityKey != undefined) {
                                // compare the current time vs the time when the token eas generated
                                var initialTime = $('form[name="donation-form"] input[name="user_response_time"]').val();
                                var currentTime = new Date().getTime();

                                var diff = currentTime - initialTime;

                                if (diff > 90000)
                                    recalculateToken = true;
                            }

                            if (recalculateToken === true) {
                                $('form[name="donation-form"]').find(".submit-button").attr("disabled", true);
                                var actionName = $('form[name="donation-form"] input[name="pageactioname"]').val();

                                grecaptcha.execute(getClientSecurityKey(), { action: actionName }).then(function (token) {
                                    if ($('form[name="donation-form"] input[name="user_response"]').length > 0) {
                                        var currentTime = new Date().getTime();
                                        currentTime = currentTime + (24 * 60 * 60 * 1000);
                                        $('form[name="donation-form"] input[name="user_response"]').val(token);
                                        $('form[name="donation-form"] input[name="user_response_time"]').val(currentTime);
                                        formData["user_response"] = token;
                                        formData["user_response_time"] = currentTime;
                                    }
                                    ajax_submit_donation(formData, self);
                                });
                            } else {

                                // ajax_submit_event($("form#organization-register-form"), null);
                                if (securityKey !== undefined) {
                                    var now = new Date().getTime();
                                    now = now + (24 * 60 * 60 * 1000);
                                    $('form[name="donation-form"] input[name="user_response_time"]').val(now);
                                }
                                ajax_submit_donation(formData, self);
                            }


                            //ajax_submit_donation(formData, self);
                        }
                    }
                    else if (!formDonation.valid()) {
                        if (formDonation.find('label.error:visible').length > 0) {
                            topRedirect = formDonation.find('label.error:visible').first().offset().top;
                        }
                        else if (formDonation.find('label.error-custom:visible').length > 0) {
                            topRedirect = formDonation.find('label.error-custom:visible').first().offset().top;
                        }

                        if (currentScrollTopUser != topRedirect) {
                            $('body,html').animate({
                                scrollTop: topRedirect - 100,
                            }, 500);
                        }
                    }

                    return false;
                });

                self.on('click', 'form.pay-with-paypal-account input[type="submit"]', function () {
                    var formInternal = $(this).parents('form').first();
                    var amountValue = self.find('input[name="amountField"]:checked').val();
                    var otherAmount = self.find('input[name="amount_other_value"]').val();
                    var emailValue = self.find('input[name="email"]').val();

                    if (amountValue === 'Other Amount' && (otherAmount === '' || otherAmount === null)) {

                        Swal.fire({
                            title: window.translation.missing_values,
                            icon: 'warning',
                            text: window.translation.please_complete_valid_amount,
                            confirmButtonText: 'Ok',
                            closeOnConfirm: true
                        }).then(function (result) {
                            topRedirect = self.find('.amount_listing').first().offset().top;

                            $('body,html').animate({
                                scrollTop: (topRedirect > 20) ? topRedirect - 20 : topRedirect,
                            }, 1000
                            );

                        });
                    }
                    else {
                        //Assign email to hidden from input textvalue
                        if (emailValue) {
                            formInternal.find('input[name="formPaypalEmailP"]').val(emailValue);
                            self.find('.processing_screen').first().show();

                            return true;
                        }
                        else {

                            Swal.fire({
                                title: window.translation.missing_values,
                                icon: 'warning',
                                text: 'Please complete a valid email',
                                confirmButtonText: 'Ok',
                                closeOnConfirm: true

                            }).then(function (result) {
                                topRedirect = self.find('.amount_listing').first().offset().top;

                                $('body,html').animate({
                                    scrollTop: (topRedirect > 20) ? topRedirect - 20 : topRedirect,
                                }, 1000
                                );

                            });

                            return false;
                        }
                    }
                });
            }
        });
    }
    else {
    	if(saleId && transactionId && donationAmount) {
            Swal.fire({
                title: window.translation.donation_completed,
                icon: 'success',
                text: window.translation.donation_has_been_received,
                confirmButtonText: 'Ok'
            });
        }
    }
}

function donation_block_backend_events() {
    if ($('body').hasClass('backend-page') === true) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        //Add amount behavior
        $('.backend-page').on('click', '#donation-block-conf .add_button', function () {
            var reveal = $(this).parents('#donation-block-conf').first();
            donation_block_add_amount_event(reveal);
        });

        //Add amount behavior - Block Independent
        $('.backend-page').on('click', '#donation-block-independent-conf .add_button', function () {
            var reveal = $(this).parents('#donation-block-independent-conf').first();
            donation_block_add_amount_event(reveal);
        });

        //Delete amount
        $('.backend-page').on('click', '#donation-block-conf .delete_amount', function () {
            donation_block_delete_amount_events($(this));
        });

        //Delete amount - Block Independent
        $('.backend-page').on('click', '#donation-block-independent-conf .delete_amount', function () {
            donation_block_delete_amount_events($(this));
        });

        //Display/Hide Container of URL Exceptions
        $('.backend-page').on('change', '#donationblock-advanced-settings input[name="donationblock_visible_to"]', function () {
            var name = $('input[name="donationblock_visible_to"]:checked').attr('id');
            switch (name) {
                case 'donationblock_visibility_2':
                case 'donationblock_visibility_1':
                    $('#donationblock_exception_url_container').removeClass('is-hidden');
                    break;
                case 'donationblock_visibility_0':
                    $('#donationblock_exception_url_container').addClass('is-hidden');
                    break;
            }
        });

        // Event to disable input label when hide check is selected
        $('.backend-page').on('click', '#donation-block-independent-conf input.hide-label', function () {
            var checked = $(this).prop('checked');
            var elementID = $(this).attr('data-element-id');
            
            if(elementID) {
                if(checked) {
                    $('#donation-block-independent-conf input[name="label-donation-'+elementID+'"]').prop("disabled", true);
                } else {
                    $('#donation-block-independent-conf input[name="label-donation-'+elementID+'"]').prop("disabled", false);
                }
                
            }
        });


        //Save or Update Block
        $('.backend-page').on('click', '#block-donation-independent-form button.submit-button', function () {
            var self = $('#donation-block-independent-conf');
            var formData = $("#block-donation-independent-form").serializeObject();
            var paymentProcessor = formData['payment_processor'];
            var validationPaymentType = false;
            var validationAmounts = false;
            var validationInstallment = false;
            var validationDonationSettings = true;
            var errorMessage = '';
            var donation_amounts = [];
            var invalidPaymentProcessors = false;
            var isValidCustomQuestions = true;
            var visibilityValue = self.find('select[name="visibility"]').val();
            var customQuestionAnswer = self.find('input[name="custom_question_answer"]').val();
            var customQuestionText = self.find('input[name="custom_question"]').val();


            //Append amounts fields
            self.find('form .amounts_created .item_amount').each(function () {
                var amounts = new Object();
                amounts.label = $(this).find(".donation-label").val();
                amounts.amount = $(this).find(".donation-amount").val();
                amounts.hide_label = $(this).find(".hide-label").prop('checked');
                donation_amounts.push(amounts);
            });

            //Validate if exists a payment type selected
            self.find('.payment_type input[type="checkbox"]').each(function () {
                if ($(this).prop('checked')) { validationPaymentType = true; }
            });

            //Error message for paymentType
            if (validationPaymentType === false) {
                errorMessage += '<p>' + window.translation.at_least_one_payment_type + '</p>';
            }

            //Validate amounts
            if (donation_amounts.length > 0) {
                formData['donation_amounts'] = JSON.stringify(donation_amounts);
                validationAmounts = true;
            }
            else if (formData['other_amount'] === 'on') {
                validationAmounts = true;
            }
            else {
                errorMessage += '<p>' + window.translation.at_least_one_amount + '</p>';
            }

            //Validate Installments
            if (paymentProcessor === '0' && self.find('input[name="is_recurring"]').prop('checked')) {
                if (self.find('input[name="installment"]').val() == '') {
                    validationInstallment = false;
                    errorMessage += '<p>' + window.translation.installment + " " + window.translation.is_required + '</p>';
                } else {
                    var installment = parseInt(self.find('input[name="installment"]').val());
                    if (installment < 2 || installment > 999) {
                        validationInstallment = false;
                        errorMessage += '<p>' + window.translation.installment + " " + window.translation.range_installment + '</p>';
                    }
                    else {
                        validationInstallment = true;
                    }
                }
            }
            else {
                validationInstallment = true;
            }

            if ($('div.payments_processor div.input-group-radiobutton').hasClass('disabled-element') === true) {
                invalidPaymentProcessors = true;
                errorMessage += '<p>' + window.translation.payment_processors_missing + '</p>';
            }

            if (visibilityValue === "1" && (customQuestionText === undefined || customQuestionText === '')) {
                isValidCustomQuestions = false;
                errorMessage += '<p>' + window.translation.custom_question_is_required + '</p>';
            }

            if (visibilityValue === "2" && (customQuestionAnswer === undefined || customQuestionAnswer === '')) {
                isValidCustomQuestions = false;
                errorMessage += '<p>' + window.translation.answer_required_for_hidden + '</p>';
            }
            //Validate all conditions
            if (invalidPaymentProcessors || !validationPaymentType || !validationAmounts || !validationInstallment || !isValidCustomQuestions) {
            	validationDonationSettings = false;
            }


            if(validationDonationSettings){
                if ($("#searchresult-form").valid()) {
                    $.ajax({
	                    method: "POST",
	                    url: urlSite + "admin/AddOrUpdateDonationBlock",
	                    data: formData,
	                    beforeSend: function () {
	                        self.find('.processing_screen').show();
	                    }
	                }).done(function (data) {
	                    var jsonResult = JSON.parse(data);

                        if (jsonResult.status === 'ok') {

                            Swal.fire({
                                title: window.translation.success,
                                text: window.translation.donation_block_saved,
                                icon: 'success',
                                closeOnConfirm: true
                            }).then(function (result) {
                                self.find('.processing_screen').show();
                                window.location.reload();
                            });

	                    }
	                    else {
	                        Swal.fire({
	                            title: window.translation.error,
	                            text: jsonResult.message,
	                            icon: "error",
	                            closeOnConfirm: true
	                        });

	                    }

	                    self.find('.processing_screen').hide();

	                    return false;
	                });
	            }
            }
            else {
            	Swal.fire({
                    title: window.translation.warning,
                    html: errorMessage,
            	    icon: "warning",
            	    closeOnConfirm: true
            	});
            	return false;
            }

            return false;
        });

		//Open modal and populate with data of block
		$('.backend-page').on('click', 'a[data-element-reveal="donation-block-independent-conf"]', function() {
			var self = $('#donation-block-independent-conf');
            var blockId = $(this).attr('data-block-id');
            var elementReveal = '#donation-block-independent-conf';

            //Open modal
            $('#donation-block-independent-conf').foundation('open');
            $('#donation-block-independent-conf').foundation();

            //Initiate jquery validate
            initiate_jquery_validate_reveal($('#block-donation-independent-form'), 'block-donation-independent-form');

            if(blockId && blockId !== '0') {
                //Load data of block
                $.ajax({
                    method: "POST",
                    url: urlSite + "admin/GetDonationBlockInfo",
                    data: { blockId: blockId },
                    beforeSend: function () {
                        self.find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    
                    if (jsonResult) {
                        hideVisibleOptions(jsonResult.uniqueRegion, '#donationblock-advanced-settings');

                        //Set values to modal
                        //Block Info
                        if (jsonResult.blockInfo) {
                            self.find('input[name="block_id"]').val(jsonResult.blockInfo.ID);
                            self.find('input[name="system_name"]').val(jsonResult.blockInfo.SystemName);
                            self.find('select[name="region"]').val(jsonResult.blockInfo.Region);
                            self.find('input[name="sort_weight"]').val(jsonResult.blockInfo.Weight);

                            if(jsonResult.blockInfo.ShowTitle) {
                                self.find('input[name="donationblock_show_title"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="donationblock_show_title"]').prop('checked', false);
                            }

                            if(jsonResult.blockInfo.Enabled) {
                                self.find('input[name="donationblock_enabled"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="donationblock_enabled"]').prop('checked', false);
                            }

                            self.find('input#donationblock_visibility_' + jsonResult.blockInfo.Visibility).prop('checked', true);
                            self.find('textarea[name="visibility_urls"]').val(jsonResult.blockInfo.VisibilityUrls);

                            if(jsonResult.blockInfo.Visibility != 0) {
                                self.find('#donationblock_exception_url_container').removeClass('is-hidden');
                            }
                            else {
                                self.find('#donationblock_exception_url_container').addClass('is-hidden');
                            }
                        }
                        
                        //Cms Info
                        if(jsonResult.cmsBlock) {
                        	var cantAmounts = 0;
                            var donationAmounts = (jsonResult.cmsBlock.Amounts) ? JSON.parse(jsonResult.cmsBlock.Amounts) : '';
                        	self.find('input[name="donationblock_id"]').val(jsonResult.cmsBlock.ID);
                            self.find('.item_amount').remove();
                            self.find('.payment_type').find('input').prop('checked', false);
                            self.find('input[name="payment_processor"][value="'+ jsonResult.cmsBlock.PaymentsProcessor +'"]').prop('checked', true);
                            
                            if(jsonResult.cmsBlock.PaymentsProcessor === 0) {
                            	self.find('.echeck-field').show();
                            	self.find('.paypal-account-field').hide();
                                self.find('input[name="is_recurring"]').parents('.small-12').first().show();
                            }
                            else if (jsonResult.cmsBlock.PaymentsProcessor === 1) {
                            	self.find('.echeck-field').hide();
                            	self.find('.paypal-account-field').show();
                                self.find('input[name="is_recurring"]').parents('.small-12').first().hide();
                                self.find('#custom_question_section').hide();

                            }
                            if(jsonResult.cmsBlock.PaymentType === 0) {
                            	self.find('input#credit_card_i').prop('checked', true);
                            }
                            else if (jsonResult.cmsBlock.PaymentType === 1) {
                            	self.find('input#echeck_i').prop('checked', true);
                            }
                            else if (jsonResult.cmsBlock.PaymentType === 2) {
                            	if(jsonResult.cmsBlock.PaymentsProcessor === 0) {
                            		self.find('input#credit_card_i').prop('checked', true);
                            		self.find('input#echeck_i').prop('checked', true);
                            	}
                            	else {
                            		self.find('input#credit_card_i').prop('checked', true);
                            		self.find('input#paypal_i').prop('checked', true);
                            	}
                            }
                            else if (jsonResult.cmsBlock.PaymentType === 3) {
                            	self.find('input#paypal_i').prop('checked', true);
                            }

                            if (jsonResult.cmsBlock.HideCountry) {
                                self.find('input[name="hide_country_field_i"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="hide_country_field_i"]').prop('checked', false);
                            }

                            if (jsonResult.cmsBlock.DisplayInHonorFor) {
                                self.find('input[name="donation_honor"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="donation_honor"]').prop('checked', false);
                            }
                            if (jsonResult.cmsBlock.DisplaySalutation) {
                                self.find('input[name="donation_salutation"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="donation_salutation"]').prop('checked', false);
                            }
                            
                            if (jsonResult.cmsBlock.DefaultCountry) {
                                self.find('select[name="default_country"]').val(jsonResult.cmsBlock.DefaultCountry);
                            }

                            self.find('input[name="is_recurring"]').prop('checked', jsonResult.cmsBlock.IsRecurring);
                            self.find('input[name="is_phone_required"]').prop('checked', jsonResult.cmsBlock.IsRequiredPhone);
                            if (jsonResult.cmsBlock.IsRecurring) {
                            	self.find('.installment').removeClass('is-hidden');
                            	self.find('input[name="installment"]').val(jsonResult.cmsBlock.Installment);
                            }
                            else {
                            	self.find('.installment').addClass('is-hidden');
                            }

                            if(jsonResult.cmsBlock.SFCampaign) {
                                self.find('input[name="sf_campaign"]').val(jsonResult.cmsBlock.SFCampaign);
                            }
                            if(jsonResult.cmsBlock.SFCampaignAlias) {
                                self.find('input[name="sf_campaign_alias"]').val(jsonResult.cmsBlock.SFCampaignAlias);
                            }
                            if(jsonResult.cmsBlock.SFSku) {
                                self.find('input[name="sf_sku"]').val(jsonResult.cmsBlock.SFSku);
                            }
                            if(jsonResult.cmsBlock.SFTrackingInfo) {
                                self.find('input[name="sf_tracking_info"]').val(jsonResult.cmsBlock.SFTrackingInfo);
                            }
                            if(jsonResult.cmsBlock.HideTitleDonationAmounts) {
                                self.find('input[name="hide_donation_amount_title"]').prop('checked', true);
                            }
                            else {
                                self.find('input[name="hide_donation_amount_title"]').prop('checked', false);
                            }
                            self.find('input[name="redirect_url"]').val(jsonResult.cmsBlock.RedirectUrl);
                            self.find('input[name="other_amount"]').prop('checked', jsonResult.cmsBlock.AllowOtherAmount);
                            
                            self.find('.amounts_created').empty();
                            if(donationAmounts) {
                                self.find('input[name="number_amounts"]').val(donationAmounts.length);
                                donationAmounts.forEach(function (key) {
                                    cantAmounts = cantAmounts + 1;
                                    var disableLabel = '';
                                    var checkedHideLabel = '';
                                    if(key.hide_label) {
                                        checkedHideLabel = 'checked';
                                        disableLabel = 'disabled';
                                    }
                                    var content = '<div class="row item_amount small-12 columns">' +
                                        '<div class="small-4 columns">' +
                                            '<input id="label-donation-' + cantAmounts + '" '+disableLabel+' class="donation-label" name="label-donation-' + cantAmounts + '" type="text" placeholder="Ex. Adults" data-element-id=' + cantAmounts + ' value="' + key.label + '"/>' +
                                        '</div>' +
                                        '<div class="small-1 columns">'+
                                            '<input id="hide-label-' + cantAmounts + '" '+checkedHideLabel+' class="hide-label" name="hide-label-' + cantAmounts + '" type="checkbox" data-element-id="' + cantAmounts + '" />' +
                                        '</div>'+
                                        '<div class="small-4 columns">' +
                                            '<div class="columns input-group amount no-padding large-7">' +
                                                '<input id="donation-amount-' + cantAmounts + '" class="donation-amount" name="donation-amount-' + cantAmounts + '" min="0" type="number" placeholder="150" class="input-group-field" value="' + key.amount + '" />' +
                                                '<span class="input-group-label">$</span>' +
                                            '</div>' +
                                        '</div>' +
                                        '<div class="small-3 columns no-padding">' +
                                            '<a class="delete_amount" data-element-id="' + cantAmounts + '" href="#", title="delete_amount"></a>' +
                                        '</div>' +
                                    '</div>';
                                    self.find('.amounts_created').append(content);
                                });
                            }

                            var donationQuestions;

                            if (jsonResult.cmsBlock.CustomQuestions !== '' && jsonResult.cmsBlock.CustomQuestions !== null) {
                                try {
                                    donationQuestions = JSON.parse(jsonResult.cmsBlock.CustomQuestions);
                                    var donationQuestion = donationQuestions[0];

                                     LoadDonationCustomQuestionConfiguration(donationQuestion, self);

                                } catch (e) {
                                    window.console && console.error(e)
                                }

                            } else {
                              self.find('#custom_question_section input').prop('disabled', true);
                            }
	                    }

                        //Language Info
                        if(jsonResult.languagesInfo) {
                            jsonResult.languagesInfo.forEach(function(languageInfo) {
                                var languageId = languageInfo.languageID;

                                self.find('input[name="title-'+ languageId +'"]').val(languageInfo.title);
                            });
                        }

                        //Text button info
                        if(jsonResult.languagesDonationBlock) {
                            jsonResult.languagesDonationBlock.forEach(function(languageDonationInfo) {
                                var languageId = languageDonationInfo.LanguageId;

                                self.find('input[name="text-button-' + languageId + '"]').val(languageDonationInfo.TextButton);
                                self.find('input[name="text-salutation-' + languageId + '"]').val(languageDonationInfo.SalutationLabel);
                                self.find('input[name="text-in-honor-of-' + languageId + '"]').val(languageDonationInfo.InHonorForLabel);                                
                            });
                        }

                        //Multiple Regions
                        if (jsonResult.regionsMultiple) {
                            //Apply multiselect widget to region select
                            apply_backend_multiselect_group(elementReveal + ' select[name="region_multiple"]', false, jsonResult.regionsMultiple);
                        }
                    }

                    //Set id of version in link rollback
                    self.find('.rollback-link').attr('data-block-id', blockId);
                    self.find('.rollback-link').show();
                    self.find('a.delete_block').show();
                    self.find('.processing_screen').hide();

                    VerifyPaymentProcessorStatus(jsonResult, self);
                });
            }
            else {
                var selectorActiveOption = null;
                //Load data about GetActivePaymentProcessors
                $.ajax({
                    method: "GET",
                    url: urlSite + "admin/GetActivePaymentProcessors",
                    beforeSend: function () {
                        self.find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    VerifyPaymentProcessorStatus(jsonResult,self);
                       
                    self.find('.processing_screen').hide();
                });
            	//Hide remove link
                self.find('a.delete_block').hide();
                self.find('.rollback-link').hide();
                self.find('.input-group-button.submit-button').css({
                    display: 'block',
                    width: '100%'
                });
                hideVisibleOptions(false, '#donationblock-advanced-settings');

            	//Clean all data of modal
            	self.find('input[name="block_id"]').val('0');
            	self.find('input[name="donationblock_id"]').val('0');
                self.find('input[name="system_name"]').val('');
                self.find('input[name="sort_weight"]').val(0);
                self.find('.tabs-panel').find('input').val('');
                self.find('input[name="donationblock_show_title"]').prop('checked', false);
                self.find('input[name="donationblock_enabled"]').prop('checked', true);
                self.find('input#donationblock_visibility_0').prop('checked', true);
                self.find('textarea[name="visibility_urls"]').val('');
                self.find('#donationblock_exception_url_container').addClass('is-hidden');
                self.find('input[name="payment_processor"][value="0"]').prop('checked', true);
                self.find('input[name="is_recurring"]').parents('.small-12').first().show();
                self.find('.payment_type_section input').prop('checked', false);
                self.find('.payment_type_section .echeck-field').show();
                self.find('.payment_type_section .paypal-account-field').hide();
                self.find('input[name="is_recurring"]').prop('checked', false);
                self.find('input[name="is_phone_required"]').prop('checked', false);
                self.find('.installment').addClass('is-hidden');
                self.find('input[name="redirect_url"]').val('');
                self.find('input[name="label-donation"]').val('');
                self.find('input[name="donation-amount"]').val('');
                self.find('.item_amount').remove();
                self.find('input[name="other_amount"]').prop('checked', false);
                self.find('input[name="hide_donation_amount_title"]').prop('checked', false);                

                //Manage multiregions field
                apply_backend_multiselect_group(elementReveal + ' select[name="region_multiple"]', false, '');

                self.find('input[name="sf_campaign"]').val('');
                self.find('input[name="sf_campaign_alias"]').val('');
                self.find('input[name="sf_sku"]').val('');
                self.find('input[name="sf_tracking_info"]').val('');
            }
		});

		//Rollback Action
		$('.backend-page').on('click', 'a.rollback_action[data-component-type="DonationBlock"]', function () {
            var versionId = $(this).data('version-id');
            var componentType = $(this).data('component-type');
            var pageName = $(this).data('pagename');
            var idsversion = $(this).data('idsversion');

            if(componentType === 'DonationBlock') {
                if (versionId > 0) {
                    $.ajax({
                        method: "POST",
                        url: urlSite + "admin/RestoreComponent",
                        data: { versionId: versionId, pageName: pageName, idsversion: idsversion, componentType: componentType },
                        beforeSend: function () {
                            $('#rollback-list .processing_screen').show();
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);

                        $('#rollback-list').foundation('close');

                        //Load versions by componenet
                        if(componentType === 'DonationBlock') {
                            donation_block_populate_version(jsonResult);
                        }
                        $('#rollback-list .processing_screen').hide();
                    });
                }
            }
        });
    }
}

function LoadDonationCustomQuestionConfiguration(donationQuestion , self) {

    if (donationQuestion) {
        self.find('select[name="visibility"]').val(donationQuestion.Visibility);
        self.find('input[name="custom_question"]').val(donationQuestion.Question);
        self.find('input[name="custom_question_answer"]').val(donationQuestion.Answer);

        if (donationQuestion.Required === true) {
            if (self.find('input[name="custom_question_required"]').length > 0) {
                self.find('input[name="custom_question_required"]').prop("checked", donationQuestion.Required);
            }
            else {
                self.find('input[name="custom_question_required_ars"]').prop("checked", donationQuestion.Required);
            }
        }

        if (donationQuestion.Visibility === 1) {
            self.find('input[name="custom_question_answer"]').parents('.custom_question_answer_section').hide();
        } else if (donationQuestion.Visibility === 2) {
            self.find('input[name="custom_question_answer"]').parents('.custom_question_answer_section').show();
        } else {
            self.find('select[name="visibility"]').val("");
            self.find('#custom_question_section input').prop('disabled', true);
        }
    }
}

function VerifyPaymentProcessorStatus(jsonResult,self) {
    var missingPaymentProcessors = false;
    var selectorActiveOption = null;

    if (jsonResult && (jsonResult.CLickPledgeActive !== undefined || jsonResult.PaypalActive !== undefined)) {

        if (jsonResult.CLickPledgeActive === false && jsonResult.PaypalActive === false) {
            missingPaymentProcessors = true;

            self.find('div.payments_processor input#option-click-pledge-i').prop('disabled', true);
            self.find('div.payments_processor input#option-click-pledge-i').prop('checked', false);

            self.find('div.payments_processor input#option-paypal-i').prop('disabled', true);
            self.find('div.payments_processor input#option-paypal-i').prop('checked', false);

            self.find('button.submit-button').prop('disabled', true);

        } else {
            // to choose one of the selected payment processors
            var innerHtmlCode = "";
            var processorStatusFormat = '<label class="processor-status-item">#procesor# <span>#mode#</span></label>';
            var messageProcessorStatus = "";

            if (jsonResult.CLickPledgeActive === false) {
                self.find('div.payments_processor input#option-click-pledge-i').prop('disabled', true);
                self.find('div.payments_processor input#option-click-pledge-i').prop('checked', false);
                self.find('input#option-click-pledge-i').parent('div').addClass('disabled-element');
                self.find('input#option-click-pledge-i').parent('div').prop('title', window.translation.contact_support_activate_payment_processor);
                var tooltipCP = new Foundation.Tooltip(self.find('input#option-click-pledge-i').parent('div'));
            } else {
                selectorActiveOption = "option-click-pledge-i";
                var mode = window.translation.mode_test;
                if (jsonResult.isClickPledgeProdMode !== undefined && jsonResult.isClickPledgeProdMode === true)
                    mode = window.translation.mode_production;

                messageProcessorStatus = "Click & Pledge " + window.translation.mode_word + ": ";
                innerHtmlCode += processorStatusFormat.replace("#procesor#", messageProcessorStatus).replace("#mode#", mode);
            }

            if (jsonResult.PaypalActive === false) {
                self.find('div.payments_processor input#option-paypal-i').prop('disabled', true);
                self.find('div.payments_processor input#option-paypal-i').prop('checked', false);
                self.find('input#option-paypal-i').parent('div').addClass('disabled-element');

                self.find('input#option-paypal-i').parent('div').prop('title', window.translation.contact_support_activate_payment_processor);
                var tooltipPaypal = new Foundation.Tooltip(self.find('input#option-paypal-i').parent('div'));

            } else if (selectorActiveOption === null || selectorActiveOption === '' || (jsonResult.cmsBlock !== undefined && jsonResult.cmsBlock.PaymentsProcessor === 1)) {
                selectorActiveOption = "option-paypal-i";
            }

            if (jsonResult.PaypalActive === true) {
                mode = window.translation.mode_test;
                if (jsonResult.isPaypalProdMode !== undefined && jsonResult.isPaypalProdMode === true)
                    mode = window.translation.mode_production;

                messageProcessorStatus = "Paypal Mode " + window.translation.mode_word + ": ";
                innerHtmlCode += processorStatusFormat.replace("#procesor#", messageProcessorStatus).replace("#mode#", mode);
            }

            self.find('div.payments_processor input#' + selectorActiveOption).prop('checked', true);
            self.find('div.processor-status').html(innerHtmlCode);
            self.find('#processors-mode div.row').removeClass("hide");


            if (selectorActiveOption === 'option-paypal-i') {
                self.find('.payment_options_section').hide();
                self.find('.payment_options_section_details').hide();
                self.find('.payment_type_section .echeck-field').hide();
                self.find('.paypal-account-field').show();

                self.find('.general_settings_section').children().slice(0, 4).each(function () {
                    $(this).hide();
                });
                //selectorActiveOption
                self.find('#custom_question_section').hide();

            } else if (selectorActiveOption === "option-click-pledge-i") {
                $('.payment_options_section').show();
                $('.payment_options_section_details').show();
                $('.payment_type_section .echeck-field').show();
                $('.paypal-account-field').hide();

                $('.general_settings_section').children().slice(0, 4).each(function () {
                    $(this).show();
                });

                var visivilityVal = self.find('select[name="visibility"]').val();
                if (visivilityVal === '' || visivilityVal === undefined || visivilityVal === 'None') {
                    self.find('#custom_question_section input').prop('disabled', true);
                }
                self.find('#custom_question_section').show();
                self.find('.general_settings_section').children().slice(0, 4).each(function () {
                    $(this).show();
                });


            }

        }
    } else {
        missingPaymentProcessors = true;
    }

    if (missingPaymentProcessors === true) {
        self.find('div.missing_processors label').addClass('error');
        self.find('div.missing_processors').removeClass('hide');
        self.find('div.payments_processor div.input-group-radiobutton').addClass('disabled-element');
        self.find('.submit-button').prop('disabled', true);
    }
}

function donation_block_add_amount_event(reveal) {
	var label_donation = reveal.find('input[name="label-donation"]').val();
    var amount_donation = reveal.find('input[name="donation-amount"]').val();
    var hide_label = reveal.find('input[name="hide-label"]').prop('checked');
    var checkedHideLabelprop = '';
    var disableLabelprop = '';
    if(hide_label) {
        checkedHideLabelprop = 'checked';
        disableLabelprop = 'disabled';
    }

	if (label_donation === "" || amount_donation === "") {
	    Swal.fire({
	        title: window.translation.warning,
	        html:   window.translation.label_amount_required,
	        icon: "warning",
	        closeOnConfirm: true,
	    });
	    return false;
	} else {
        if ($.isNumeric(amount_donation) == false) {
            Swal.fire({
	            title: window.translation.warning,
	            html: window.translation.amount_numeric,
	            icon: "warning",
	            closeOnConfirm: true
	        });
	        return false;
	    }
	}
	var cant = parseInt(reveal.find('input[name="number_amounts"]').val());
    cant = cant + 1;
	var content = '<div class="row item_amount small-12 columns">'+
	    '<div class="small-4 columns">'+
	        '<input id="label-donation-' + cant + '" '+disableLabelprop+' class="donation-label" name="label-donation-' + cant + '" type="text" placeholder="Ex. Adults" data-element-id=' + cant + ' value="' + label_donation + '"/>' +
        '</div>'+
        '<div class="small-1 columns">'+
            '<input id="hide-label-' + cant + '" '+checkedHideLabelprop+' class="hide-label" name="hide-label-' + cant + '" type="checkbox" data-element-id="' + cant + '" />' +
        '</div>'+
	    '<div class="small-4 columns">'+
	        '<div class="columns input-group amount no-padding large-7">'+
	            '<input id="donation-amount-' + cant + '" class="donation-amount" name="donation-amount-' + cant + '" type="number" placeholder="150" min="0" class="input-group-field" value="' + amount_donation + '" />' +
	            '<span class="input-group-label">$</span>'+
	        '</div>'+
	    '</div>' +
	    '<div class="small-3 columns no-padding">' +
	        '<a class="delete_amount" data-element-id="' + cant + '" href="#", title="delete_amount"></a>' +
	    '</div>' +
	'</div>';

	reveal.find('.amounts_created').append(content);
	reveal.find('input[name="number_amounts"]').val(cant);
	reveal.find('input[name="label-donation"]').val('');
	reveal.find('input[name="donation-amount"]').val('');
}

function donation_block_delete_amount_events(element) {
	element.parent().parent().remove();
}

function donation_block_populate_version(jsonResult) {
	hideVisibleOptions(jsonResult.uniqueRegion, '#donationblock-advanced-settings');
	var self = $('#donation-block-independent-conf');

	if(jsonResult.blockDonation.length > 0) {
		jsonResult.blockDonation.forEach(function (donationBlock) {
			var cantAmounts = 0;
			var paymentProcessorValue = (donationBlock.PaymentsProcessor === 'CLICKANDPLEDGE') ? 0 : 1;
	        var donationAmounts = (donationBlock.Amounts) ? JSON.parse(donationBlock.Amounts) : '';

	        self.find('input[name="donationblock_id"]').val(donationBlock.ID);
            self.find('.item_amount').remove();
            self.find('.payment_type').find('input').prop('checked', false);
            self.find('input[name="payment_processor"][value="'+ paymentProcessorValue +'"]').prop('checked', true);
            
            if(paymentProcessorValue === 0) {
            	self.find('.echeck-field').show();
            	self.find('.paypal-account-field').hide();
            	self.find('input[name="is_recurring"]').parents('.small-12').first().show();
            }
            else if(paymentProcessorValue === 1) {
            	self.find('.echeck-field').hide();
            	self.find('.paypal-account-field').show();
            	self.find('input[name="is_recurring"]').parents('.small-12').first().hide();
            }
            if(donationBlock.HideTitleDonationAmounts) {
                self.find('input[name="hide_donation_amount_title"]').prop('checked', true);
            }
            else {
                self.find('input[name="hide_donation_amount_title"]').prop('checked', false);
            }
            if(donationBlock.PaymentType === 'CREDITCARD') {
            	self.find('input#credit_card_i').prop('checked', true);
            }
            else if (donationBlock.PaymentType === 'ECHECK') {
            	self.find('input#echeck_i').prop('checked', true);
            }
            else if (donationBlock.PaymentType === 'BOTH') {
            	if(paymentProcessorValue === 0) {
            		self.find('input#credit_card_i').prop('checked', true);
            		self.find('input#echeck_i').prop('checked', true);
            	}
            	else {
            		self.find('input#credit_card_i').prop('checked', true);
            		self.find('input#paypal_i').prop('checked', true);
            	}
            }
            else if (donationBlock.PaymentType === 'PAYPAL') {
            	self.find('input#paypal_i').prop('checked', true);
            }

            self.find('input[name="is_recurring"]').prop('checked', donationBlock.IsRecurring);
            if (donationBlock.IsRecurring) {
            	self.find('.installment').removeClass('is-hidden');
            	self.find('input[name="installment"]').val(donationBlock.Installment);
            }
            else {
            	self.find('.installment').addClass('is-hidden');
            }

            self.find('input[name="redirect_url"]').val(donationBlock.RedirectUrl);
            self.find('input[name="other_amount"]').prop('checked', donationBlock.AllowOtherAmount);

            self.find('.amounts_created').empty();

            if(donationAmounts) {
                donationAmounts.forEach(function (key) {
                    cantAmounts = cantAmounts + 1;
                    var content = '<div class="row item_amount small-12 columns">' +
                        '<div class="small-4 columns">' +
                            '<input id="label-donation-' + cantAmounts + '" class="donation-label" name="label-donation-' + cantAmounts + '" type="text" placeholder="Ex. Adults" data-element-id=' + cantAmounts + ' value="' + key.label + '"/>' +
                        '</div>' +
                        '<div class="small-4 columns">' +
                            '<div class="columns input-group amount no-padding large-7">' +
                                '<input id="donation-amount-' + cantAmounts + '" class="donation-amount" name="donation-amount-' + cantAmounts + '" type="number" min="0" placeholder="150" class="input-group-field" value="' + key.amount + '" />' +
                                '<span class="input-group-label">$</span>' +
                            '</div>' +
                        '</div>' +
                        '<div class="small-4 columns no-padding">' +
                            '<a class="delete_amount" data-element-id="' + cantAmounts + '" href="#", title="delete_amount"></a>' +
                        '</div>' +
                    '</div>';
                    self.find('.amounts_created').append(content);
                });
            }
            
            self.find('input[name="sf_campaign"]').val(donationBlock.SFCampaign);
            self.find('input[name="sf_campaign_alias"]').val(donationBlock.SFCampaignAlias);
            self.find('input[name="sf_sku"]').val(donationBlock.SFSku);
            self.find('input[name="sf_tracking_info"]').val(donationBlock.SFTrackingInfo);
		});
	}

	//Populate info of block
    if(jsonResult.blockData) {
        var blockInfo = jsonResult.blockData;

        self.find('input[name="system_name"]').val(blockInfo.SystemName);
        self.find('select[name="region"]').val(blockInfo.Region);
        self.find('input[name="sort_weight"]').val(blockInfo.Weight);

        if(blockInfo.ShowTitle) {
            self.find('input[name="donationblock_show_title"]').prop('checked', true);
        }
        else {
            self.find('input[name="donationblock_show_title"]').prop('checked', false);
        }

        if(blockInfo.Enabled) {
            self.find('input[name="donationblock_enabled"]').prop('checked', true);
        }
        else {
            self.find('input[name="donationblock_enabled"]').prop('checked', false);
        }

        self.find('input#donationblock_visibility_' + blockInfo.Visibility).prop('checked', true);
        self.find('textarea[name="visibility_urls"]').val(blockInfo.VisibilityUrls);

        if(blockInfo.Visibility != 0) {
            self.find('#donationblock_exception_url_container').removeClass('is-hidden');
        }
        else {
            self.find('#donationblock_exception_url_container').addClass('is-hidden');
        }
    }

    //Populate info of languages block
    if(jsonResult.blockTitles.length > 0) {
        jsonResult.blockTitles.forEach(function (title) {
            self.find('input[name="title-'+ title.Language +'"]').val(title.Title);
        });
    }

    //Populate info of languages block (Text buttons)
    if(jsonResult.blockLanguageDonationBlock.length > 0) {
        jsonResult.blockLanguageDonationBlock.forEach(function (textButton) {
            self.find('input[name="text-button-'+ textButton.Language +'"]').val(textButton.TextButton);
        });
    }
}

function donation_block_populate_ip() {
    if($('.donationBlock').length > 0 && $('form[name="donation-form"]').length > 0) {
        var i = 1;
        dontaion_block_get_public_ip(i);
    }
}

function dontaion_block_get_public_ip(i) {
    if(i < 3) {
        $.ajax({
            method: "GET",
            url: "https://jsonip.com/",
            dataType: 'JSON',
        }).done(function (data) {
            $('input[name="clientip"]').val(data["ip"]);
            }).fail(function(error) {
            dontaion_block_get_public_ip(i + 1);
        });
    } else {
        $('input[name="clientip"]').val("0.0.0.0");
    }
};

$(document).ready(function () {
	//Events without translations

	//Set info of sharingPortal plus
  set_info_sharing_portal_plus_page();

	partner_registration_organization_form_events();
});

//Load methods after load translations
function after_translation_resource_load_partner_registration_events() {
	//Method to populate organization sign up form in back or redirect
	partner_registration_populate_initial_form();
}

function partner_registration_populate_initial_form() {
	if (!is_backend_page()) return;
	if($('#organization-register-form').length > 0) {
		//Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

		var self = $('#organization-register-form');

		//Validate if is ARS
		if($('input.branch-logic-info').length > 0) {

			//Populate if exists ARS workflow active
			$.ajax({
			    type: "GET",
			    url: urlSite + 'ARS/getSiteId',
			    beforeSend: function () {
			        //Disable buttons
			        $('.actions_partner_branch_logic').find('.button').attr('disabled', 'disabled');
			        self.find('.processing_screen').removeClass('hide-custom');
			    },
			    success: function (data) {
			    	var siteId = data;
			    	var typeBranchLogic = $('input.branch-logic-info').first().attr('data-type');
			    	var workflowId = $('input.branch-logic-info').first().attr('data-workflow');

			    	switch (typeBranchLogic) {
                        case 'PARTNER_REGISTRATION':
                            var formData = JSON.parse(localStorage.getItem('partner-branch-logic-form-data-' + siteId));;
                            break;
                        default:
                            var formData = null;
                    }

			    	if(formData) {
			    		for(var p in formData){
			    		    if (formData.hasOwnProperty(p)) {
			    		    	//Populate only string values
			    		    	if(typeof formData[p] === 'string') {
			    		    		var value = formData[p];
			    		    		var input = self.find('input[name="' + p + '"]').first();
			    		    		var select = self.find('select[name="' + p + '"]').first();
			    		    		var textarea = self.find('textarea[name="' + p + '"]').first();

			    		    		input.val(value);
			    		    		select.val(value);
			    		    		textarea.text(value);

			    		    		if(p === 'logo_url') {
			    		    			//Reload ezdz preview
			    		    			$('input[name="profile_photo_file"]').ezdz('preview', value, function () {
			    		    				var delete_image_link = '<a href="#" id="delete_logo_url" class="delete_logo_url">' + window.translation.delete + '</a>';

			    		    				// Put link below image preview.
			    		    				$(".remove_image").html(delete_image_link);
			    		    			});
			    		    		}
			    		    	}
			    		    }
			    		}
			    	}

			    	$('.actions_partner_branch_logic').find('.button').removeAttr('disabled');
			    	self.find('.processing_screen').addClass('hide-custom');
			    }
			});
		}
	}
}

function partner_registration_organization_form_events() {
	if($('#organization-register-form').length > 0) {
		var self = $('#organization-register-form');

		//Validate if is ARS
		if($('input.branch-logic-info').length > 0) {
			$(document).on('click', '#delete_logo_url', function() {
				$('input[name="profile_photo_file"]').parents('.ezdz-dropzone').find('img').hide();
				$('input[name="profile_photo_file"]').parents('.ezdz-dropzone').removeClass('ezdz-accept');
				$('input[name="profile_photo_file"]').parents('.ezdz-dropzone').find('div').append(translation.add_picture_drop_picture);
				$('input[name="logo_url"]').val('');
				$(this).remove();

				return false;
			});
		}
	}
};

//Events without translations
$(document).ready(function () {
    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();
});

//Load methods after load translations
function after_translation_resource_load_export_data() {
	//General events
	export_data_general_behaviors();

	//Submit events
	export_data_submit_events();
}

function export_data_general_behaviors() {
    $(document).on('click', 'a[data-element-reveal="export-form-csv"]', function () {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        if (!$(this).hasClass('disabled')) {
            var elementReveal = $(this).data('element-reveal');

            $('#' + elementReveal + ' form')[0].reset();
            $('#' + elementReveal).foundation('open');
            $('#' + elementReveal).foundation();

            date_picker_widget();

            try {


                var momentNow = moment();
                var momentLast3Months = moment().subtract(3, 'months')

                $('form#export_csv_form input[name="date-from"]').val(momentLast3Months.format(MomentDateFormat));
                $('form#export_csv_form input[name="date-to"]').val(momentNow.format(MomentDateFormat));

             } catch (e) {
                window.console && console.error(e)
            }

            initiate_jquery_validate_reveal($('#export_csv_form'), 'export_csv_form');

            $.ajax({
                method: "POST",
                url: urlSite + "Admin/Forms",
                beforeSend: function () {
                    $('#' + elementReveal + ' .processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                if (jsonResult.length > 0) {
                    var options = export_data_form_options(jsonResult);
                    $('#' + elementReveal + ' #forms').empty();
                    $('#' + elementReveal + ' #forms').append(options);

                    $('#' + elementReveal + ' .processing_screen').hide();
                }
                $('#' + elementReveal + ' .processing_screen').hide();
            });
        }
    });
}

function export_data_submit_events() {
    if ($('#export-form-csv').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    	$(document).on('click', '#export_csv_form .export_csv', function () {
            $("#export_csv_form").find("label.error").remove();
            initiate_jquery_validate_reveal($('#export_csv_form'), 'export_csv_form');

            if ($('#export_csv_form').valid()) {


                var formData = $("#export_csv_form").serializeObject();
                $.ajax({
                    method: "POST",
                    url: urlSite + "Admin/ExportFormData",
                    data: { form: formData },
                    beforeSend: function () {
                        $('#export-form-csv').find('.processing_screen').show();
                    }
                })
	            .done(function (data) {
	                var jsonResult = JSON.parse(data);
	                if (jsonResult.status === 500) {
	                    Swal.fire({
	                        title: "",
	                        icon: "error",
	                        text: jsonResult.message,
	                        confirmButtonText: "Ok",
	                    });
	                }
	                else {

                        $("#export_csv_form").submit();
                        
	                }

                    //Hide processing screen
                    $('#export-form-csv').find('.processing_screen').hide();
	                $('#export-form-csv').foundation('close');
	            });

            }
            else {
                Swal.fire({
                    title: "",
                    icon: "warning",
                    text: window.translation.enter_all_required,
                    confirmButtonText: "Ok",
                });
                return false;
            }
        });
        $(document).on('change', '#export_csv_form input#date-from, #export_csv_form input#date-to', function () {
            if ($(this).val()) {
                if ($(this).parent().find('label.error-custom').length) {
                    $(this).parent().find('label.error-custom').remove();
                }
            }
        });
        $(document).on('click', '#export_csv_form .remove-link', function() {
        	//Validate form
        	if ($('#export_csv_form').valid()) {
                var processing_screen = $('#export_csv_form').find('.processing_screen');
        		var optionSelected = $('#export_csv_form select[name="forms"]').val();
        		var enabledProp = $('#export_csv_form select[name="forms"] option[value="'+ optionSelected +'"]').data('enabled');
        		var nameProp = $('#export_csv_form select[name="forms"] option[value="'+ optionSelected +'"]').text();
        		var typeProp = $('#export_csv_form select[name="forms"] option[value="'+ optionSelected +'"]').data('type');
        		var createdOnProp = $('#export_csv_form select[name="forms"] option[value="'+ optionSelected +'"]').data('createdon');
        		var lastUpdatedProp = $('#export_csv_form select[name="forms"] option[value="'+ optionSelected +'"]').data('updatedon');
        		var numberRecordsProp = $('#export_csv_form select[name="forms"] option[value="'+ optionSelected +'"]').data('numberrecords');

        		//Text to modals
				var modal_report_info = '<p style="padding:5% 10%; text-align:left;">' +
											'<span style="display:block;"><strong>'+ window.translation.form_name +': </strong>' + nameProp + '</span>' +
											'<span style="display:block;"><strong>'+ window.translation.form_type +': </strong>' + typeProp + '</span>' +
											'<span style="display:block;"><strong>'+ window.translation.created_on +': </strong>' + createdOnProp + '</span>' +
											'<span style="display:block;"><strong>'+ window.translation.last_update_on +': </strong>' + lastUpdatedProp + '</span>' +
											'<span style="display:block;"><strong>'+ window.translation.number_records +': </strong>' + numberRecordsProp + '</span>' +
										'</p>';

        		if(!enabledProp) {
        			//Show dialog "Report can be deleted"

                    Swal.fire({
                        title: window.translation.warning,
                        html: window.translation.are_you_sure_delete_report_and_data + modal_report_info,
                        icon: 'warning',
                        showCancelButton: true,
                        confirmButtonColor: '#ff0000',
                        confirmButtonText: window.translation.social_login_link_continue.toUpperCase(),
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: false


                    }).then(function (result) {
                        Swal.fire({
                            title: window.translation.warning,
                            html: window.translation.all_data_will_be_deleted + window.translation.did_you_download_copy,
                            icon: 'warning',
                            showCancelButton: true,
                            confirmButtonColor: '#ff0000',
                            confirmButtonText: window.translation.delete_report.toUpperCase(),
                            cancelButtonText: window.translation.cancel,
                            closeOnConfirm: false

                        }).then(function (result2) {
                            //Ajax method to delete submissions in form and delete form
                            export_data_ajax_method_delete_form(processing_screen, optionSelected, true, true);

                        });
                    });

        		}
        		else {
                    //Show dialog "Report cannot be deleted but data can be cleared"
                    Swal.fire({
                        title: window.translation.warning,
                        html: window.translation.since_form_is_still_enabled_you_cant_remove + modal_report_info,
                        icon: 'warning',
                        showCancelButton: true,
                        confirmButtonColor: '#ff0000',
                        confirmButtonText: window.translation.social_login_link_continue.toUpperCase(),
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: false


                    }).then(function (result) {
                        Swal.fire({
                            title: window.translation.warning,
                            html: window.translation.all_data_will_be_deleted_sort + window.translation.did_you_download_copy,
                            icon: 'warning',
                            showCancelButton: true,
                            confirmButtonColor: '#ff0000',
                            confirmButtonText: window.translation.clear_data.toUpperCase(),
                            cancelButtonText: window.translation.cancel,
                            closeOnConfirm: false

                        }).then(function (result2) {
                            //Ajax method to delete submissions in form and delete form
                            export_data_ajax_method_delete_form(processing_screen, optionSelected, false, true);

                        });
                    });

        		}
        	}

        	return false;
        });
    }
}

function export_data_form_options(jsonResult) {
    var optionsARS = '';
    var optionsNotARS = '';
    var option = '';
    var cad = '<option value = \"\" >' + window.translation.select_one + ' </option >';

    jsonResult.forEach(function (item) {
    	var type = (item.isARS) ? 'ARS' : 'CMS';

    	option = '<option value = \"' + item.id + '\"' +
					'data-type = "'+ type + '"' +
					'data-createdon = "'+ item.createdOn +'"' +
					'data-updatedon = "'+ item.updatedOn +'"' +
					'data-numberrecords = "'+ item.numberRecords +'"' +
				  	'data-enabled="'+ item.enabled +'">' + 
				  		item.name + 
				  '</option >';
        if (item.isARS) {
            optionsARS += option;
        }
        else {
            optionsNotARS += option;
        }
    });

    if (optionsNotARS) {
        cad += '<optgroup label="' + window.translation.form_blocks + '">' + optionsNotARS + '</optgroup>';
    }
    if (optionsARS) {
        cad += '<optgroup label="ARS">' + optionsARS + '</optgroup>';
    }

    return cad;
}

function export_data_ajax_method_delete_form(processing_screen, formId, deleteForm, deleteData) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    //Ajax method to delete submissions in form and delete form
    $.ajax({
        method: "POST",
        url: urlSite + "admin/DeleteReport",
        data: { formId:formId, deleteForm:deleteForm, deleteData:deleteData },
        beforeSend: function () {
            processing_screen.show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if(jsonResult['status'] == 'ok') {
            Swal.fire({
                title: window.translation.success,
                text: jsonResult['message'],
                icon: "success",
                closeOnConfirm: true
            });

            //Only reload in delete of block
            if(deleteForm) {
                window.location.reload();
            }
            else {
                processing_screen.hide();
                $('#export-form-csv').foundation('close');
            }
        }
        else {
            Swal.fire({
                title: window.translation.error,
                text: jsonResult['message'],
                icon: "error",
                closeOnConfirm: true
            });

            processing_screen.hide();
        }
    });
};
;
$(document).ready(function () {
    window.translation = null;
    //Get all the translation resource
    get_translation_resources_initialization();

    //Initialize variable to validate if translations was downloaded
    /*window.translationsCompleted = {
        completed: false
    }, watcher = function (propertyName, oldValue, newValue) {
        //Initialize methods when are used the translations in the site
    };*/

    //Initialze watcher
    //watch(window.translationsCompleted, 'completed', watcher);
});

function invoke_translation_methods() {
    /*** Public Site ***/
    if (typeof after_translation_resource_load === 'function')
        after_translation_resource_load();

    /*** App Backend ***/
    if (typeof methods_with_resources_backend === 'function')
        methods_with_resources_backend();

    /*** App Form Builder ***/
    if (typeof LoadMethodsWithResources === 'function')
        LoadMethodsWithResources();

    /*** App Volunteer Portal ***/
    if (typeof after_translation_resource_load_volunteer_portal === 'function')
        after_translation_resource_load_volunteer_portal();

    /*** Custom Compliance ***/
    if (typeof cc_methods_after_translation === 'function')
        cc_methods_after_translation();

    /*** Listing CMS Block ***/
    if (typeof after_translation_resource_load_listingcms === 'function')
        after_translation_resource_load_listingcms();

    /*** Search Result Block ***/
    if (typeof after_translation_resource_load_searchresult === 'function')
        after_translation_resource_load_searchresult();

    /*** Featured Opp Block ***/
    if (typeof after_translation_resource_load_featuredOpp === 'function')
        after_translation_resource_load_featuredOpp();

    /*** Donation Block ***/
    if (typeof after_translation_resource_load_donationblock === 'function')
        after_translation_resource_load_donationblock();

    /*** Partner Registration Workflow **/
    if (typeof after_translation_resource_load_partner_registration_events === 'function')
        after_translation_resource_load_partner_registration_events();

    /*** Button Block ***/
    if (typeof after_translation_resource_load_buttonblock === 'function')
        after_translation_resource_load_buttonblock();

    /*** Methods of custom themes **/
    if (typeof load_methods_by_themes === 'function')
        load_methods_by_themes();

    /*** Method for export data feature **/
    if (typeof after_translation_resource_load_export_data === 'function')
        after_translation_resource_load_export_data();

    /*** Parental Consent ***/
    if (typeof after_translation_resource_load_parental_consent === 'function')
        after_translation_resource_load_parental_consent();

    /*** Subsite ***/
    if (typeof after_translation_resource_load_subsite === 'function')
        after_translation_resource_load_subsite();

    /*** Multinstance Tracking ***/
    if (typeof after_translation_resource_load_multinstance_tracking === 'function')
        after_translation_resource_load_multinstance_tracking();

    /*** Advanced CMS (Regions, Layouts...) **/
    if (typeof after_translation_resource_load_advanced_cms === 'function') {
        after_translation_resource_load_advanced_cms();
    }

    if (typeof after_translation_resource_load_forms === 'function')
        after_translation_resource_load_forms();

    if (typeof after_translation_resource_load_utils === 'function')
        after_translation_resource_load_utils();

    if (typeof after_translation_site_metrics_logic === 'function')
        after_translation_site_metrics_logic();

}

function get_translation_resources_initialization() {
    //Get if site is sharingPortalPlus

    if (typeof set_info_sharing_portal_plus_page === 'function')
        set_info_sharing_portal_plus_page();

    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '';
    urlSite = urlSite.substring(0, urlSite.length - 1);
    var currentLang = 'en-US';
    if ($('#CurrentIsoLang').length > 0 && $('#CurrentIsoLang').val()!='') {
        currentLang = $('#CurrentIsoLang').val();
    }
    //Validate if translations exists or the language has been changed
    if (get_translation_resource(urlSite) === false) {
        jQuery.ajax({
            url: urlSite + '/translation/' + window.HOCPS_Version + '/' + currentLang,
            tryCount: 0,
            retryLimit: 3,
            success: function (data) {
                window.translation = data;
                //window.translationsCompleted.completed = true;

                /*** App Translate Initialization ***/
                ajax_for_translation_resource(data, urlSite);
                invoke_translation_methods();
            },
            error: function (xhr, textStatus, errorThrown) {
                console.warn('HOC - Translation Request Error', this.tryCount);

                this.tryCount++;
                if (this.tryCount <= this.retryLimit) {
                    //try again
                    $.ajax(this);
                    return;
                }

                return;
            }
        });
    }
    else {
        invoke_translation_methods();
    }
}

//Validate if translations exists in localStorage, in other case download
function get_translation_resource(urlSite) {
    var suffix_localStorage = (urlSite) ? urlSite.replaceAll('/', '_') : '';
    var t = localStorage.getItem('site_translations' + suffix_localStorage);
    if (t == null) {
        return false;
    }
    t = JSON.parse(t);
    var cl = getCookie("CurrentLanguage");
    if (cl === null || cl === undefined || cl === "") {
        return false;
    }

    var cl_decoded = JSON.parse(window.atob(cl));
    if (Array.isArray(cl_decoded)) {
        cl_decoded = cl_decoded[0];
    }
    if (cl_decoded.Iso != t.language_iso) {
        return false;
    }
    var creation_date_milliseconds = parseInt(t.translation_local_storage_creation_date);
    var diff = new Date() - new Date(creation_date_milliseconds);
    var hours = Math.abs(diff) / 36e5;
    if (hours > 6) {
        localStorage.removeItem('site_translations' + suffix_localStorage);
        return false;
    } else {
        window.translation = t;
        return true;
    }
}

function ajax_for_translation_resource(translations, urlSite) {
    var suffix_localStorage = (urlSite) ? urlSite.replaceAll('/', '_') : '';

    t = translations;
    t['translation_local_storage_creation_date'] = new Date().getTime();
    window.translation = t;
    localStorage.setItem('site_translations' + suffix_localStorage, JSON.stringify(t));
}

function watch(target, prop, handler) {
    var currentStatus = Object.getOwnPropertyDescriptor(target, prop);

    if (currentStatus != null && currentStatus != undefined) {
        if (currentStatus.value != null && currentStatus.value != undefined) {
            if (currentStatus.value === true) {
                return true;
            }
        }
    }
    var oldval = target[prop],
        newval = oldval,
        self = this,
        getter = function () {
            return newval;
        },
        setter = function (val) {
            if (Object.prototype.toString.call(val) === '[object Array]') {
                val = _extendArray(val, handler, self);
            }
            oldval = newval;
            newval = val;
            handler.call(target, prop, oldval, val);
        };
    if (delete target[prop]) { // can't watch constants
        if (Object.defineProperty) { // ECMAScript 5
            Object.defineProperty(target, prop, {
                get: getter,
                set: setter,
                enumerable: false,
                configurable: true
            });
        } else if (Object.prototype.__defineGetter__ && Object.prototype.__defineSetter__) { // legacy
            Object.prototype.__defineGetter__.call(target, prop, getter);
            Object.prototype.__defineSetter__.call(target, prop, setter);
        }
    }
    return this;
};

function unwatch(target, prop) {
    var val = target[prop];
    delete target[prop]; // remove accessors
    target[prop] = val;
    return this;
};

function load_methods_by_themes() {
    // 1 - New York 0101
    if (typeof events_after_translation_vny === 'function') {
        events_after_translation_vny();
    }

    // 2 - Custom Bay Area 0074
    if (typeof fix_login_section_header === 'function') {
        fix_login_section_header();
    }

    // 3 - GGNPC
    if (typeof after_translation_resource_load_ggnpc === 'function') {
        after_translation_resource_load_ggnpc();
    }

    // 4 - LA Works 0025
    if (typeof fix_features_volunteer_opportunities_homepage === 'function') {
        fix_features_volunteer_opportunities_homepage();
    }
};
/*
    Custom events and methods to implement on project
*/

$(document).ready(function () {
    //Events of paginations (There is not method - all moved to files of blocks)
});
;
/*
    Custom events and methods to implement on project
*/

$(document).ready(function () {
    featured_opp_cycle();
    // Apply owl Carousel to listing blocks
    listing_block_cycle();
});

function listing_block_cycle() {
    if ($('.listingcmsblock').length > 0 && $('.slide.listingcmsblock').length > 0) {
        $('.slide.listingcmsblock').each(function () {
            //Only apply if exists items
            if($(this).find('.item').length > 0) {
                var _itemsperPage =  $(this).find('input[name="itemsPerPage"]').val();
                var itemsperPage = typeof _itemsperPage === 'undefined' ||
                                   _itemsperPage === '' ||
                                   _itemsperPage === null ? 1 : (parseInt(_itemsperPage) === 0 ? 1 : parseInt(_itemsperPage));
                $(this).find(".pages").owlCarousel({
                    loop:true,
                    margin:10,
                    nav: true,
                    navText: ["<span class='prev'><</span>","<span class='next'>></span>"],
                    dots:false,
                    mouseDrag:false,
                    responsive:{
                        0:{
                            items:1
                        },
                        480: {
                            items: 2
                        },
                        600:{
                            items: 2
                        },
                        768:{
                            items: 3
                        },
                        1024:{
                            items: itemsperPage,
                            nav: true,
                        }
                    }
                });
            }
        });
    }
}

function listing_block_cycle_after_ajax(listingcmsblock) {
    //Only apply if exists items
    
    if (listingcmsblock.find('.item').length > 0) {
        
        var _autoplay = listingcmsblock.find('input[name="slider-block-disabled-autoplay"]').val() === 'false' ? true : false;
        var _showNavigation = listingcmsblock.find('input[name="slider-block-show-navigation"]').val() === 'false' ? false : true;
        var _effect = listingcmsblock.find('input[name="slider_effect"]').val();
        var _itemsperPage = listingcmsblock.find('input[name="itemsPerPage"]').val();
        var _autoplayTimeout = listingcmsblock.find('input[name="slider_auto_play_timeout"]').val();

        var navigation = ["<span class='prev'><</span>", "<span class='next'>></span>"];
        if (_showNavigation === false) {
            navigation = [];
        }
        var itemsperPage = typeof _itemsperPage === 'undefined' ||
                           _itemsperPage === '' ||
                           _itemsperPage === null ? 1 : (parseInt(_itemsperPage) === 0 ? 1 : parseInt(_itemsperPage));
        listingcmsblock.find(".pages").owlCarousel({
            loop: true,
            autoplay: _autoplay,
            margin:10,
            nav: _showNavigation,
            autoplayTimeout: _autoplayTimeout,
            animateOut: _effect === 'fade' ? 'fadeOut' : false,
            animateIn: _effect === 'fade' ? 'fadeIn' : false,
            navText: navigation,
            dots:false,
            mouseDrag:false,
            responsive:{
                0:{
                    items:1
                },
                480: {
                    items: 2
                },
                600:{
                    items: 2
                },
                768:{
                    items: 3
                },
                1024:{
                    items: itemsperPage,
                    nav: _showNavigation,
                }
            }
        });

       

        
    }
}

function searchresultblock_opportunity_cycle(self, itemPerPage) {
    if (self !== null && self !== undefined && self.hasClass('owl-carousel') == true) {
        self.owlCarousel({
            loop: false,
            margin: 10,
            nav: true,
            navText: ["<span class='prev'><</span>", "<span class='next'>></span>"],
            dots: false,
            mouseDrag: false,
            responsive: {
                0: {
                    items: 1
                },
                480: {
                    items: 2
                },
                600: {
                    items: 2
                },
                768: {
                    items: 3
                },
                1000: {
                    items: 4
                },
                1200: {
                    items: itemPerPage,
                    nav: true,
                }
            }
        });
    }
}

function featured_opp_cycle() {
    if ($('.featureOppContainer').length > 0 && $('.featureOppContainer .owl-carousel').length > 0) {
        $('.featureOppContainer .owl-carousel').each(function () {
            var _itemsperPage = $(this).parent('.featureOppContainer').find('input[name=itemsPerPage]').val();
            var itemsperPage = typeof _itemsperPage === 'undefined' ||
                               _itemsperPage === '' ||
                               _itemsperPage === null ? 1 : (parseInt(_itemsperPage) === 0 ? 1 : parseInt(_itemsperPage));
            $(this).owlCarousel({
                loop: false,
                margin: 10,
                nav: true,
                navText: ["<span class='prev'><</span>", "<span class='next'>></span>"],
                dots: false,
                mouseDrag:false,
                responsive: {
                    0: {
                        items: 1
                    },
                    480: {
                        items: 2
                    },
                    600: {
                        items: 2
                    },
                    768: {
                        items: 3
                    },
                    1000: {
                        items: 4
                    },
                    1200: {
                        items: itemsperPage,
                        nav: true,
                    }
                }
            });
        });
    }
}

function image_slider_block_cycle(self) {

    if ($("body.new-template-system").length > 0) {
        if (self !== null && self !== undefined) {
            var container = self.parents('.container');
            if (container !== undefined && container !== null) {
                if (container.hasClass('fixed-height')) {
                    var height = container.css("height");
                    if (height !== undefined && height !== null && height !== "") {
                        self.find('img').css("height", height);
                        self.find('img').removeAttr("height");
                        container.css("overflow", "hidden");
                    }
                }
            }

        }

    }

    if (self !== null && self !== undefined) {
        var images = self.find('img');
        var _effect = self.find('input[name="effect"]').val();
        var _autoPlay = self.find('input[name="autoPlay"]').val() === 'true' ? true : false;
        var _autoPlayTimeout = self.find('input[name="autoPlayTimeout"]').val();
        var _itemsperPage = self.find('input[name="imagesPerPage"]').val();
        var itemsperPage = typeof _itemsperPage === 'undefined' ||
                           _itemsperPage === '' ||
            _itemsperPage === null ? 1 : (parseInt(_itemsperPage) === 0 ? 1 : parseInt(_itemsperPage));
        var showNavigation = self.find('input[name="showNavigation"]').val() === 'true' ? true : false;
        var autoHeightValue = itemsperPage > 1 ? false : true;
        var numberImages = images.length;
        var loaded_images_count = 0;

        self.find(".slider").addClass("owl-carousel");
        var owlSlider = self.find(".slider").owlCarousel({
            loop: true,
            autoplay: _autoPlay,
            autoplayTimeout: _autoPlayTimeout,
            autoplayHoverPause: true,
            animateOut: _effect === 'fade' ? 'fadeOut' : false,
            animateIn: _effect === 'fade' ? 'fadeIn' : false,
            margin: 10,
            URLhashListener: showNavigation,
            autoHeight: autoHeightValue,
            navText: ["<span class='prev orbit-previous'>◀</span>", "<span class='next orbit-next'>▶</span>"],
            nav: showNavigation,
            dots: false,
            mouseDrag: false,
            responsive: {
                0: {
                    items: 1
                },
                480: {
                    items: itemsperPage > 2 ? 2 : itemsperPage,
                    nav: showNavigation
                },
                600: {
                    items: itemsperPage > 2 ? 2 : itemsperPage,
                    nav: showNavigation
                },
                768: {
                    items: itemsperPage > 3 ? 3 : itemsperPage,
                    nav: showNavigation
                },
                1024: {
                    items: itemsperPage,
                    nav: showNavigation
                }
            },
            onChanged: function (ev) {
                if (typeof onOwlSlideChange !== 'undefined' && jQuery.isFunction(onOwlSlideChange)) { onOwlSlideChange(ev); }
            },
            onRefreshed: function (ev) {
                slider_for_IE(self);
                fix_image_slider_positions(self);

            },
            onResized: function (ev) {
                slider_for_IE(self);
                fix_image_slider_positions(self);

            }
        });

        setTimeout(function () {
            self.find(".slider").trigger('refresh.owl.carousel');
            self.find(".slider").trigger('resize.owl.carousel');

            //Events by theme after sliders is loaded
            // 1 - VNY
            if (typeof events_after_owl_slider_is_loaded_vny === 'function') {
                events_after_owl_slider_is_loaded_vny();
            }

            validateSlides(self);
            
        }, 2000);
        slider_for_IE(self);
        fix_image_slider_positions(self);

        $(window).resize(function () {
            self.find(".slider").trigger('refresh.owl.carousel');
            self.find(".slider").trigger('resize.owl.carousel');
        });
    }
}

function onOwlSlideChange(ev) {
    
    if (ev.type === 'changed') {
        //console.log("Slider Changed");
        let currentSlider = $(ev.target);
        setTimeout(function () {
            validateSlides(currentSlider);
        }, 100);
        //console.log(slides);
    }
}

function validateSlides(currentSlider) {
    let slides = currentSlider.find('.owl-item');
    slides.each(function () {
        let childrens = $(this).find('a, h2, p');
        if (!$(this).hasClass('active')) {
            $(this).attr('tabindex', '-1');
            childrens.each(function () {
                $(this).attr('tabindex', '-1');
            });
        } else {
            $(this).removeAttr('tabindex');
            childrens.each(function () {
                $(this).attr('tabindex', '0');
            });
        }
    });
}

function slider_for_IE(imgSlider) {
    var userAgent, ieReg, ie;
    userAgent = window.navigator.userAgent;
    ieReg = /msie|Trident.*rv[ :]*11\./gi;
    ie = ieReg.test(userAgent);

    if (ie) {
        var selfSlider = imgSlider;
        var slides = imgSlider.find('.content-slide');
        slides.each(function (index, el) {
            var self = $(this);
            var image = self.find('img');
            var imagePlaceholder = self.find('.image_placeholder');
            var imageURL = image.attr('src');
            if (imageURL) {
                imageURL = replaceSpecialCharacters(imageURL);
                imagePlaceholder.css("background-image", "url('" + imageURL + "')");
                image.addClass('compatible-ie');
                imagePlaceholder.addClass('custom-slider-fit');

            }

        });


    }
}

function fix_image_slider_opp_v2() {
    if ($('.opp-slider .image-slider-section img').length > 1) {
        $('.opp-slider .image-slider-section').addClass("owl-carousel");
        $('.opp-slider .image-slider-section').owlCarousel({
            loop: true,
            autoplay: true,
            nav: false,
            dots: true,
            mouseDrag: true,
            items: 1,
            autoplayTimeout: 4000
        });
    }
}


function fix_image_slider_positions(imgSlider) {
    var self = imgSlider;
    var height = self.height();


    var h3Pos = height * 30.0 / 100.0;

    if (height < 251) {
        h3Pos = height * 16.0 / 100.0;
    }

    var titleh = 0;
    if (self.find('.title-in-slider').length > 0) {
        self.find('.title-in-slider').css('top', h3Pos);
        titleh = self.find('.title-in-slider').height();
    }
    var sumh = 0;
    if (self.find('.summary-in-slider').length > 0) {
        self.find('.summary-in-slider').css('top', titleh + 5 + h3Pos);
        sumh = self.find('.summary-in-slider').height();
    }
    if (self.find('.button-section-in-slider').length > 0)
        self.find('.button-section-in-slider').css('top', titleh + 10 + h3Pos + sumh);

}




;
/*
	Custom events and methods to implement
*/
$(document).ready(function () {
    //Events where is not required translation
    if (is_new_cms_active()) return;

    //Set info of sharingPortal plus
    set_info_sharing_portal_plus_page();
});


/*
	Any event or custom logic that needs window.translation must be called from after_translation_resource_load_advanced_cms
*/
function after_translation_resource_load_advanced_cms() {
    if (is_new_cms_active()) return;
    if ($('body').hasClass('partner-portal')) {
        $('ul.manage li.new-template-system-menu').find('.add-region-item').hide();
        $('ul.manage li.new-template-system-menu').find('.draw-region-item').hide();
    }
    if ($("body").hasClass("backend-page") && $("body").hasClass("new-template-system")) {
        events();
        //init_color_picker();
        initiate_dragula_master_template();
        visual_setting_site();
        open_add_regions_preview();
    }
    
}


function events() {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    //Get if site is sharingPortalPlus
    $("body").on("click", "a.create-region", function () {
        $.ajax({
            method: "POST",
            url: urlSite + "AdvancedCMS/CreateRegion",
        }).done(function (data) {
            location.reload(true);
        });
    });//Create region

    $("body").on("click", "a.edit-region", function () {
        var elementReveal = $(this).data('element-reveal');
        var regionId = $(this).data('id');
        var tagRegion = $(this).parents('.regions-row').find('.container');
        $("#verticalHelpText").hide();
        $("#horizontalHelpText").hide();
        $("#contentFullWidthHelpText").hide();
        $("#contentCenterWithHelpText").hide();
        $('#' + elementReveal).find("label.error").remove();
        var maxh = $('body').attr('data-layout-max-height');
        $('#' + elementReveal).find("span.value-max-height").text(maxh);
        var allFine = populateRegionSettingsModal(elementReveal, regionId, tagRegion);
        if (allFine) {
            
            //Reload elements inside modal
            $('#' + elementReveal).foundation();
            initiate_jquery_validate_reveal($('#region-settings-management'), 'region-settings-management');
            $('#' + elementReveal).foundation('open');
        }

        return false;
    });//Edit regions

    $("body").on("click", "a.create-regions", function () {
        var elementReveal = $(this).data('element-reveal');
        validate_add_region(elementReveal);
        $('#' + elementReveal).foundation('open');

        return false;
    });//Create Regions

    $("body").on("click", "a#open-page-layout", function () {
        var objectTable = $('#page-table');

        $.ajax({
            method: "POST",
            url: urlSite + "admin/GetLayouts",
            data: {},
            beforeSend: function () {
                $('#page-layout-management .processing_screen').show();
                datatable_destory_by_id('page-table');
                $('#page-table tbody').empty();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            //Assing values
            if (jsonResult.length > 0) {
                $("#page-layout-management table tbody").empty();
                for (var i = 0; i < jsonResult.length; i++) {
                    var info_table = '<tr><td class="parent"><a data-element-reveal="layout-form-modal" data-layout-id=' + jsonResult[i].ID + ' class="blue-key">' + jsonResult[i].Name + '</a></td><td>' + jsonResult[i].Enabled + '</td><td>' + jsonResult[i].IsDefault + '</td><td>' + jsonResult[i].LayoutDisplay + '</td><td>' + jsonResult[i].Type + '</td><td><a data-element-reveal="regions-list-modal" data-layout-id="'+jsonResult[i].ID+'" data-layout-name="'+jsonResult[i].Name+'" class="blue-key">' + jsonResult[i].Regions + ' Regions</a></td><td> ' + jsonResult[i].IsSystemLayout + '</td><td><a href="/layout-preview/' + jsonResult[i].ID + '">Preview</a></td></tr>';
                    $("#page-layout-management table tbody").append(info_table);
                }
                datatable_initialize_notAjax_with_params(objectTable, null, null, false, true, false);
            } else {
                var empty_page = '<tr class="odd"><td valign="top" colspan="0" class="dataTables_empty">Nothing records found - sorry</td></tr>';
                $("#page-layout-management table tbody").append(empty_page);
            }

            $('#page-layout-backend').foundation('open');
            $('#page-layout-management .processing_screen').hide();
        });

        return false;
    });//Open listing of layouts

    $("body").on("click", "a[data-element-reveal='layout-form-modal']", function () {
        var layoutId = $(this).data("layout-id");
        $("#page-layout-backend").hide();
        var elementReveal = $(this).data('element-reveal');
        $("#centerWidthContentHelpText").hide();
        $("#expandedWidthContentHelpText").hide();

        //Reload elements inside modal
        $('#layout-form-modal').foundation();

        //Load jQueryValidate
        initiate_jquery_validate_reveal($('#layout-form-modal-management'), 'layout-form-modal-management');

        var allFine = populateLayoutSettingsModal(elementReveal, layoutId);
        if (allFine) {
            validate_delete_layout();
            helpTextBehavior('#centerWidthContentHelpButton', '#expandedWidthContentHelpButton', '#centerWidthContentHelpText', '#expandedWidthContentHelpText');
            $("#" + elementReveal).find('input.default-color-picker').attr('style', "");
            createColorPickerField($("#" + elementReveal).find('input.default-color-picker'), null);
            //add the color picker

            var select = $('#' + elementReveal).find('select[name="layout.type"]');
            var pageSection = $('#' + elementReveal).find('fieldset.page-selection-section');
            if (select !== undefined && select !== null && pageSection !== undefined && pageSection !== null) {
                select.on('change', function () {
                    var value = $(this).val();
                    if (value === "Tablet" || value == "Mobile") {
                        pageSection.hide();
                    } else {
                        pageSection.show();
                    }
                });
            }

            $('#' + elementReveal).foundation('open');
        }
        $(document).on('closed.zf.reveal', '#' + elementReveal, function () {
            $("#page-layout-backend").show();
        });

        $("body").on("click", "button[name='addPages']", function () {
            var $options = $("#availablePages > option:selected");
            $('#selectedPages').append($options.clone());
            var option_all = $("select#selectedPages option").map(function () {
                return $(this).text();
            }).get().join(',');
            $("#selectedPagesText").val(option_all);
            $options.remove();
        });

        $("body").on("click", "button[name='removePages']", function () {
            var $options = $("#selectedPages > option:selected");
            $('#availablePages').append($options.clone());
            $options.remove();
            var option_all = $("select#selectedPages option").map(function () {
                return $(this).text();
            }).get().join(',');
            $("#selectedPagesText").val(option_all);
        });

        //Event to repopulate field 'Layout' when dropdown type of layout is changed
        $('body').on('change', '#layout-form-modal select[name="layout.type"]', function() {
            var layoutType = $(this).val();
            var parentModal = $(this).parents('.reveal').first();

            if(layoutType === 'Subsite') { //Subsite homepage (Hide page layout assignment)
                parentModal.find('.page-selection-section').hide();
            }
            else { //Subsite Internal (Reload Available pages and Selected Pages)
                var noIncludePageArray = [];
                var includeAllPages = (layoutType === 'SubsiteInternal') ? true : false;
                var noIncludePage = '';

                //Populate pages selected
                if($('#selectedPages option').length > 0) {
                    $('#selectedPages option').each(function() {
                        var valOption = $(this).val();
                        noIncludePageArray.push(valOption);
                    });
                }

                noIncludePage = noIncludePageArray.join(',');
                parentModal.find('.page-selection-section').show();

                //Ajax query to get all available pages and remove the selected pages
                $.ajax({
                    method: "POST",
                    url: urlSite + "AdvancedCMS/GetPages",
                    data: { noIncludePages: noIncludePage, includeAllPages: includeAllPages },
                    beforeSend: function () {
                        $('#layout-form-modal').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if(jsonResult.status === '1') {
                        $('#' + elementReveal).find('select[name="availablePages"] option').remove();
                        if (jsonResult.pages !== null) {
                            var availablePages = jsonResult.pages.map(function (el) {
                                return el.url;
                            });

                            availablePages.forEach(function (el) {
                                $('#layout-form-modal').find('select[name="availablePages"]').append("<option value='" + el + "' title='" + el + "'>" + el + "</option>")
                            });
                        }
                    }                    

                    //Hide processing screen
                    $('#layout-form-modal').find('.processing_screen').hide();
                });
            }
        });
    });//Open Layout modal



    $("body").on("click", "a[data-element-reveal='regions-list-modal']", function () {
            var layoutId = $(this).data("layout-id");
            var layoutname = $(this).data("layout-name");
            var elementReveal = $(this).data('element-reveal');
            $('#regions-list-modal').foundation();
            $.ajax({
                method: "POST",
                url: urlSite + "AdvancedCMS/RegionsList",
                data: { id: layoutId },
                beforeSend: function () {
                    $('#regions-list-modal').find('.processing_screen').show();
                }
            }).done(function (data) {
                var html_items = '';
                if (data.length > 0) {
                    for (var i = 0; i < data.length; i++) {
                        html_items+='<div class="item" data-order="'+data[i].Weight+'" data-id="'+data[i].ID+'"><a data-element-reveal="region-edit-backend" title="Region Settings" class="edit-region" data-id="'+data[i].ID+'" role="menuitem" aria-expanded="false"><i class="fa fa-wrench" aria-hidden="true"></i> '+data[i].Name+'</a></div>';
                    }
                }
                $('#regions-list-modal').find('.items').html(html_items);
                $('#regions-list-modal').find('span.layoutu-name').text(layoutname);
            });
            $('#' + elementReveal).foundation('open');
            $('#page-layout-backend').foundation('close');
    });//Open List Regions Modal

    $("body").on("click", "#regions-list-modal .edit-region", function () {
        $('#regions-list-modal').foundation('close');
    });
    
    $("body").on("click", "#regions-list-modal .close-button", function () {
        $('#page-layout-backend').foundation('open');
    });


    $("body").on("click", "a.split-region", function () {
        var elementReveal = $(this).data('element-reveal');
        var regionId = $(this).data('region-id');
        var regionHeight = $(this).data('region-height');
        if (regionHeight === 0) {
            $('#' + elementReveal).find("#twoVerticals").attr('disabled', true);
            $('#' + elementReveal).find("#threeVerticals").attr('disabled', true);
            $('#' + elementReveal).find("span.error").show();
        } else {
            $('#' + elementReveal).find("#twoVerticals").attr('disabled', false);
            $('#' + elementReveal).find("#threeVerticals").attr('disabled', false);
            $('#' + elementReveal).find("span.error").hide();
        }
        $('#' + elementReveal).find('input[name="regionID"]').val(regionId);
        if ($('body').hasClass('mobile') || $('body').hasClass('tablet')) {
            $('#' + elementReveal).find('.only-for-desktop').hide();
            $('#' + elementReveal).find('.item-to-display-in-desktop').removeClass('medium-3');
            $('#' + elementReveal).find('.item-to-display-in-desktop').addClass('medium-6');
        }
        else {
            $('#' + elementReveal).find('.only-for-desktop').show();
            $('#' + elementReveal).find('.item-to-display-in-desktop').addClass('medium-6');
            $('#' + elementReveal).find('.item-to-display-in-desktop').removeClass('medium-3');
        }

        $('#' + elementReveal).foundation('open');

        return false;
    });//Split Region

    $("body").on("click", "a.region-block-setting", function () {
        var heighValue = $(this).data('region-height');
        var maxHeight = $(this).data('max-height');
        var currentHeight = maxHeight;
        if (heighValue > 0)
            currentHeight = heighValue;
        var elementReveal = $(this).data('element-reveal');
        var selector = '#' + elementReveal;
        var regionId = $(this).data('region-id');
        $(selector).find('input[name="regionID"]').val(regionId);
        $.ajax({
            method: 'GET',
            url: urlSite + 'AdvancedCMS/GetRegionBlockInformation/' + regionId,
            beforeSend: function () {
                $(selector).find('.processing_screen').show();
            }

        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            $(selector).find(".section-fields").text("");
            if (jsonResult.status == "ok") {
                if (jsonResult.message == "empty") {
                    $(selector).find(".section-fields").append("<p>No Blocks assigned</p>");
                } else {
                    blockData = JSON.parse(jsonResult.data);
                    var found = false;
                    var numberBlocks = (blockData) ? blockData.length : 0;
                    var addPositionFeature = (numberBlocks === 1) ? true : ($("body").hasClass('tablet'))? true : ($("body").hasClass('mobile'))? true : false;
                    blockData.forEach(function (element) {
                        found = true;
                        var itemBlock = addFieldsForRegionSettings(element.BlockName, element.WfieldName, element.HfieldName, element.AfieldName, element.Width, element.Height, element.HorizontalAlignment, element.BlockIdFieldName, element.BlockID, currentHeight, addPositionFeature, heighValue, element.CanDisplayVerticalAlign, element.VfieldName, element.VerticalAlignment, element.PrefixPadding, element.PaddingTop, element.PaddingBottom, element.PaddingLeft, element.PaddingRight);
                        $(selector).find(".section-fields").append(itemBlock);
                    });

                    if (!found) {
                        $(selector).find('.region-block-setting-save').hide();
                    } else {
                        $(selector).find('.region-block-setting-save').show();
                    }
                }
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: data.message,
                    confirmButtonText: "Ok"
                });
            }
            $(selector).find('.processing_screen').hide();
        });
        $(selector).find('.region-block-setting-save').on('click', function () {
            $(selector).find('.processing_screen').show();
        });
        $(selector).foundation('open');

        return false;
    });//Open Region Block Settings modal

    $("body").on('click', 'a[data-element-reveal="image-resource-config"]', function () {
        var elementReveal = $(this).data('element-reveal');

        $.ajax({
            method: "GET",
            url: urlSite +"AdvancedCMS/GetSiteImagesResource",
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            if (jsonResult != null) {

                if (jsonResult["siteImages"] !== undefined) {
                    jsonResult.siteImages.forEach(function (item) {
                        if (item.ResourceType == 0) {
                            $("#" + elementReveal).find(".row-favicon div.ezdz-dropzone > div").html('<img src="' + item.Url + '" alt="loading" style="display: inline-block; width: auto; height: auto; max-height: 200px;">');
                            $("#" + elementReveal).find("input[name='favicon_siteImageID']").val(item.ID);
                        }
                        if (item.ResourceType == 1) {
                            $("#" + elementReveal).find(".row-logo div.ezdz-dropzone > div").html('<img src="' + item.Url + '" alt="loading" style="display: inline-block; width: auto; height: 100%; max-height: 200px;">');
                            $("#" + elementReveal).find("input[name='logo_siteImageID']").val(item.ID);
                        }
                        if (item.ResourceType == 2) {
                            $("#" + elementReveal).find(".row-logo-contactless div.ezdz-dropzone > div").html('<img src="' + item.Url + '" alt="loading" style="display: inline-block; width: auto; height: 100%; max-height: 200px;">');
                            $("#" + elementReveal).find("input[name='logo-contactless_siteImageID']").val(item.ID);
                        }
                    });
                }

                if (jsonResult["internationalizationItems"] !== undefined) {
                    if (jsonResult.internationalizationItems.titleLocation != undefined) {
                        $("#" + elementReveal).find("input[name='location-title-contactless']").val(jsonResult.internationalizationItems.titleLocation);
                    }
                    if (jsonResult.internationalizationItems.titleOccurrence != undefined) {
                        $("#" + elementReveal).find("input[name='oc-title-contactless']").val(jsonResult.internationalizationItems.titleOccurrence);
                    }
                    if (jsonResult.internationalizationItems.titleOpportunity != undefined) {
                        $("#" + elementReveal).find("input[name='vo-title-contactless']").val(jsonResult.internationalizationItems.titleOpportunity);
                    }
                }

                //Populate title
                $("#" + elementReveal).find("input[name='title']").val(jsonResult['siteName']);
                $('#' + elementReveal).find('.processing_screen').hide();

            }

            if ($('input.image-resources-save').length > 0) {
                $('input.image-resources-save').on('click', function (e) {

                    Swal.fire({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_setting_confirm_save,
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true

                    }).then(function (result) {
                        if (result.isConfirmed) {
                            $('#' + elementReveal).find('.processing_screen').show();
                            $('#image-resource-form').submit();
                        } else {
                            e.preventDefault();
                            return false;

                        }
                    });

                    e.preventDefault();
                    return false;

                });
            }
        });

        $('#' + elementReveal).foundation('open');

        return false;
    });//Open Image Resources Config modal



}

function addFieldsForRegionSettings(blockName, nameWField, nameHfield, nameAfield, valueW,
    valueH, valueA, blockIdField, valuebID, maxHeight, addFieldsForRegionSettings, heightRegion,
    CanDisplayVerticalAlign, VfieldName, valueVA, paddingPrefix, valuePT, valuePB, valuePL, valuePR) {
    var selectedLeft = (valueA==0)? "selected":"";
    var selectedCenter = (valueA==1)? "selected":"";
    var selectedRight = (valueA == 2) ? "selected" : "";
    var selectedVTop = (valueVA == 0) ? "selected" : "";
    var selectedVCenter = (valueVA == 1) ? "selected" : "";
    var selectedVBottom = (valueVA == 2) ? "selected" : "";
    var classOptions = "medium-4";
    if (addFieldsForRegionSettings && CanDisplayVerticalAlign)
        classOptions = "medium-2";
    else if (addFieldsForRegionSettings || CanDisplayVerticalAlign)
        classOptions = "medium-3";

    var htmlTag = '<fieldset>';
    var heightTag = '';
    if (heightRegion == 0)
        heightTag = 'disabled';
    htmlTag += '<legend>' + blockName + '</legend>';
    var widthtext = window.translation.width;
    var heighttext = window.translation.height;
    htmlTag += '<input type="hidden" name="' + blockIdField + '" value="' + valuebID + '"/>';
    htmlTag += '<div class="row">';
    htmlTag +=  '<div class="columns small-12 ' + classOptions + '">'; //Change to medium-4
    htmlTag +=      '<div class="columns small-12 medium-12">';
    htmlTag +=          '<label for="item-field">' + widthtext + '</label>';
    htmlTag +=      '</div>';
    htmlTag +=      '<div class="columns small-12 medium-12">';
    htmlTag +=          '<div class="input-group">'
    htmlTag +=              '<input class="input-group-field" min="0" max="100" type="number" placeholder="' + widthtext + '" id="' + nameWField + '" name="' + nameWField + '" value="' + valueW + '"/>';
    htmlTag +=              '<span class="input-group-label">%</span>';
    htmlTag +=          '</div>';
    htmlTag +=      '</div>';
    htmlTag +=      '<div class="small-12 medium-12 columns"><p class="help-text">This % is based to the width of the Region</p></div>';
    htmlTag +=  '</div>';
    htmlTag +=  '<div class="columns small-12 ' + classOptions + '">'; //Change to medium-4
    htmlTag +=      '<div class="columns small-12 medium-12">';
    htmlTag +=          '<label for="item-field">' + heighttext + '</label>';
    htmlTag +=      '</div>';
    htmlTag +=      '<div class="columns small-12 medium-12">';
    htmlTag +=          '<div class="input-group">'
    htmlTag += '<input class="input-group-field" min="0" max="100" type="number" placeholder="' + heighttext + '" id="' + nameHfield + '" name="' + nameHfield + '" value="' + valueH + '" ' + heightTag + '/>';
    htmlTag +=              '<span class="input-group-label">%</span>';
    htmlTag +=          '</div>';
    htmlTag +=      '</div>';
    htmlTag +=      '<div class="small-12 medium-12 columns"><p class="help-text">This % is based to maximum ' + maxHeight + 'px</p></div>';
    htmlTag += '</div>';


    //paddings
    htmlTag += '<div class="columns small-12 medium-3">'; //Change to medium-4
    htmlTag += '<div class="columns small-12 medium-12">';
    htmlTag += '<label for="item-field">Padding (%) (Top-Bottom-Left-Right)</label>';
    htmlTag += '</div>';
    htmlTag += '<div class="columns small-12 medium-12 padding-section">';

    htmlTag += '<div class="columns small-12 medium-3 padding-field-section">';
    htmlTag += '<div class="input-group">';
    htmlTag += '<input class="input-group-field" min="0" max="100" type="number" placeholder="' + heighttext + '" id="' + paddingPrefix + '-top" name="' + paddingPrefix +'-top" value="' + valuePT + '" />';
    htmlTag += '</div>';
    htmlTag += '</div>';

    htmlTag += '<div class="columns small-12 medium-3 padding-field-section">';
    htmlTag += '<div class="input-group">';
    htmlTag += '<input class="input-group-field" min="0" max="100" type="number" placeholder="' + heighttext + '" id="' + paddingPrefix + '-bottom" name="' + paddingPrefix + '-bottom" value="' + valuePB + '"/>';
    htmlTag += '</div>';
    htmlTag += '</div>';

    htmlTag += '<div class="columns small-12 medium-3 padding-field-section">';
    htmlTag += '<div class="input-group">';
    htmlTag += '<input class="input-group-field" min="0" max="100" type="number" placeholder="' + heighttext + '" id="' + paddingPrefix + '-left" name="' + paddingPrefix + '-left" value="' + valuePL + '"/>';
    htmlTag += '</div>';
    htmlTag += '</div>';

    htmlTag += '<div class="columns small-12 medium-3 padding-field-section">';
    htmlTag += '<div class="input-group">';
    htmlTag += '<input class="input-group-field" min="0" max="100" type="number" placeholder="' + heighttext + '" id="' + paddingPrefix + '-right" name="' + paddingPrefix + '-right" value="' + valuePR + '"/>';
    htmlTag += '</div>';
    htmlTag += '</div>';

    htmlTag += '</div>';
    htmlTag += '<div class="small-12 medium-12 columns"><p class="help-text">This % is based to maximum of width and height</p></div>';
    htmlTag += '</div>';


    

    if(addFieldsForRegionSettings) {
        htmlTag +=  '<div class="columns small-12 ' + classOptions + '">';
        htmlTag +=      '<div class="columns small-12 medium-12">';
        htmlTag +=          '<label for="item-field">Horizontal Alignment</label>';
        htmlTag +=      '</div>';
        htmlTag +=      '<div class="columns small-12 medium-12">';
        htmlTag +=          '<div class="input-group">';
        htmlTag +=              '<select name="' + nameAfield + '">';
        htmlTag +=                  '<option value="0" '+selectedLeft+'>Left</option>';
        htmlTag +=                  '<option value="1" '+selectedCenter+'>Center</option>';
        htmlTag +=                  '<option value="2" '+selectedRight+'>Right</option>';
        htmlTag +=              '</select>';
        htmlTag +=              '<p class="help-text">This feature will works only when the width value is different of 0.</p>';
        htmlTag +=          '</div>';
        htmlTag +=      '</div>';
        htmlTag +=  '</div>';
    }

    if (CanDisplayVerticalAlign) {
        htmlTag += '<div class="columns small-12 ' + classOptions + '">';
        htmlTag += '<div class="columns small-12 medium-12">';
        htmlTag += '<label for="item-field">Vertical Alignment</label>';
        htmlTag += '</div>';
        htmlTag += '<div class="columns small-12 medium-12">';
        htmlTag += '<div class="input-group">';
        htmlTag += '<select name="' + VfieldName + '">';
        htmlTag += '<option value="0" ' + selectedVTop + '>Top</option>';
        htmlTag += '<option value="1" ' + selectedVCenter + '>Center</option>';
        htmlTag += '<option value="2" ' + selectedVBottom + '>Bottom</option>';
        htmlTag += '</select>';
        htmlTag += '</div>';
        htmlTag += '</div>';
        htmlTag += '</div>';
    }

    htmlTag += '</div>';
    htmlTag += '</fieldset>';

    return htmlTag;
}

function helpTextBehavior(firstID, secondID, firstText, secondText) {
    $("body").on("click", firstID, function () {
        $(secondText).hide();
        $(firstText).toggle();
    });
    $("body").on("click", secondID, function () {
        $(firstText).hide();
        $(secondText).toggle();
    });
}

function helpTextSingleBehavior(button, text) {
    $(text).hide();
    $("body").on("click", button, function () {
        $(text).toggle();
    });
}

function populateRegionSettingsModal(elementReveal, regionId, tagRegion) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var allFine = true;

    $.ajax({
        method: "GET",
        url: urlSite + 'AdvancedCMS/GetRegionSettingsData/' + regionId,
        beforeSend: function () {
            $('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);
        if (jsonResult.status === "200") {
            $('#' + elementReveal).find('input[name="region.title_color"]').val(jsonResult.titleColor);
            $('#' + elementReveal).find('input[name="region.text_color"]').val(jsonResult.textColor);
            $('#' + elementReveal).find('input[name="region.link_color"]').val(jsonResult.linkColor);
            $('#' + elementReveal).find('input[name="region.link_hover_color"]').val(jsonResult.linkHoverColor);
            $('#' + elementReveal).find('input[name="region.form_label_color"]').val(jsonResult.formLabelColor);
            $('#' + elementReveal).find('input[name="RegionID"]').val(jsonResult.id);
            $('#' + elementReveal).find('input[name="region.name"]').val(jsonResult.name);
            $('#' + elementReveal).find('input[name="region.height"]').val(jsonResult.height);
            $('#' + elementReveal).find('input[name="region.width"]').val(jsonResult.width);
            $('#' + elementReveal).find('input[name="region.weight"]').val(jsonResult.weight);
            $('#' + elementReveal).find('input[name="region.IsLastRegionInRow"]').prop('checked', jsonResult.isLastRegionInRow);
            $('#' + elementReveal).find('input[name="region.FlexJustifyContent"]').prop('checked', jsonResult.flexJustifyContent);

            if (jsonResult.isFixedRegion == true) {
                $('#' + elementReveal).find('input[name="region.special_setting"][value="fixed"]').prop('checked', true);
            } else if (jsonResult.isFloatableRegion == true) {
                $('#' + elementReveal).find('input[name="region.special_setting"][value="floatable"]').prop('checked', true);
            } else {
                $('#' + elementReveal).find('input[name="region.special_setting"][value="none"]').prop('checked', true);
            }

            $('#' + elementReveal).find('input[name="region.percentage_floatation"]').val(jsonResult.percentageFloatable);
            $('#' + elementReveal).find('input[name="region.background_color"]').val(jsonResult.backgroundColor);
            $('#' + elementReveal).find('.layout-name').text(jsonResult.layoutName + " -");
            
            $('#' + elementReveal).find('input.default-color-picker').css("background", "rgb(238, 238, 238)");
            createColorPickerField($('#' + elementReveal).find('input[name="region.background_color"]'), null);
            createColorPickerField($('#' + elementReveal).find('input[name="region.text_color"]'), null);
            createColorPickerField($('#' + elementReveal).find('input[name="region.title_color"]'), null);
            createColorPickerField($('#' + elementReveal).find('input[name="region.link_color"]'), null);
            createColorPickerField($('#' + elementReveal).find('input[name="region.link_hover_color"]'), null);
            createColorPickerField($('#' + elementReveal).find('input[name="region.form_label_color"]'), null);
            if (jsonResult.stackingElements === "HORIZONTAL") {
                $('#regionHorizontal').prop('checked', true);
            } else if (jsonResult.stackingElements === "VERTICAL") {
                $('#regionVertical').prop('checked', true);
            }

            if (jsonResult.multimediaURL != null) {
                $('#' + elementReveal).find('input[name="region.multimediaURL"]').val(jsonResult.multimediaURL);
            } else {
                $('#' + elementReveal).find('input[name="region.multimediaURL"]').val("");
            }

            if (jsonResult.multimediaType == "NONE") {
                $('#regionNone').prop('checked', true);
                $('#' + elementReveal).find('input[name="region.multimediaURL"]').val("");
                $('#region-edit-backend').find('.multimedia_url').addClass('hide-custom');
                $('#background_color').removeClass('hide-custom');
            } else if (jsonResult.multimediaType == "IMAGE") {
                $('#regionImage').prop('checked', true);
                $('#background_color').addClass('hide-custom');
                $('.multimedia_url').removeClass("hide-custom");
                $('input[name="region.background_color"]').addClass('hide-custom');
                $('for[name="region.background_color"]').addClass('hide-custom');
                $('#' + elementReveal).find('input[name="region.background_color"]').prop('disabled', true);
                $('#' + elementReveal).find('input[name="region.background_color"]').val("");
                $('#' + elementReveal).find('input[name="region.background_color"]').css("background-color", "");
                $('#' + elementReveal).find('input[name="region.background_color"]').css("color", "");
            } else if (jsonResult.multimediaType == "VIDEO") {
                $('#regionVideo').prop('checked', true);
                $('#background_color').addClass('hide-custom');
                $('.multimedia_url').removeClass("hide-custom");
                $('#' + elementReveal).find('input[name="region.background_color"]').prop('disabled', true);
                $('#' + elementReveal).find('input[name="region.background_color"]').val("");
                $('#' + elementReveal).find('input[name="region.background_color"]').css("background-color", "");
                $('#' + elementReveal).find('input[name="region.background_color"]').css("color", "");
            }


            if (jsonResult.contentDisplay === "FULL_WIDTH_CONTENT") {
                $('#contentFullWidth').prop('checked', true);
            } else if (jsonResult.contentDisplay === "CENTER_WIDTH_CONTENT") {
                $('#contentCenterWith').prop('checked', true);
            }

            //Floatable option
            if(jsonResult.isFloatableRegion) {
                $('.percentage_floatable').removeClass('hide-custom');
            }
            else {
                $('.percentage_floatable').addClass('hide-custom');
            }

            $("body").on('change', '#region-edit-backend input#isFloatableRegion', function () {
                var isChecked = $(this).prop('checked');
                if (isChecked) {
                    $('#region-edit-backend').find('.percentage_floatable').removeClass('hide-custom');
                    $('#region-edit-backend').find('.multimedia-settings').addClass('hide-custom');
                    $('#' + elementReveal).find('input[name="region.multimediaURL"]').val("");
                    $('#' + elementReveal).find('input[id="regionNone"]').prop('checked', true);
                }
                else {
                    $('#region-edit-backend').find('.percentage_floatable').addClass('hide-custom');
                }
            }); //Hide/Show Percentage Floatable to region edit modal

            $("body").on('change', '#region-edit-backend input#isFixedRegion', function () {
                var isChecked = $(this).prop('checked');
                if (isChecked) {
                    $('#region-edit-backend').find('.percentage_floatable').addClass('hide-custom');
                    $('#region-edit-backend').find('.multimedia-settings').addClass('hide-custom');
                    $('#' + elementReveal).find('input[name="region.multimediaURL"]').val("");
                    $('#' + elementReveal).find('input[id="regionNone"]').prop('checked', true);
                }
                
            });

            $("body").on('change', '#region-edit-backend input#isNoneOption', function () {
                var isChecked = $(this).prop('checked');
                if (isChecked) {
                    $('#region-edit-backend').find('.percentage_floatable').addClass('hide-custom');
                    $('#region-edit-backend').find('.multimedia-settings').removeClass('hide-custom');
                    
                }

            });

            //Multimedia Setting
            $("body").on('change', '#region-edit-backend input#regionNone', function () {
                var isChecked = $(this).prop('checked');
                if (isChecked) {
                    $('#region-edit-backend').find('.multimedia_url').addClass('hide-custom');
                    $('#' + elementReveal).find('input[name="region.multimediaURL"]').val("");
                    $('#' + elementReveal).find('input[name="region.background_color"]').prop('disabled', false);
                    $('#background_color').removeClass('hide-custom');
                }
            }); //Hide/Show multimedia URL none to region edit modal

            $("body").on('change', '#region-edit-backend input#regionImage', function () {
                var isChecked = $(this).prop('checked');
                if (isChecked) {
                    $('#region-edit-backend').find('.multimedia_url').removeClass('hide-custom');
                    $('#' + elementReveal).find('input[name="region.multimediaURL"]').val("");
                    $('#background_color').addClass('hide-custom');
                    $('#' + elementReveal).find('input[name="region.background_color"]').prop('disabled', true);
                    $('#' + elementReveal).find('input[name="region.background_color"]').val("");
                    $('#' + elementReveal).find('input[name="region.background_color"]').css("background-color", "");
                    $('#' + elementReveal).find('input[name="region.background_color"]').css("color", "");
                }
                else {
                    $('#region-edit-backend').find('.multimedia_url').addClass('hide-custom');
                }
            }); //Hide/Show multimedia URL image to region edit modal

            $("body").on('change', '#region-edit-backend input#regionVideo', function () {
                var isChecked = $(this).prop('checked');
                if (isChecked) {
                    $('#region-edit-backend').find('.multimedia_url').removeClass('hide-custom');
                    $('#' + elementReveal).find('input[name="region.background_color"]').prop('disabled', true);
                    $('#' + elementReveal).find('input[name="region.background_color"]').val("");
                    $('#' + elementReveal).find('input[name="region.background_color"]').css("background-color", "");
                    $('#' + elementReveal).find('input[name="region.background_color"]').css("color", "");
                    $('#background_color').addClass('hide-custom');
                }
                else {
                    $('#region-edit-backend').find('.multimedia_url').addClass('hide-custom');
                }
            }); //Hide/Show multimedia URL video to region edit modal

           


            //validate setting for height
            if (jsonResult.height == '0') {
                //auto
                $('.height-fields-value').addClass('hide');
                $('select#height-type').val('0');
                $('input#previous-value').val('');
            } else {
                $('.height-fields-value').removeClass('hide');
                $('select#height-type').val('1');
                $('input#previous-value').val(jsonResult.height);
            }

            //validate the change of select
            $('select#height-type').on('change', function () {
                var value = $(this).val();
                if (value == '0') {
                    $('.height-fields-value').addClass('hide');
                    var currentValue = $('#' + elementReveal).find('input[name="region.height"]').val();
                    $('#' + elementReveal).find('input[name="region.height"]').val('0');
                    $('input#previous-value').val(currentValue);
                } else if (value == '1') {
                    var currentValue = $('input#previous-value').val();
                    $('#' + elementReveal).find('input[name="region.height"]').val(currentValue);
                    $('.height-fields-value').removeClass('hide');
                }
            });

            validate_delete_region(tagRegion);
        } else {
            Swal.fire({
                title: "",
                icon: "error",
                text: jsonResult.message,
                confirmButtonText: "Ok"
            });
            allFine = false;
        }
        $('.processing_screen').hide();
    });

    return allFine;
}

function initiate_dragula_master_template() {
    if ($("body.backend-page.new-template-system").length > 0 && $("body.backend-page.new-template-system.special-internal-layout").length === 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        var currentPath = window.location.pathname;
        var block_id = '';
        var block_weight = '';
        var source_region_id = '';
        var target_region_id = '';
        var containers = [];
        var specialContainers = [];

        $(".region-selectable").each(function () {
            containers.push($(this)[0]);
        });
        var drake = dragula({
            containers: containers,
            revertOnSpill: true,
            direction: function (el, target, source, sibling) {
                return $(target).data('stack-content');
            },
            moves: function(el, container, handle){
                return handle.classList.contains('move');
            },
            accepts: function (el, target, source, sibling) {
                var valid = false;
                var status = $(target).attr("data-status-region");
                if ($(target).hasClass('region-selectable') && status !== "full") {
                    valid = true;
                }
                return valid;
            }
        }).on('drag', function (el) {
            block_id = $(el).find('.blockContainer').data('block-id');
            block_weight = $(el).find('.blockContainer').data('block-weight');
            source_region_id = $(el).parents(".region-selectable").data('region-id');
        }).on('drop', function (el) {
            target_region_id = $(el).parents(".region-selectable").data('region-id');
            var data = {};
            data['block_id'] = block_id;
            var newOrderSource = "";
            var newOrderIDSource = "";
            var newOrderTarget = "";
            var newOrderIDTarget = "";
            var layoutID = $("body").attr("data-layout-info");
            if (source_region_id === target_region_id) {
                update_order_in_region(target_region_id);
            } else {
                update_order_in_region(source_region_id);
                update_order_in_region(target_region_id);
            }
            var selector = ".region-container-" + target_region_id + " .container-block-section";
            var orders = [];
            var ordersID = [];
            $(selector).each(function () {
                var order = $(this).attr("data-new-order-value");
                if (order !== undefined && order !== null) 
                {
                    var id = $(this).attr("id");
                    ordersID.push(id);
                    orders.push(order);
                }
            });
            newOrderIDTarget = ordersID.join(",");
            newOrderTarget = orders.join(",");

            if (target_region_id !== source_region_id) {
                selector = ".region-container-" + source_region_id + " .container-block-section";
                orders = [];
                ordersID = [];
                $(selector).each(function () {
                    var order = $(this).attr("data-new-order-value");
                    if (order !== undefined && order !== null) {
                        var id = $(this).attr("id");
                        ordersID.push(id);
                        orders.push(order);
                    }
                });
                newOrderIDSource = ordersID.join(",");
                newOrderSource = orders.join(",");
            }

            data['block_weight'] = block_weight;
            data['order_source'] = newOrderSource;
            data['order_target'] = newOrderTarget;
            data['order_source_id'] = newOrderIDSource;
            data['order_target_id'] = newOrderIDTarget;
            data['source_region_id'] = source_region_id;
            data['target_region_id'] = target_region_id;
            data['layout_id'] = layoutID;
            data['current_path'] = currentPath;
            //Service to update
            $.ajax({
                method: "POST",
                url: urlSite + "AdvancedCMS/UpdateBlock",
                data: data,
                beforeSend: function () {
                    $('.loading-drag-drop').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                if (jsonResult.status !== 'error') {
                    if (jsonResult.region_source !== "") {
                        var regionSource = JSON.parse(jsonResult.region_source);
                        update_class_after_drag_and_drop(regionSource);
                    }
                    if (jsonResult.region_target !== "") {
                        var regionTarget = JSON.parse(jsonResult.region_target);
                        update_class_after_drag_and_drop(regionTarget);
                    }
                    var selector = "#container-block-" + block_id + " .image-slider-block";
                    if ($(selector).length > 0) {
                        image_slider_block_cycle();
                    }
                    selector = "#container-block-" + block_id + " .featuredopportunityblock";
                    if ($(selector).length > 0) {
                        //reset the cycle
                        $(selector).each(function () {
                            var self = $(this);
                            var blockId = self.attr("data-block-id")
                            var groupItems = self.find(".list-group").first();
                            var wrapperId = groupItems.attr("id");
                            var isSlider = false;
                            if (groupItems.hasClass("owl-carousel")) {
                                $('#' + wrapperId).trigger("destroy.owl.carousel");
                                $('#' + wrapperId).removeClass("owl-carousel");
                                isSlider = true;
                            }
                            if (isSlider === true) {
                                $('#' + wrapperId).addClass("owl-carousel");
                                featured_opp_cycle();
                            }
                        });
                    }

                    // Updating listing block with Chart format
                    selector = "#container-block-" + block_id + " .listingcmsblock";
                    if ($(selector).find('.chart').length > 0) {
                        var listingId = $(selector).find('input[name="listingcmsid"]').val();
                        if (listingId) {
                            var sessionKeyName = 'listingcmsblock-chart-' + listingId;
                            var dataChart = sessionStorage.getItem(sessionKeyName);
                            if (dataChart) {
                                var dataChartdecoded = JSON.parse(dataChart);
                                if (drawChart) {
                                    drawChart(dataChartdecoded)
                                }
                            }
                        }
                    }
                    $('.loading-drag-drop').hide();
                    $.growl.notice({ title: jsonResult.status, message: jsonResult.message, duration: 5000 });

                } else {
                    Swal.fire({
                        icon: 'error',
                        title: 'Error',
                        text: jsonResult.message
                    }).then(function (result) {
                        window.location.reload();
                    });

                }

            });
        }).on('dragend', function (el) {
        });

        var scroll = autoScroll([window], {
            margin: 50,
            autoScroll: function () {
                return this.down && drake.dragging;
            },
            maxSpeed: 15,
        });
    }
}

function update_order_in_region(regionID) {
    var selector = ".region-container-" + regionID + " .container-block-section";
    var counter = 0;
    $(selector).each(function () {
        $(this).attr("data-new-order-value", counter);
        counter++;
    });
}

function validate_delete_region(tagRegion) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var activeDelete = false;

    if ($('#region-edit-backend').length > 0) {
        var regionID = $('form #RegionID').val();
        if (regionID !== null && regionID !== undefined && regionID > 0) {
            $('form .delete_region').show();
            activeDelete = true;
        }
        else
            $('form .delete_region').hide();

        if (activeDelete) {
            $('form a.delete_region').click(function (e) {

                var datareveal = $(this).parents(".reveal").attr("id");
                if (tagRegion.find('.no-blocks-located').length > 0) {

                    Swal.fire({
                        title: window.translation.are_you_sure,
                        text: window.translation.do_you_want_delete_region,
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.yes_delete_it,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: false

                    }).then(function (result) {
                        if (result.isConfirmed) {
                            if (regionID !== null && regionID !== undefined && regionID > 0) {
                                //call to the method.
                                $.ajax({
                                    method: "POST",
                                    url: urlSite + "AdvancedCMS/DeleteRegion",
                                    data: { regionID: regionID.toString() },
                                    beforeSend: function () {
                                        $('.processing_screen').show();
                                    }
                                }).done(function (data) {
                                    var jsonResult = JSON.parse(data);
                                    if (jsonResult.status === "ok") {

                                        Swal.fire({
                                            title: window.translation.success,
                                            text: jsonResult.message,
                                            icon: "success",
                                            closeOnConfirm: true
                                        }).then(function (result2) {
                                            $('#' + datareveal).foundation('close');
                                            window.location.reload();

                                        });

                                    } else {

                                        Swal.fire({
                                            title: window.translation.error,
                                            text: jsonResult.message,
                                            icon: "error",
                                            closeOnConfirm: true
                                        }).then(function (result2) {
                                            $('#' + datareveal).foundation('close');
                                            window.location.reload();

                                        });


                                    }
                                });
                            }

                        }
                    });
                } else {

                    Swal.fire({
                        title: window.translation.error,
                        text: window.translation.remove_region_warning_message,
                        icon: "error",
                        closeOnConfirm: true
                    }).then(function (result) {
                        $('#' + datareveal).foundation('close');

                    });


                }
            });

        }
    }
}

function validate_add_region(elementReveal) {
    //Save regions
    var isEditable = $('body').attr('data-layout-element-order');
    if (isEditable == 1) {
        $('#' + elementReveal).find('input.button-editable').show();
        $('#' + elementReveal).find('span.message-not-editable').hide();
    }
    else {
        $('#' + elementReveal).find('input.button-editable').hide();
        $('#' + elementReveal).find('span.message-not-editable').show();

    }

    if ($('body').hasClass('mobile') || $('body').hasClass('tablet')) {
        $('#' + elementReveal).find('.item-only-for-desktop').hide();
    } else {
        $('#' + elementReveal).find('.item-only-for-desktop').show();

    }
    

    $('#create-regions input[name=regionSet]').on('change', function (e) {
        if ($('#create-regions #valueSelected').length > 0) {
            $('#create-regions #valueSelected').val($(this).val());
        }
    });
    $('#create-regions input.save-regions').click(function (e) {
        var selected = $('#create-regions #valueSelected').val();
        var currentForm = $('#create-regions');
        var layoutName = $('body').attr('data-layout-name');
        var messageText = window.translation.add_regions_message;
        messageText = messageText.replace('{0}', '<b>' + layoutName + '</b>');

        var buttonText = window.translation.yes_change_regions;
        buttonText = buttonText.replace('{0}', layoutName);

        if (selected !== null && selected !== undefined && selected !== "singleRegion") {

            Swal.fire({
                title: window.translation.are_you_sure,
                html: messageText,
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: buttonText,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: true

            }).then(function (result) {
                $('.processing_screen').show();
                if (result.isConfirmed) {
                    //accept
                    currentForm.submit();
                } else {
                    //no accept
                    $("#" + elementReveal).foundation('close');

                }
            });


            e.preventDefault();
            return false;

        }

    });
}

function update_class_after_drag_and_drop(region) {
    var regionIDHtml = ".region-container-" + region.ID;
    if ($(regionIDHtml).hasClass('region-selectable')) {
        $(regionIDHtml).attr('data-status-region', region.RegionStatus);
    } else if ($(regionIDHtml + ' .page-sizer.region-selectable').length > 0) {
        $(regionIDHtml).attr('data-status-region', region.RegionStatus);
        $(regionIDHtml + ' .page-sizer.region-selectable').attr('data-status-region', region.RegionStatus);
    } else {
        console.log("Not found!!!!!");
    }
    if (region.Blocks.length > 0) {
        var total = region.Blocks.length;
        var count = 0;
        $.each(region.Blocks, function (key, value) {
            var blockIDHtml = "#container-block-" + value.ID;
            count++;
            for (var i = 1; i <= 12; i++)
                $(blockIDHtml).removeClass("medium-"+i);
            var blockClass = "";
            if (region.LastRowIndex === -1) {
                blockClass = region.BlockClass;
            } else if (count <= region.LastRowIndex) {
                blockClass = region.BlockClass;
            } else if (count > region.LastRowIndex) {
                blockClass = region.BlockClassLastRow;
            }
            if (count === total) {
                blockClass = region.LastClassBlock;
            }
            $(blockIDHtml).addClass(blockClass);
        });
    }
}

function populateLayoutSettingsModal(elementReveal, layoutId) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

    var allFine = true;
    var pageSection = $('#' + elementReveal).find('fieldset.page-selection-section');

    $('#' + elementReveal).find("label.error").remove();
    if (layoutId !== undefined) {
        $.ajax({
            method: "GET",
            url: urlSite + 'AdvancedCMS/GetLayoutSettingsData/' + layoutId,
            beforeSend: function () {
                $('#' + elementReveal).find('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);

            if (jsonResult.status === "200") {
                $('.edit-layout').show();
                $('.create-layout').hide();

                $('#' + elementReveal).find('a.rollback-link').attr('data-layout-id', jsonResult.id);
                $('#' + elementReveal).find('input[name="LayoutID"]').val(jsonResult.id);
                $('#' + elementReveal).find('input[name="layout.name"]').val(jsonResult.name);
                $('#' + elementReveal).find('input[name="layout.height"]').val(jsonResult.height);
                $('#' + elementReveal).find('input[name="layout.widthsuggestion"]').val(jsonResult.widthsuggestion);
                $('#' + elementReveal).find('input[name="layout.enabled"]').attr('checked', jsonResult.enabled);
                $('#' + elementReveal).find('input[name="layout.default"]').attr('checked', jsonResult.default);
                $('#' + elementReveal).find('select[name="layout.type"]').find('option.not-available-in-creation').show();
                $('#' + elementReveal).find('select[name="layout.type"]').val(jsonResult.type);
                $('#' + elementReveal).find('select[name="layout.type"]').prop('disabled', true);

                if (pageSection !== null && pageSection !== undefined) {
                    if (jsonResult.type == "Mobile" || jsonResult.type == "Tablet")
                        pageSection.hide();
                    else
                        pageSection.show();
                }

                $('#' + elementReveal).find('input[name="layout.backgroundColor"]').val(jsonResult.backgroundColor);
                $('#' + elementReveal).find('input[name="layout.backgroundColor"]').attr("style", "");
                createColorPickerField($('#' + elementReveal).find('input[name="layout.backgroundColor"]'), null);
                if (jsonResult.default === true || jsonResult.isSystemLayout === true) {
                    $("a.delete_layout").hide();
                } else {
                    $("a.delete_layout").show();
                }

                if (jsonResult.layoutDisplay === "CENTER_WIDTH_CONTENT") {
                    $('#centerWidthContent').prop('checked', true);
                } else if (jsonResult.layoutDisplay === "FULL_WIDTH_CONTENT") {
                    $('#expandedWidthContent').prop('checked', true);
                }
                $('#' + elementReveal).find('select[name="availablePages"] option').remove();
                $('#' + elementReveal).find('select[name="selectedPages"] option').remove();
                if (jsonResult.availablePages !== null && jsonResult.availablePages.status === "1") {

                    var availablePages = jsonResult.availablePages.pages.map(function (el) {
                        return el.url;
                    });

                    availablePages.forEach(function (el) {
                        $('#' + elementReveal).find('select[name="availablePages"]').append("<option value='" + el + "' title='" + el + "'>" + el + "</option>")
                    });
                }
                if (jsonResult.selectedPages) {
                    jsonResult.selectedPages.forEach(function (el) {
                        $('#' + elementReveal).find('select[name="selectedPages"]').append("<option value='" + el + "' title='" + el + "'>" + el + "</option>")
                    });
                }

                if (jsonResult.type === 'Subsite') {
                    $('#' + elementReveal).find('.page-selection-section').hide();
                }
                else {
                    $('#' + elementReveal).find('.page-selection-section').show();
                }

                var option_all = $("select#selectedPages option").map(function () {
                    return $(this).text().trim();
                }).get().join(',');
                $("#selectedPagesText").val(option_all);
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: jsonResult.message,
                    confirmButtonText: "Ok"
                });
                allFine = false;
            }
            $('#' + elementReveal).find('.processing_screen').hide();
        });
    } else {
        $('#' + elementReveal).find('select[name="layout.type"]').prop('disabled', false);
        $('#' + elementReveal).find('input[name="LayoutID"]').val(0);
        $('#' + elementReveal).find('input[name="layout.widthsuggestion"]').val(0);
        $('#' + elementReveal).find('input[name="layout.backgroundColor"]').attr("style", "");
        $('#' + elementReveal).find('select[name="layout.type"]').find('option.not-available-in-creation').hide();
        $('.edit-layout').hide();
        $('.create-layout').show();
        pageSection.show();

        $.ajax({
            method: "GET",
            url: urlSite + 'AdvancedCMS/GetPages/',
            beforeSend: function () {
                $('.processing_screen').show();
            }
        }).done(function (data) {
            var jsonResult = JSON.parse(data);
            if (jsonResult.status === "1") {
                if (jsonResult.pages !== null) {

                    var availablePages = jsonResult.pages.map(function (el) {
                        return el.url;
                    });

                    $('#' + elementReveal).find('select[name="availablePages"] option').remove();
                    $('#' + elementReveal).find('select[name="selectedPages"] option').remove();

                    availablePages.forEach(function (el) {
                        $('#' + elementReveal).find('select[name="availablePages"]').append("<option value='" + el + "' title='" + el + "'>" + el + "</option>")
                    });
                }
            } else {
                Swal.fire({
                    title: "",
                    icon: "error",
                    text: jsonResult.message,
                    confirmButtonText: "Ok"
                });
                allFine = false;
            }
            $('.processing_screen').hide();
        });
    }

    return allFine;
}

function validate_delete_layout() {
    if ($('#layout-form-modal').length > 0) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        $('form .delete_layout').click(function (e) {
            var layoutID = $('form #LayoutID').val();
            if (layoutID !== null && layoutID !== undefined && layoutID > 0)
                $('form .delete_layout').show();
            else
                $('form .delete_layout').hide();
            var datareveal = $(this).parents(".reveal").attr("id");

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_layout,
                icon: "warning",
                showCancelButton: true,
                confirmButtonColor: "#ff0000",
                confirmButtonText: window.translation.yes_delete_it,
                cancelButtonText: window.translation.cancel,
                closeOnConfirm: false
            }).then(function (result) {
                if (result.isConfirmed) {
                    if (layoutID !== null && layoutID !== undefined && layoutID > 0) {
                        //call to the method.
                        $.ajax({
                            method: "POST",
                            url: urlSite + "AdvancedCMS/DeleteLayout",
                            data: { layoutID: layoutID.toString() },
                            beforeSend: function () {
                                $('.processing_screen').show();
                            }
                        }).done(function (data) {
                            var jsonResult = JSON.parse(data);
                            if (jsonResult.status === "ok") {
                                $('.processing_screen').hide();

                                Swal.fire({
                                    title: window.translation.success,
                                    text: jsonResult.message,
                                    icon: "success",
                                    closeOnConfirm: true
                                }).then(function (result2) {
                                    $('#' + datareveal).foundation('close');
                                    $('.processing_screen').hide();
                                    window.location.href = urlSite;
                                });

                            } else {
                                $('.processing_screen').hide();

                                Swal.fire({
                                    title: window.translation.error,
                                    text: jsonResult.message,
                                    icon: "error",
                                    closeOnConfirm: true
                                }).then(function (result2) {
                                    $('.processing_screen').hide();
                                    $('#' + datareveal).foundation('close');
                                    window.location.href = urlSite;

                                });

                            }
                        });
                    }

                }
            });

        });
    }
}

function visual_setting_site() {

    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var IS_LLAMAPI_ENABLED = (window.is_llamapi !== undefined && window.is_llamapi !== null ? window.is_llamapi : false);

    //Open Visual Settings
    if ($('#visual-site-config').length > 0) {
        $("body").on("click", "a#open-visual-settings", function () {
            openVisualSettingHelpText();
            var elementReveal = $(this).data('element-reveal');
            $("#tabs-visual-config-all-site").tabs();
            clear_all_visual_settings_tabs(elementReveal);
            $('#' + elementReveal).find('#field-list-items').hide();
            $('#' + elementReveal).find('input.visual-settings-save-layout').prop('disabled', 'disabled');
            var siteId = $('#' + elementReveal).data('site-id');
            $('#' + elementReveal).find('fieldset.search_result_legend_colors').show();
            if (IS_LLAMAPI_ENABLED) {
                $('#' + elementReveal).find('fieldset.search_result_legend_colors').hide();
                $('#' + elementReveal).find('.sub-group-content-Settings-for-Background-in-Form-Color').hide();
            }

            $('#' + elementReveal).foundation('open');
            $.ajax({
                method: "GET",
                url: urlSite + 'AdvancedCMS/GetVisualSettingsPerSite/' + siteId,
                beforeSend: function () {
                    $('.processing_screen_visual_settings').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);
                if (jsonResult.status === "ok") {

                    if (IS_LLAMAPI_ENABLED && jsonResult.isLlamaIntegration !== null && jsonResult.isLlamaIntegration !== undefined && jsonResult.isLlamaIntegration === true) {
                        $('#' + elementReveal).find('fieldset.search_result_legend_colors').show();
                        $('#' + elementReveal).find('.sub-group-content-Settings-for-Background-in-Form-Color').show();
                    }
                    var isNewVs = jsonResult.isVsNew;
                    $('#visual-site-form-is-new').val(isNewVs);
                    var hasOldSettings = jsonResult.hasOldSettings;
                    if (hasOldSettings == "1")
                        $('#restore-button-per-site').removeClass('hide');
                    var dataSettings = "";
                    if (jsonResult.message !== "empty") {
                        var s = JSON.parse(jsonResult.data);
                        dataSettings = "";
                        if (s !== "" && s.NormalSettings !== "") {
                            dataSettings = JSON.parse(s.NormalSettings);
                        }
                        initialize_color_pick(dataSettings);
                        initialize_dropdowns(dataSettings);
                        dataSettings = "";
                        if (s !== "" && s.CustomSettings !== "") {
                            dataSettings = JSON.parse(s.CustomSettings);
                        }
                        initialize_color_pick(dataSettings);
                        initialize_dropdowns(dataSettings);
                        initialize_color_pick_empty();
                    } else {
                        initialize_color_pick("empty");
                        initialize_dropdowns("empty");
                    }
                    add_event_dropdown();
                    initialize_select_visual_settings(jsonResult.Layouts, elementReveal);
                } else {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: jsonResult.message,
                        confirmButtonText: "Ok",
                    });
                }

                $('.processing_screen_visual_settings').hide();
            });
        });

        if ($("#restore-button-per-site").length > 0) {
            $('#restore-button-per-site').on('click', function (e) {
                var self = $(this);

                Swal.fire({
                    title: window.translation.are_you_sure,
                    text: window.translation.visual_settings_restore_setting_message,
                    icon: "warning",
                    showCancelButton: true,
                    confirmButtonColor: "#ff0000",
                    confirmButtonText: window.translation.visual_settings_restore_save_it,
                    cancelButtonText: window.translation.cancel,
                    closeOnConfirm: true
                }).then(function (result) {
                    if (result.isConfirmed) {
                        var parent = self.parents('.reveal').first();
                        var processing_screen = parent.find('.processing_screen');
                        processing_screen.show();

                        $('#restore-visual-setting-form').submit();

                    } else {
                        e.preventDefault();
                        return false;

                    }
                });

                e.preventDefault();
                return false;
            });
        }

        if ($("#restore-button-per-layout").length > 0) {
            $('#restore-button-per-layout').on('click', function (e) {
                var self = $(this);

                Swal.fire({
                    title: window.translation.are_you_sure,
                    text: window.translation.visual_settings_restore_setting_message,
                    icon: "warning",
                    showCancelButton: true,
                    confirmButtonColor: "#ff0000",
                    confirmButtonText: window.translation.visual_settings_restore_save_it,
                    cancelButtonText: window.translation.cancel,
                    closeOnConfirm: true
                }).then(function (result) {
                    if (result.isConfirmed) {
                        var parent = self.parents('.reveal').first();
                        var processing_screen = parent.find('.processing_screen');
                        processing_screen.show();
                        $('#restore-visual-setting-form-layout').submit();
                    } else {
                        e.preventDefault();
                        return false;
                    }
                });

                e.preventDefault();
                return false;
            });
        }


        if ($('input.visual-settings-save').length > 0) {
            $('input.visual-settings-save').click(function (e) {
                var self = $(this);
                var isNew = $('#visual-site-form-is-new').val();
                if (isNew == '0') {

                    Swal.fire({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_settings_warning_message_before_save,
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true

                    }).then(function (result) {
                        if (result.isConfirmed) {
                            var parent = self.parents('.reveal').first();
                            var processing_screen = parent.find('.processing_screen');
                            processing_screen.show();
                            $('#visual-site-form').submit();

                        } else {
                            e.preventDefault();
                            return false;
                        }
                    });


                } else if (isNew == '1') {

                    Swal.fire({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_setting_confirm_save,
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true
                    }).then(function (result) {
                        if (result.isConfirmed) {
                            var parent = self.parents('.reveal').first();
                            var processing_screen = parent.find('.processing_screen');
                            processing_screen.show();
                            $('#visual-site-form').submit();
                        } else {
                            e.preventDefault();
                            return false;
                        }
                    });
                }

                e.preventDefault();
                return false;

            });
        }
        if ($('input.visual-settings-save-layout').length > 0) {
            $('input.visual-settings-save-layout').click(function (e) {

                var self = $(this);
                var isNew = $('#visual-site-per-layout-form-is-new').val();
                if (isNew == '0') {

                    Swal.fire({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_settings_warning_message_before_save,
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true
                    }).then(function (result) {
                        if (result.isConfirmed) {
                            $('.processing_screen_compiling_settings').show();
                            $('#visual-site-per-layout-form').submit();

                        } else {
                            e.preventDefault();
                            return false;

                        }
                    });


                } else if (isNew == '1') {

                    Swal.fire({
                        title: window.translation.are_you_sure,
                        text: window.translation.visual_setting_confirm_save,
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: window.translation.visual_settings_confirm_message_for_save,
                        cancelButtonText: window.translation.cancel,
                        closeOnConfirm: true
                    }).then(function (result) {
                        if (result.isConfirmed) {
                            $('.processing_screen_compiling_settings').show();
                            $('#visual-site-per-layout-form').submit();
                        } else {
                            e.preventDefault();
                            return false;
                        }
                    });

                }

                e.preventDefault();
                return false;


            });
        }
    }
}

function add_event_dropdown() {
    if ($('.size-box-field').length > 0) {
        $('.size-box-field').each(function () {
            var self = $(this);
            var name = self.attr('data-item-preview');
            var itemPreview = '.' + name + ' span.item-preview';
            var attrValue = self.attr('data-event-added');
            if (attrValue !== null && attrValue !== undefined && attrValue == 'none' && self.is(":visible")) {
                self.on('change', function () {
                    var value = $(this).val();
                    if (value === "Default") {
                        $(itemPreview).css('font-size', 'inherit');
                    } else {
                        $(itemPreview).css('font-size', value + 'px');
                    }
                });
                self.attr('data-event-added', 'yes');
            }
        });

    }

    if ($('.font-box-field').length > 0) {
        $('.font-box-field').each(function () {

            var self = $(this);
            var name = self.attr('data-item-preview');
            var itemPreview = '.' + name + ' span.item-preview';
            var attrValid = self.attr("data-event-added");
            if (attrValid !== undefined && attrValid !== null && attrValid == "none" && self.is(":visible")) {

                self.on('change', function () {
                    var value = $(this).val();
                    if (value === "Default") {
                        $(itemPreview).css('font-family', 'inherit');
                    } else {
                        $(itemPreview).css('font-family', value);
                    }
                });
                self.attr("data-event-added", "yes");

            }
        });
    }

}

function initialize_dropdowns(dataSettings) {
    if ($('.size-box-field').length > 0) {
        $('.size-box-field').each(function () {
            var self = $(this);
            var name = self.attr('data-item-preview');
            var itemPreview = '.' + name + ' span.item-preview';
            var fieldName = $(this).attr('name');
            var attrValid = self.attr("data-fixed-value");
            if (attrValid !== undefined && attrValid !== null && attrValid == "none") {
                if (verify_exist_input(fieldName, dataSettings)) {
                    var valueD = get_data_from_setting(fieldName, dataSettings);
                    if (valueD !== "") {

                        self.val(valueD);
                        if (valueD === "Default") {
                            $(itemPreview).css('font-size', 'inherit');
                        } else {
                            $(itemPreview).css('font-size', valueD + 'px');
                        }

                    }
                    self.attr("data-fixed-value", "seted");

                }
            }
        });
    }

    if ($('.font-box-field').length > 0) {
        $('.font-box-field').each(function () {
            
            var self = $(this);
            var name = self.attr('data-item-preview');
            var itemPreview = '.' + name + ' span.item-preview';
            var fieldName = $(this).attr('name');
            var attrValid = self.attr("data-fixed-value");
            if (attrValid !== undefined && attrValid !== null && attrValid == "none") {
                if (verify_exist_input(fieldName, dataSettings)) {
                    var valueD = get_data_from_setting(fieldName, dataSettings);
                    if (valueD !== "") {
                        
                        if (valueD === "Default")
                            self.val("Lucida Grande");
                        else
                            self.val(valueD);

                        if (valueD === "Default") {
                            $(itemPreview).css('font-family', 'Lucida Grande');
                        } else {
                            $(itemPreview).css('font-family', valueD);
                        }

                    } else {
                        self.val("Lucida Grande");
                        $(itemPreview).css('font-family', 'Lucida Grande');
                    }
                    self.attr("data-fixed-value", "seted");

                } else if (dataSettings === "empty") {
                    self.val("Lucida Grande");

                } else {
                    if (self.is(":visible")) {
                        self.val('Lucida Grande');
                        $(itemPreview).css('font-family', 'Lucida Grande');
                    }
                }

            }
        });
    }


    if ($('.border-type-field').length > 0) {
        $('.border-type-field').each(function () {
            var self = $(this);
            var fieldName = $(this).attr('name');
            var attrValid = self.attr("data-fixed-value");
            if (attrValid !== undefined && attrValid !== null && attrValid == "none") {
                if (verify_exist_input(fieldName, dataSettings)) {
                    var valueD = get_data_from_setting(fieldName, dataSettings);
                    if (valueD !== "") {

                        self.val(valueD);
                    }
                    self.attr("data-fixed-value", "seted");

                } else if (dataSettings === "empty") {
                    self.val("Square");

                } else {
                    if (self.is(":visible")) {
                        self.val('Square');
                    }
                }
            }
        });
    }

}

function initialize_color_pick(dataSettings) {
    if ($('#visual-site-config input.color-picker-box-field').length > 0) {
        var foundIconforMobile = false;

        $('#visual-site-config input.color-picker-box-field').each(function () {
            var self = $(this);
            var name = self.attr('data-item-preview');
            var itemPreview = '.' + name + ' span.item-preview';
            var fieldName = $(this).attr('name');
            if (verify_exist_input(fieldName, dataSettings)) {
                var valueD = get_data_from_setting(fieldName, dataSettings);
                if (valueD !== "") {
                    if (is_valid_rgb_color(valueD)) {
                        self.val(valueD);
                        $(itemPreview).css('color', valueD);
                        var legend = fieldName + '-legend';
                        var hexValue = rgb2hex(valueD);
                        hexValue = hexValue.toUpperCase();
                        if ($('#' + legend).length > 0)
                            $('#' + legend).text(hexValue);
                    }

                }

                createColorPickerField(self, itemPreview);
            } else if (dataSettings === "empty") {
                createColorPickerField(self, itemPreview);

            } else if (fieldName === "menu_settings_field_second_level_icon_color_mobile") {
                var valueAux = get_data_from_setting("branding_field_primary_color", dataSettings);
                if (valueAux !== "") {
                    if (is_valid_rgb_color(valueAux)) {
                        self.val(valueAux);
                        $(itemPreview).css('color', valueAux);
                        var legendA = fieldName + '-legend';
                        var hexValueA = rgb2hex(valueAux);
                        hexValueA = hexValueA.toUpperCase();
                        if ($('#' + legendA).length > 0)
                            $('#' + legendA).text(hexValueA);
                    }

                }
                createColorPickerField(self, itemPreview);

            }
        });
    }
}

function get_data_from_setting(inputName, dataSettings) {
    var value = "";
    if (inputName !== "" && dataSettings !== "" && Array.isArray(dataSettings)) {
        for (var i = 0; i < dataSettings.length; i++) {
            if (dataSettings[i].FieldName === inputName && dataSettings[i].Value !== "") {
                value = dataSettings[i].Value;
                if (value.indexOf('px') !== -1) {
                    value = value.replace('px', '');
                }
            }
        }
    }
    return value;
}

function verify_exist_input(inputName, dataSettings) {
    var found = false;
    if (dataSettings !== "" && Array.isArray(dataSettings)) {
        for (var i = 0; i < dataSettings.length; i++) {
            if (dataSettings[i].FieldName === inputName) {
                found = true;
            }
        }
    } else {
        return false;
    }
    if (!found)
        return false;
    if ($('#visual-site-config input[name="' + inputName + '"]').length > 0) {
        return true;
    }
    if ($('#visual-site-config select[name="' + inputName + '"]').length > 0) {
        return true;
    }
    return false;
}

function initialize_color_pick_empty() {
    if ($('#visual-site-config input.color-picker-box-field').length > 0) {
        $('#visual-site-config input.color-picker-box-field').each(function () {
            
            var self = $(this);
            var name = self.attr('data-item-preview');
            var itemPreview = '.' + name + ' span.item-preview';
            var fieldName = $(this).attr('name');
            var value = $(this).val();
            if ((fieldName === 'search_result_legend_colors_field_past_event_color' || fieldName === 'search_result_legend_colors_field_past_event_background_color') && value === "") {
                if (fieldName === 'search_result_legend_colors_field_past_event_color') {
                    value = 'rgb(69, 69, 69)';
                } else if (fieldName === 'search_result_legend_colors_field_past_event_background_color') {
                    value = 'rgb(240, 239, 233)';
                }

                if (is_valid_rgb_color(value)) {
                    self.val(value);
                    var legend = fieldName + '-legend';
                    $(itemPreview).css('color', value);
                    var hexValue = rgb2hex(value);
                    hexValue = hexValue.toUpperCase();
                    if ($('#' + legend).length > 0)
                        $('#' + legend).text(hexValue);
                    createColorPickerField(self, itemPreview);
                }
                

            } else if (value === "") {

                createColorPickerField(self, itemPreview);
            }
        });
    }
}

function initialize_select_visual_settings(layoutList, elementReveal) {
    //Get if site is sharingPortalPlus
    var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
    var selector = $('#' + elementReveal).find('select[name="layoutList"]');

    if (selector !== null && selector !== undefined) {
        selector.html("");
        if (layoutList === null || layoutList === undefined || layoutList === "") {
            selector.append($("<option></option>").text("-- Select --"));
        } else {
            selector.append($('<option></option>').text('-- Select --'));
            layoutList.forEach(function (item) {
                selector.append($('<option></option>').text(item.Name).attr("value", item.ID));
            });
        }
        selector.on("change", function () {
            var valueSelected = $(this).val();
            clear_visual_setting_tabs(elementReveal);
            if (valueSelected === '-- Select --') {
                $('#' + elementReveal).find('.single-setting-per-layout').hide();
                $('#' + elementReveal).find('input.visual-settings-save-layout').prop('disabled', 'disabled');
            } else {
                $('#' + elementReveal).find('input.visual-settings-save-layout').prop('disabled', '');
                $('#' + elementReveal).find('.single-setting-per-layout').show();

                $.ajax({
                    method: "GET",
                    url: urlSite + 'AdvancedCMS/GetVisualSettingsPerLayout/' + valueSelected,
                    beforeSend: function () {
                        $('.processing_screen_visual_settings').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);
                    if (jsonResult.status === "ok") {
                        var dataSettings = "";
                        var isNewVs = jsonResult.isVsNew;
                        $('#layout-id-restore-settings').val(valueSelected);
                        $('#visual-site-per-layout-form-is-new').val(isNewVs);
                        var hasOldSettings = jsonResult.hasOldSettings;
                        if (hasOldSettings == "1")
                            $('#restore-button-per-layout').removeClass('hide');
                        else
                            $('#restore-button-per-layout').addClass('hide');
                        if (jsonResult.message !== "empty") {
                            var s = JSON.parse(jsonResult.data);
                            dataSettings = "";
                            if (s !== "" && s.NormalSettings !== "") {
                                dataSettings = JSON.parse(s.NormalSettings);
                            }
                            initialize_color_pick(dataSettings);
                            initialize_dropdowns(dataSettings);
                            dataSettings = "";
                            if (s !== "" && s.CustomSettings !== "") {
                                dataSettings = JSON.parse(s.CustomSettings);
                            }
                            initialize_color_pick(dataSettings);
                            initialize_dropdowns(dataSettings);
                            initialize_color_pick_empty();
                        } else {
                            initialize_color_pick("empty");
                            initialize_dropdowns("empty");
                        }
                        add_event_dropdown();
                    } else {
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: jsonResult.message,
                            confirmButtonText: "Ok",
                        });

                    }
                    $('.processing_screen_visual_settings').hide();

                });
            }
            
        });
    }
}

function clear_all_visual_settings_tabs(elementReveal) {
    $('#' + elementReveal).find("#visual-tab-1 select.font-box-field").val("Lucida Grande");
    $('#' + elementReveal).find("#visual-tab-1 select.size-box-field").val("Default");
    $('#' + elementReveal).find("#visual-tab-1 select.border-type-field").val("Square");
    $('#' + elementReveal).find("#visual-tab-1 select.font-box-field").attr("data-event-added", "none");
    $('#' + elementReveal).find("#visual-tab-1 select.size-box-field").attr("data-event-added", "none");
    $('#' + elementReveal).find("#visual-tab-1 select.font-box-field").attr("data-fixed-value", "none");
    $('#' + elementReveal).find("#visual-tab-1 select.size-box-field").attr("data-fixed-value", "none");
    $('#' + elementReveal).find("#visual-tab-1 select.border-type-field").attr("data-fixed-value", "none");
    $('#' + elementReveal).find("#visual-tab-1 select.border-type-field").attr("data-event-added", "none");

    $('#' + elementReveal).find("#visual-tab-1 input[type='text']").val("");
    $('#' + elementReveal).find('#visual-tab-1 span.item-preview').attr('style', '');
    $('#' + elementReveal).find('#visual-tab-1 .color-picker-box-field').attr('style', '');

    clear_visual_setting_tabs(elementReveal);
}

function clear_visual_setting_tabs(elementReveal) {
    $('#' + elementReveal).find("#visual-tab-2 select.font-box-field").val("Lucida Grande");
    $('#' + elementReveal).find("#visual-tab-2 select.size-box-field").val("Default");
    $('#' + elementReveal).find("#visual-tab-2 select.border-type-field").val("Square");
    $('#' + elementReveal).find("#visual-tab-2 select.font-box-field").attr("data-event-added", "none");
    $('#' + elementReveal).find("#visual-tab-2 select.size-box-field").attr("data-event-added", "none");
    $('#' + elementReveal).find("#visual-tab-2 select.font-box-field").attr("data-fixed-value", "none");
    $('#' + elementReveal).find("#visual-tab-2 select.size-box-field").attr("data-fixed-value", "none");
    $('#' + elementReveal).find("#visual-tab-2 select.border-type-field").attr("data-fixed-value", "none");
    $('#' + elementReveal).find("#visual-tab-2 select.border-type-field").attr("data-event-added", "none");

    $('#' + elementReveal).find("#visual-tab-2 input[type='text']").val("");
    $('#' + elementReveal).find('#visual-tab-2 span.item-preview').attr('style', '');
    $('#' + elementReveal).find('#visual-tab-2 .color-picker-box-field').attr('style', '');
}

function subsite_settings_events() {
    if ($('body').hasClass('backend-page')) {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
        
        //Listing Subsite
        $(document).on('click', 'a#open-subsite-settings', function() {
            var elementReveal = $(this).data('element-reveal');
            var objectTable = $("#subsite-table");

            $('#' + elementReveal).foundation('open');
            //Reload elements inside modal
            $('#' + elementReveal).foundation();

            $.ajax({
                method: "POST",
                url: urlSite + "AdvancedCMS/GetSubsitesInfo",
                data: {},
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();

                    datatable_destory_by_id('subsite-table');
                    $('#subsite-table tbody').empty();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if (jsonResult.length > 0) {
                    for (var i = 0; i < jsonResult.length; i++) {
                        var subsiteInfo = jsonResult[i];
                        var info_table =    '<tr>' +
                                                '<td>' + 
                                                    subsiteInfo.Name + 
                                                '</td>' +
                                                '<td>' + 
                                                    subsiteInfo.Path + 
                                                '</td>' +
                                                '<td>' +
                                                    '<a class="edit-subsite" data-element-reveal="subsite-form-modal" data-subsiteid="' + subsiteInfo.Id + '" data-name="' + subsiteInfo.Name + '" data-path="' + subsiteInfo.Path + '">' +
                                                        window.translation.edit_subsite +
                                                    '</a>' +
                                                '</td>' +
                                            '</tr>';

                        $("#subsite-table tbody").append(info_table);
                    }
                    datatable_initialize_notAjax_with_params(objectTable, null, null, false, false, false);
                }
                else {
                    var empty_subsite = '<tr class="odd"><td valign="top" colspan="3" class="dataTables_empty">' + window.translation.nothing_records_found + '</td></tr>';
                    $("#subsite-table tbody").append(empty_subsite);
                }

                //Hide processing screen
                $('#' + elementReveal).find('.processing_screen').hide();
            });
        });

        //Subsite Edit
        $(document).on('click', 'a[data-element-reveal="subsite-form-modal"]', function () {
            var elementReveal = $(this).data('element-reveal');
            var subsiteId = $(this).data('subsiteid');

            //Load info of subsite in link
            var name = $(this).data('name');
            var path = $(this).data('path');
            var urlReserved = $(this).data('urlReserved');

            $('#' + elementReveal).foundation('open');
            //Reload elements inside modal
            $('#' + elementReveal).foundation();

            $.ajax({
                method: "POST",
                url: urlSite + "AdvancedCMS/GetSubsiteInfo",
                data: { subsiteId: subsiteId },
                beforeSend: function () {
                    $('#' + elementReveal).find('.processing_screen').show();
                }
            }).done(function (data) {
                var jsonResult = JSON.parse(data);

                if(jsonResult) {
                    //Populate fields layoutHomepage and layoutInternal
                    var layoutsHomepage = jsonResult['layoutsHomepage'];
                    var layoutsInternal = jsonResult['layoutsInternal'];

                    $('#' + elementReveal).find('select[name="layout_homepage"]').empty();
                    $('#' + elementReveal).find('select[name="layout_internal"]').empty();
                    $('#' + elementReveal).find('select[name="layout_homepage"]').append('<option value="">' + window.translation.select_layout + '</option>');
                    $('#' + elementReveal).find('select[name="layout_internal"]').append('<option value="">' + window.translation.select_layout + '</option>');

                    if(layoutsHomepage.length > 0) {
                        layoutsHomepage.forEach(function(layout) {
                            var layoutId = layout.LayoutId;
                            var layoutName = layout.Name;

                            $('#' + elementReveal).find('select[name="layout_homepage"]').append('<option value="' + layoutId + '">' + layoutName + '</option>');
                        });
                    }
                    if(layoutsInternal.length > 0) {
                        layoutsInternal.forEach(function(layout) {
                            var layoutId = layout.LayoutId;
                            var layoutName = layout.Name;

                            $('#' + elementReveal).find('select[name="layout_internal"]').append('<option value="' + layoutId + '">' + layoutName + '</option>');
                        });
                    }
                }

                //Populate data of subsite
                if(subsiteId !== 0) {
                    //Load data in link
                    $('#' + elementReveal).find('input[name="subsiteId"]').val(subsiteId);
                    $('#' + elementReveal).find('input[name="name_subsite"]').val(name);
                    $('#' + elementReveal).find('input[name="path_subsite"]').val(path);
                    $('#' + elementReveal).find('input[name="subsitePath"]').val(path);

                    $('#' + elementReveal).find('h3.edit-subsite').show();
                    $('#' + elementReveal).find('h3.create-subsite').hide();

                    if(jsonResult['subsiteInfo']) {
                        $('#' + elementReveal).find('select[name="layout_homepage"]').val(jsonResult['subsiteInfo'].LayoutHomepage);
                        $('#' + elementReveal).find('select[name="layout_internal"]').val(jsonResult['subsiteInfo'].LayoutInternal);
                    }
                }
                else {
                    //Reset all fields of modal subsite
                    $('#' + elementReveal).find('input[name="subsiteId"]').val('0');
                    $('#' + elementReveal).find('input[type="text"]').val('');
                    $('#' + elementReveal).find('input[name="subsitePath"]').val('');

                    $('#' + elementReveal).find('h3.edit-subsite').hide();
                    $('#' + elementReveal).find('h3.create-subsite').show();
                }

                //Initialize jquery-validate
                initiate_jquery_validate_reveal($('#subsite-form-management'), 'subsite-form-management');

                //Remove labels error-custom
                $('#' + elementReveal).find('label.error').remove();

                $('#' + elementReveal).find('.processing_screen').hide();              
            });
        });

        //Save Subsite Form
        $(document).on('click', 'form#subsite-form-management button.save-subsite', function() {
            var form = $('form#subsite-form-management');

            //Validate if form is valid
            if(form.valid()) {
                var formData = form.serializeObject();

                $.ajax({
                    method: "POST",
                    url: urlSite + "AdvancedCMS/AddUpdateSubsite",
                    data: formData,
                    beforeSend: function () {
                        $('#subsite-form-modal').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if(jsonResult) {
                        if (jsonResult.status === 'ok') {

                            Swal.fire({
                                title: "",
                                icon: "success",
                                text: window.translation.subsite_saved_successfully,
                                confirmButtonText: "Ok"
                            }).then(function (result) {
                                window.location.reload();

                            });

                        }
                        else {

                            Swal.fire({
                                title: "",
                                icon: "warning",
                                text: jsonResult.log,
                                confirmButtonText: "Ok"
                            }).then(function (result) {
                                $('#subsite-form-modal').find('.processing_screen').hide();

                            });

                        }
                    }
                });
            }
            else {
                Swal.fire({
                    title: '',
                    icon: 'warning',
                    text: window.translation.enter_all_required,
                    confirmButtonText: "Ok"
                });
            }

            return false;
        });

        $(document).on('click', 'form#subsite-form-management a.delete_subsite', function() {
            var subsiteId = $('form#subsite-form-management').find('input[name="subsiteId"]').first().val();
            var currentPath = window.location.pathname;
            var pathSubsite = '/' + $('form#subsite-form-management').find('input[name="subsitePath"]').first().val();

            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.do_you_want_delete_subsite,
                icon: 'warning',
                showCancelButton: true,
                confirmButtonColor: '#DD6B55',
                confirmButtonText: window.translation.yes_delete_it,
                closeOnConfirm: true

            }).then(function (result) {
                $.ajax({
                    method: "POST",
                    url: urlSite + "AdvancedCMS/DeleteSubsite",
                    data: { subsiteId: subsiteId.toString() },
                    beforeSend: function () {
                        $('#subsite-form-modal').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult) {
                        if (jsonResult.status === 'ok') {

                            Swal.fire({
                                title: "",
                                icon: "success",
                                text: window.translation.subsite_deleted_successfully,
                                confirmButtonText: "Ok"

                            }).then(function (result2) {
                                if (pathSubsite === currentPath) {
                                    window.location = currentPath;
                                }
                                else {
                                    window.location.reload();
                                }

                            });
                        }
                        else {

                            Swal.fire({
                                title: "",
                                icon: "warning",
                                text: jsonResult.log,
                                confirmButtonText: "Ok",
                            }).then(function (result) {
                                $('#subsite-form-modal').find('.processing_screen').hide();

                            });

                        }
                    }
                });

            });

        });
    }
}

function open_add_regions_preview() {
    if($('body').hasClass('backend-page')) {
        if($('body').find('input[name="open_modal_regions"]').length > 0) {
            //Open modal to add regions
            $('body').find('a.add-component.create-regions').trigger('click');
        }
    }
}

//function generateOptions(itemPreview, legend, fields) {
//    'use strict';
//    var options = {
//        buildCallback: function ($elm) {
//            var that = this;
//            var currentRGB = '';
//            var $currentSlider = $();
//            var currentOffset = {};
//            var $window = $(window);
//            var mouseMove = function (e) { // don't render sliders here. Just setColor;
//                var color = {}; // new calculated color

//                color[currentRGB] = (e.pageX - currentOffset.left) / that.currentWidth * 255;
//                that.color.setColor(color, 'rgb'); // set calculated value
//                that.render(); // tell colorPicker to render
//            };

//            $elm.append( // render extra sliders and patch
//                '<div class="cp-rgb-r"><div class="cp-rgb-r-cursor"></div></div>' +
//                '<div class="cp-rgb-g"><div class="cp-rgb-g-cursor"></div></div>' +
//                '<div class="cp-rgb-b"><div class="cp-rgb-b-cursor"></div></div>' +
//                '<div class="cp-patch"><div></div></div><div class="cp-disp"></div>');

//            this.$sliders = $elm.find('.cp-rgb-r, .cp-rgb-g, .cp-rgb-b');
//            this.cursorRStyle = this.$sliders.find('.cp-rgb-r-cursor')[0].style; // caching for faster render renderCallback
//            this.cursorGStyle = this.$sliders.find('.cp-rgb-g-cursor')[0].style;
//            this.cursorBStyle = this.$sliders.find('.cp-rgb-b-cursor')[0].style;

//            this.patchStyle = $('.cp-patch div')[0].style;
//            this.$display = $('.cp-disp');
//            this.$alpha = $elm.find('.cp-alpha');

//            $elm.on('mousedown', '.cp-rgb-r, .cp-rgb-g, .cp-rgb-b', function (e) { // event delegation
//                $currentSlider = $(this); // well ;o)
//                currentRGB = this.className.replace(/cp-rgb-(\D){1}/, "$1"); // cp-rgb-r -> r
//                currentOffset = $currentSlider.offset(); // for later calculations
//                that.currentWidth = $currentSlider.width(); // ... also here
//                $window.on('mousemove.rgb', mouseMove); // install mousemove listener
//                e.preventDefault && e.preventDefault(); // prevent selecting text
//                mouseMove(e); // render color picker the first time
//                return false; // for IE
//            });

//            $window.on('mouseup', function (e) {
//                $window.off('mousemove.rgb'); // turn off mousemove event handler
//            });

//            $('#colorPickerMod').appendTo('head');

//        },
//        positionCallback: function ($elm) {
//            var _$UI = this.$UI, // this is the instance; this.$UI is the colorPicker DOMElement
//				position = $elm.offset(), // $elm is the current trigger / element that opened the colorPicker
//				$window = $(window),
//				gap = this.color.options.gap; // this.color.options stores all options

//            // _$UI.appendTo($elm.closest('.wrapper').eq(0)); // demonstration only

//            return { // this demo is a copy of the internal usage (to show how it works);
//                'left': (_$UI._left = position.left) -
//					((_$UI._left += _$UI._width -
//					($window.scrollLeft() + $window.width())) + gap > 0 ?
//					_$UI._left + gap : 0),
//                'top': (_$UI._top = position.top + $elm.outerHeight()) -
//					((_$UI._top += _$UI._height -
//					($window.scrollTop() + $window.height())) + gap > 0 ?
//					_$UI._top + gap : 0)
//            }

//        },
//        renderCallback: function ($elm, toggled) {
//            var colors = this.color.colors;
//            var text = this.color.toString();
//            var rgb2 = '#' + colors.HEX;
//            var rgb = colors.RND.rgb;
//            var oldValue = '';
//            var currentValue = '';
//            if (toggled === true) {
//                $(".cp-color-picker").css("z-index", "1500");
//            } else if (toggled === false) {
//                if (itemPreview !== null && itemPreview !== undefined && itemPreview !== "")
//                    $(itemPreview).css('color', rgb2);
//                if (legend !== null && legend !== undefined && legend !== "") {
//                    if ($('#' + legend).length > 0)
//                        $('#' + legend).text(rgb2);
//                }
//                var colorSelected = "rgb(" + rgb.r + "," + rgb.g + "," + rgb.b + ")";
//                var newColor = getColorBasedTo(colorSelected);
//                if (newColor !== "") {
//                    var newColorRgb = 'rgb(';
//                    if (newColor == '#ffffff')
//                        newColorRgb += '255, 255, 255)';
//                    else
//                        newColorRgb += '0, 0, 0)';
//                    if (fields != null && fields != undefined) {
//                        var listFields = fields.split(',');
//                        listFields.forEach(function (item) {
//                            var inputCurrentValue = $('input[name="' + item + '"]').val();
//                            if ((inputCurrentValue == '' || inputCurrentValue == '#ffffff' || inputCurrentValue == '#000000') && inputCurrentValue != newColorRgb) {
//                                $('input[name="' + item + '"]').val(newColorRgb);
//                                if (newColor == "#000000") {
//                                    $('input[name="' + item + '"]').css('background-color', '#000000');
//                                    $('input[name="' + item + '"]').css('color', 'rgb(221, 221, 221)');
//                                } else {
//                                    $('input[name="' + item + '"]').css('background-color', '#ffffff');
//                                    $('input[name="' + item + '"]').css('color', 'rgb(34, 34, 34)');

//                                }
//                            }
//                        });

//                    }
//                }
//            } 
//            this.patchStyle.backgroundColor = this.color.toString(); // no DOM access
//            this.$display.text(rgb2); // ...and text aside

//            this.currentWidth = this.currentWidth || this.$UI.find('.cp-rgb-r')[0].clientWidth; // first time
//            this.cursorRStyle.left = (rgb.r / 255 * this.currentWidth) + 'px'; // render sliders
//            this.cursorGStyle.left = (rgb.g / 255 * this.currentWidth) + 'px'; // faster than with $().css
//            this.cursorBStyle.left = (rgb.b / 255 * this.currentWidth) + 'px';


//        }

//    };
//    return options;
//}

//function createColorPickerField(element, itemPreview) {
//    if (element !== null && element !== undefined) {
//        var legend = element.attr('name') + "-legend";
//        var fields = element.attr("data-field-depending");
//        var options = generateOptions(itemPreview, legend, fields);
//        var nameElement = element.attr('name');
//        var idTag = "clear-" + nameElement.replace('.', '_');
//        var new_link = generateClearLink(nameElement, idTag);
//        if (element.parent().find("a.color-picker-clear").length === 0) {
//            element.parent().append(new_link);
//            element.parent().css("text-align", "right");
//        }
//        element.colorPicker(options);
//        element.css("margin-bottom", "0px");
//        $('#' + idTag).on('click', function (e) {
//            e.preventDefault();
//            var self = $(this);
//            var name = self.attr('data-element-name');
//            $('input[name="' + name + '"]').val("");
//            $('input[name="' + name + '"]').css("background-color", "");
//            $('input[name="' + name + '"]').css("color", "");
//            if (itemPreview !== null && itemPreview !== undefined) {
//                $(itemPreview).css("color", "");
//            }
//            return false;
//        });
//    }
//}

//function generateClearLink(nameElement, idTag) {
//    var tag = "<a href='#' id='" + idTag + "' class='color-picker-clear' data-element-name='" + nameElement + "'>" + window.translation.clear + "</a>";
//    return tag;
//}

function openVisualSettingHelpText() {
    if ($('#visual-site-config span.button-help').length > 0) {
        $('#visual-site-config span.button-help').each(function () {
            var self = $(this);
            var idValue = self.attr('data-element-to-open');
            if (idValue !== null && idValue !== undefined && idValue !== "") {
                self.on('click', function (e) {
                    if ($('#' + idValue).is(':visible')) {
                        $('#' + idValue).hide();
                        $('#visual-site-config .help-text-section').hide();
                    } else {
                        $('#visual-site-config .help-text-section').hide();
                        $('#' + idValue).show();
                    }
                    
                });
            }
        });
    }
}



function is_valid_rgb_color(value) {
    value = value.toLowerCase();
    var rxValidRgb = /([r][g][b][a]?[(]\s*([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\s*,\s*([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])\s*,\s*([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])(\s*,\s*((0\.[0-9]{1})|(1\.0)|(1)))?[)])/i
    var isRGBColor = rxValidRgb.test(value);
    //var isRGBColor = /rgb\(([01][0-9]?[0-9]?|2[0-4][0-9]|25[0-5]),[\s]?(\d{1,3}),[\s]?(\d{1,3})\)/.test(value);
    return isRGBColor;
}

function rgb2hex(rgb) {
    rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
    return (rgb && rgb.length === 4) ? "#" +
     ("0" + parseInt(rgb[1], 10).toString(16)).slice(-2) +
     ("0" + parseInt(rgb[2], 10).toString(16)).slice(-2) +
     ("0" + parseInt(rgb[3], 10).toString(16)).slice(-2) : '';
}

function getColorBasedTo(currentColor) {
    var newColor = "";
    if (currentColor.indexOf("rgb(") > -1 && currentColor.indexOf(")") > -1) {
        currentColor = currentColor.replace("rgb(", "");
        currentColor = currentColor.replace(")", "");
        var values = currentColor.split(",");
        if (values.length == 3) {
            var value = Math.round(((parseInt(values[0]) * 299) +
                      (parseInt(values[1]) * 587) +
                      (parseInt(values[2]) * 114)) / 1000);
            if (value > 125)
                newColor = "#000000";
            else
                newColor = "#ffffff";
        }
    }
    return newColor;
}


;

/*
  Custom events and methods to implement
*/
$(document).ready(function () {
    //Events where is not required translation
    subsite_modal_display_filename();
});

/*
  Any event or custom logic that needs window.translation must be called here
*/
function after_translation_resource_load_subsite() {
  //Manage modals of subsite (List, Create new)
  subsite_settings_events();
}

function subsite_settings_events() {
  if ($('body').hasClass('backend-page')) {

    //Listing Subsite
    $(document).on('click', 'a#open-subsite-settings', function() {
      var elementReveal = $(this).data('element-reveal');
      var objectTable = $("#subsite-table");

      $('#' + elementReveal).foundation('open');
      //Reload elements inside modal
      $('#' + elementReveal).foundation();

      $.ajax({
        method: "POST",
        url: "/Subsite/GetSubsitesInfo",
        data: {},
        beforeSend: function () {
            $('#' + elementReveal).find('.processing_screen').show();

            datatable_destory_by_id('subsite-table');
            $('#subsite-table tbody').empty();
        }
      }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if (jsonResult.length > 0) {
          for (var i = 0; i < jsonResult.length; i++) {
            var subsiteInfo = jsonResult[i];
            var info_table =  '<tr>' +
                                  '<td>' + 
                                      subsiteInfo.Name + 
                                  '</td>' +
                                  '<td>' + 
                                      subsiteInfo.Path + 
                                  '</td>' +
                                  '<td>' +
                                      '<a class="edit-subsite" data-element-reveal="subsite-form-modal" data-subsiteid="' + subsiteInfo.Id + '" data-name="' + subsiteInfo.Name + '" data-path="' + subsiteInfo.Path + '">' +
                                          window.translation.edit_subsite +
                                      '</a>' +
                                  '</td>' +
                              '</tr>';

            $("#subsite-table tbody").append(info_table);
          }
          datatable_initialize_notAjax_with_params(objectTable, null, null, false, false, false);
        }
        else {
            var empty_subsite = '<tr class="odd"><td valign="top" colspan="3" class="dataTables_empty">' + window.translation.nothing_records_found + '</td></tr>';
            $("#subsite-table tbody").append(empty_subsite);
        }

        //Hide processing screen
        $('#' + elementReveal).find('.processing_screen').hide();
      });
    });

    //Subsite Edit
      $(document).on('click', 'a[data-element-reveal="subsite-form-modal"]', function () {
      var elementReveal = $(this).data('element-reveal');
      var subsiteId = $(this).data('subsiteid');

      //Load info of subsite in link
      var name = $(this).data('name');
      var path = $(this).data('path');
      var urlReserved = $(this).data('urlReserved');

      $('#' + elementReveal).foundation('open');
      //Reload elements inside modal
      $('#' + elementReveal).foundation();

      if(subsiteId === 0) {
        //Remove 'remove' link
        $('#' + elementReveal).find('a.delete_subsite').hide();
        //Remove name of file uploaded
        $('#' + elementReveal).find('.file-upload-name').empty();
        //Display section to assign regions where will be located default blocks
        $('#' + elementReveal).find('.region-layout-container').show();

        $('#' + elementReveal).find('#enable_source_tracking').prop("checked", true);
      }
      else {
        //Display 'remove' link
        $('#' + elementReveal).find('a.delete_subsite').show();
        //Hide section of fields regions to assign default blocks
        $('#' + elementReveal).find('.region-layout-container').hide();
      }

      $.ajax({
          method: "POST",
          url: "/Subsite/GetSubsiteInfo",
          data: { subsiteId: subsiteId },
          beforeSend: function () {
              $('#' + elementReveal).find('.processing_screen').show();
          }
      }).done(function (data) {
          var jsonResult = JSON.parse(data);

          if(jsonResult) {
              //Populate fields layoutHomepage and layoutInternal
              var layoutsHomepage = jsonResult['layoutsHomepage'];
              var layoutsInternal = jsonResult['layoutsInternal'];

              $('#' + elementReveal).find('select[name="layout_homepage"]').empty();
              $('#' + elementReveal).find('select[name="layout_internal"]').empty();
              $('#' + elementReveal).find('select[name="layout_homepage"]').append('<option value="">' + window.translation.select_layout + '</option>');
              $('#' + elementReveal).find('select[name="layout_internal"]').append('<option value="">' + window.translation.select_layout + '</option>');
              $('#' + elementReveal).find('select[name="region_homepage"]').append('<option value="">Select a region</option>');
              $('#' + elementReveal).find('select[name="region_internal"]').append('<option value="">Select a region</option>');

              //Assign layouts to populate
              if(layoutsHomepage.length > 0) {
                  layoutsHomepage.forEach(function(layout) {
                      var layoutId = layout.LayoutId;
                      var layoutName = layout.Name;

                      $('#' + elementReveal).find('select[name="layout_homepage"]').append('<option value="' + layoutId + '">' + layoutName + '</option>');
                  });
              }
              if(layoutsInternal.length > 0) {
                  layoutsInternal.forEach(function(layout) {
                      var layoutId = layout.LayoutId;
                      var layoutName = layout.Name;

                      $('#' + elementReveal).find('select[name="layout_internal"]').append('<option value="' + layoutId + '">' + layoutName + '</option>');
                  });
              }
          }

          //Populate data of subsite
          if(subsiteId !== 0) {
              //Load data in link
              $('#' + elementReveal).find('input[name="subsiteId"]').val(subsiteId);
              $('#' + elementReveal).find('input[name="name_subsite"]').val(name);
              $('#' + elementReveal).find('input[name="path_subsite"]').val(path);
              $('#' + elementReveal).find('input[name="subsitePath"]').val(path);

              $('#' + elementReveal).find('h3.edit-subsite').show();
              $('#' + elementReveal).find('h3.create-subsite').hide();

              if(jsonResult['subsiteInfo']) {
                  $('#' + elementReveal).find('select[name="layout_homepage"]').val(jsonResult['subsiteInfo'].LayoutHomepage);
                  $('#' + elementReveal).find('select[name="layout_internal"]').val(jsonResult['subsiteInfo'].LayoutInternal);
                  $('#' + elementReveal).find('input[name="company_id"]').val(jsonResult['subsiteInfo'].CompanyId);
                  $('#' + elementReveal).find('input[name="campaign_id"]').val(jsonResult['subsiteInfo'].CampaignId);
                  $('#' + elementReveal).find('textarea[name="solr_query"]').val(jsonResult['subsiteInfo'].SolrQuery);
                  $('#' + elementReveal).find('input[name="include_external_opportunities"]').prop('checked', jsonResult['subsiteInfo'].IncludeExternalOpportunities);
                  $('#' + elementReveal).find('input[name="enable_source_tracking"]').prop('checked', jsonResult['subsiteInfo'].EnableSourceTracking);

                  //Display link with image loaded
                  if(jsonResult['subsiteInfo'].LogoUrl && jsonResult['subsiteInfo'].LogoUrl != null) {
                    var filename = getParameterByNameFromURL('file', jsonResult['subsiteInfo'].LogoUrl);
                    var htmlfile = window.translation.file_selected + ' <a href="'+ jsonResult['subsiteInfo'].LogoUrl +'">'+ filename +'</a>';
                    $('#' + elementReveal).find('span.file-upload-name').html(htmlfile);
                  }
              }
          }
          else {
              //Reset all fields of modal subsite
              $('#' + elementReveal).find('input[name="subsiteId"]').val('0');
              $('#' + elementReveal).find('input[type="text"]').val('');
              $('#' + elementReveal).find('textarea').val('');
              $('#' + elementReveal).find('input[name="subsitePath"]').val('');

              $('#' + elementReveal).find('h3.edit-subsite').hide();
              $('#' + elementReveal).find('h3.create-subsite').show();
          }

          //Initialize jquery-validate
          initiate_jquery_validate_reveal($('#subsite-form-management'), 'subsite-form-management');

          //Remove labels error-custom
          $('#' + elementReveal).find('label.error').remove();

          $('#' + elementReveal).find('.processing_screen').hide();              
      });
    });

    //Save Subsite Form
    $(document).on('click', 'form#subsite-form-management button.save-subsite', function() {
        var form = $('form#subsite-form-management');
        var processing_screen = form.find('.processing_screen');

        //Validate if form is valid
        if(form.valid()) {
            var formData = form.serializeObject();
            var fileUploads = form.find('input[type="file"]'); //Get input files to upload to azure

            //Upload image of logo if exists
            var xhrs = [];
            var undCounter = 0;

            $.each(fileUploads, function (i, f) {
                var files = fileUploads[i].files;
                var private = false; //Image will not be private
                var fileFormId = 0; //Image will not be associated to any formBlock
                var requiresLogin = false; //Image will not requires login to open it
                var fileUrl = '';

                if (files.length > 0) {
                    if (window.FormData !== undefined) {
                        var data = new FormData();
                        data.append("private", private);
                        data.append("formId", 0);
                        data.append("requiresLogin", false);
                        data.append("inputSource", fileUploads[i].getAttribute("name"));
                        for (var x = 0; x < files.length; x++) {
                            data.append("file" + x, files[x]);
                        }
                        var xhr = $.ajax({
                          type: "POST",
                          url: "/ARS/UploadFile",
                          contentType: false,
                          processData: false,
                          data: data,
                          beforeSend: function () {
                            processing_screen.show();
                          },
                        }).done(function (data) {
                            fileUrl = '';
                            var jsonResult = JSON.parse(data);

                            if (jsonResult.status == '200') {
                                if (jsonResult.Urls != "" && jsonResult.Urls != null) {

                                    jsonResult.Urls.forEach(function (item) {
                                        if (item.fileUrl != '' && item.fileUrl != null) {
                                            if (fileUrl == '') {
                                                fileUrl = item.fileUrl;
                                            }
                                            else {
                                                fileUrl = fileUrl + ',' + item.fileUrl;
                                            }
                                        }
                                    });
                                }
                            }

                            var name = f.name;
                            formData[name] = fileUrl;

                            processing_screen.hide();
                            return false;
                        });

                        xhrs.push(xhr);

                    } else {
                        var name = f.name;
                        formData[name] = fileUrl;
                        undCounter = undCounter + 1;
                    }
                }
            });

            $.when.apply($, xhrs).done(function () {
              undCounter = 0;
              subsite_submit_form(formData);
            });

            if (undCounter > 0) {
              subsite_submit_form(formData);
            }
        }
        else {
            Swal.fire({
                title: '',
                icon: 'warning',
                text: window.translation.enter_all_required,
                confirmButtonText: "Ok"
            });
        }

        return false;
    });

    //Delete subsite
    $(document).on('click', 'form#subsite-form-management a.delete_subsite', function() {
        var subsiteId = $('form#subsite-form-management').find('input[name="subsiteId"]').first().val();
        var currentPath = window.location.pathname;
        var pathSubsite = '/' + $('form#subsite-form-management').find('input[name="subsitePath"]').first().val();

        Swal.fire({
            title: window.translation.are_you_sure,
            text: window.translation.do_you_want_delete_subsite,
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#DD6B55',
            confirmButtonText: window.translation.yes_delete_it,
            closeOnConfirm: true

        }).then(function (result) {
            if (result.isConfirmed) {
                $.ajax({
                    method: "POST",
                    url: "/Subsite/DeleteSubsite",
                    data: { subsiteId: subsiteId.toString() },
                    beforeSend: function () {
                        $('#subsite-form-modal').find('.processing_screen').show();
                    }
                }).done(function (data) {
                    var jsonResult = JSON.parse(data);

                    if (jsonResult) {
                        if (jsonResult.status === 'ok') {

                            Swal.fire({
                                title: "",
                                icon: "success",
                                text: window.translation.subsite_deleted_successfully,
                                confirmButtonText: "Ok",
                            }).then(function (result) {
                                if (pathSubsite === currentPath) {
                                    window.location = '/';
                                }
                                window.location.reload();
                            
                            });

                        }
                        else {

                            Swal.fire({
                                title: "",
                                icon: "warning",
                                text: jsonResult.log,
                                confirmButtonText: "Ok",
                            }).then(function (result) {
                                $('#subsite-form-modal').find('.processing_screen').hide();
                            });

                        }
                    }
                });

            }
        });

    });

    //Get regions by layout - Homepage
    // $(document).on( 'change',
    //                 'form#subsite-form-management select[name="layout_homepage"], form#subsite-form-management select[name="layout_internal"]',
    //                 function() {
    //   var layoutValue = $(this).val();
    //   var regionFieldName = $(this).data('region-fieldname');
    //   var fieldToPopulate = $(this).parents('form').first().find('select[name="'+ regionFieldName +'"]');
    //   var processing_screen = $(this).parents('.reveal').first().find('.processing_screen');

    //   if(layoutValue) subsite_populate_regions_by_layout(layoutValue, processing_screen, fieldToPopulate);
    // });
  }
}

function subsite_submit_form(formData) {
  if(formData) {
    $.ajax({
        method: "POST",
        url: "/Subsite/AddUpdateSubsite",
        data: formData,
        beforeSend: function () {
            $('#subsite-form-modal').find('.processing_screen').show();
        }
    }).done(function (data) {
        var jsonResult = JSON.parse(data);

        if(jsonResult) {
            if (jsonResult.status === 'ok') {
                Swal.fire({
                    title: "",
                    icon: "success",
                    text: window.translation.subsite_saved_successfully,
                    confirmButtonText: "Ok",
                }).then(function (result) {
                    window.location.reload();
                });

            }
            else {
                Swal.fire({
                    title: "",
                    icon: "warning",
                    text: jsonResult.log,
                    confirmButtonText: "Ok",

                }).then(function (result) {
                    $('#subsite-form-modal').find('.processing_screen').hide();
                });

            }
        }
    });
  }
}

function subsite_modal_display_filename() {
  if($('#subsite-form-modal').length > 0) {
    // Attach the change event listener to change the label of all input[type=file] elements
      $(document).on('change', '#subsite-form-management input[type=file]:not(".multiple-file")', function(){
      var sectionFile = $(this).parent();
      var $input = $(this)[0];
      var filename = window.translation.file_selected + ' <i>' + $input.files[0].name + '</i>';
      sectionFile.find('.file-upload-name').remove();
      sectionFile.find('input[type=file]').after('<span class="file-upload-name">'+ filename +'</span>');
      sectionFile.find('label.file-upload').text(window.translation.upload_a_new_file);
    });
  }
}

function subsite_populate_regions_by_layout(layoutValue, processing_screen, fieldToPopulate) {
  $.ajax({
    method: "POST",
    url: "/Subsite/GetRegionsByLayout",
    data: { layoutId: layoutValue },
    beforeSend: function () {
      processing_screen.show();
    }
  }).done(function (data) {
    var jsonResult = JSON.parse(data);

    if(jsonResult) {
      if(jsonResult.regions) {
        //Populate select
        fieldToPopulate.empty();
        fieldToPopulate.append('<option>Select a region</option>');

        jsonResult.regions.forEach(function(region) {
          fieldToPopulate.append('<option value=' + region.ID + '>' + region.name + '</option>')
        });
      }
    }

    processing_screen.hide();
  });
}
;

$(document).ready(function () {
  //Events without translations
});

//Load methods after load translations
function after_translation_resource_load_multinstance_tracking() {
  //Display link back to corporate site
  multinstance_tracking_display_link_back_corporate_site();
}

function multinstance_tracking_display_link_back_corporate_site() {
  var cookieCMIntegration = _eventReadCookie('cmintegration');
  var subsiteCookieInfo = _eventReadCookie('subsite');

  if(cookieCMIntegration) {
    var jsonCMIntegration = JSON.parse(cookieCMIntegration);
    var linkBackCorporateSite = '<a class="back_corporate_site" href="'+ jsonCMIntegration['returnUrl'] +'">'+ window.translation.back_corporate_site +'</a>';

    if((subsiteCookieInfo && subsiteCookieInfo.indexOf('enabled=true') === -1) || !subsiteCookieInfo) {
      //Append to body
      $('body').prepend(linkBackCorporateSite);
    }
  }
}

function _eventReadCookie(name) {
    var nameEQ = name + '=';
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
};
function after_translation_resource_load_utils() {
    expandable_behaviors();
    eventExpandibleSection();
}



function expandable_behaviors() {

    if ($('[data-expandable]').length > 0) {
        $('[data-expandable]:not(.expandable-added)').each(function () {

            var selfContent = null;
            var opened = false;
            var dataTypeExpandable = "";
            if ($(this).attr('data-type-expandable') !== null && $(this).attr('data-type-expandable') !== undefined && $(this).attr('data-type-expandable') !== '') {
                dataTypeExpandable = $(this).attr('data-type-expandable');
                if (dataTypeExpandable === 'form') {
                    selfContent = $(this).parents('form').first();
                    opened = true;
                } else {
                    selfContent = $(this).parents('fieldset').first();
                }

            } else {
                selfContent = $(this).parents('fieldset').first();
            }

            var elem = $(this);
            elem.addClass('expandable-added');
            
            if (dataTypeExpandable === 'is-button-class' && elem.hasClass('current-occ')) {
                opened = true;
            }
            elem.attr({
                'aria-expanded': opened,
                'aria-controls': elem.attr('data-expandable')
            });

            var expandable = selfContent.find('#' + elem.attr('data-expandable')).attr({
                'aria-hidden': !opened,
            });

            expandable.addClass('expandable');

            if (dataTypeExpandable === 'is-button-class') {
                if (opened === false) {
                    elem.addClass('button-open');
                } else {
                    elem.addClass('button-close');
                }
            }


        });

    }

    validate_tab_for_opportunity_detail_list();
    validate_tab_search_result_in_mobile();



}

function eventExpandibleSection() {
    $(document).on('click', '[data-expandable]', function (e) {
        var elem = $(this);
        e.preventDefault();
        var selfContent = null;
        var opened = false;
        var dataTypeExpandable = "";
        if ($(this).attr('data-type-expandable') !== null && $(this).attr('data-type-expandable') !== undefined && $(this).attr('data-type-expandable') !== '') {
            dataTypeExpandable = $(this).attr('data-type-expandable');
            if (dataTypeExpandable === 'form') {
                selfContent = $(this).parents('form').first();
                opened = true;
            } else {
                selfContent = $(this).parents('fieldset').first();
            }

        } else {
            selfContent = $(this).parents('fieldset').first();
        }

        var expandable = selfContent.find('#' + elem.attr('data-expandable')).attr({
            'aria-hidden': !opened,
        });


        var expanded = $(this).attr('aria-expanded') === 'false' ? false : true;

        elem.attr('aria-expanded', !expanded);

        if (expanded === true) {
            /*Closing*/
            expandable.hide('fast', function () {
                expandable.attr('aria-hidden', expanded);
                elem.removeClass('button-close');
                elem.addClass('button-open');
            });




        } else {
            expandable.show('fast', function () {
                expandable.attr('aria-hidden', expanded);
                elem.addClass('button-close');
                elem.removeClass('button-open');
            });

        }
        return false;
    });
}
function validate_tab_for_opportunity_detail_list() {

    if ($('body').hasClass('desktop'))
        return false;

    if ($('body').hasClass('volunteer-opportunity-detail-page') && $('body').find('.opportunity-list-section .dropdown-section').length === 0) {

        $('body').find('.opportunity-list-section .fieldset-step .fieldset-title').on('click', function (e) {
            e.preventDefault();
            var itemTitle = $(this);
            itemTitle.find('.expandable-button-section button').trigger('click');
            return false;
        });
    }
}

function validate_tab_search_result_in_mobile() {
    if ($('body').hasClass('desktop'))
        return false;
    if ($('body').find('.searchresultblock').length > 0) {
        $('body').find('.searchresultblock').each(function () {
            var block = $(this);
            if (block.find('a.button-expandable-advanced-search-section').length > 0) {
                block.find('a.button-expandable-advanced-search-section').trigger('click');
            }
        });
    }
}

function isValidSalesforceId(id) {
    if (typeof id !== 'string') {
        return false;
    }

    const salesforceIdRegex = /^[a-zA-Z0-9]{15}([a-zA-Z0-9]{3})?$/;
    if (!salesforceIdRegex.test(id)) {
        return false;
    }
    if (id.length === 18) {
        return isValidChecksum(id);
    }
    return id.length === 15;
}


function isValidChecksum(id) {
    const baseId = id.substring(0, 15);
    const checksum = id.substring(15);
    const generatedChecksum = generateChecksum(baseId);
    return checksum === generatedChecksum;
}

function generateChecksum(baseId) {
    let checksum = '';
    for (let i = 0; i < 3; i++) {
        let flags = 0;
        for (let j = 0; j < 5; j++) {
            const charIndex = i * 5 + j;
            const char = baseId.charAt(charIndex);
            if (char >= 'A' && char <= 'Z') {
                flags += 1 << j;
            }
        }
        if (flags <= 25) {
            checksum += String.fromCharCode(65 + flags); // A-Z
        } else {
            checksum += String.fromCharCode(48 + (flags - 26)); // 0-9
        }
    }

    return checksum;
};
$(document).ready(function () {
    if (!$('body').hasClass('hoc-volunteer-system')) {
        return;
    }
    hocvolunteer_create_volunteer_behaviors();
    hocvolunteer_special_behaviors();
    hocvolunteer_create_team_member_behavior();
    wait_translation_resource_hoc_volunteer();
    hocvolunteer_organizationcoordinator();
    hocvolunteer_display_scheduler_forms();
    hocvolunteer_export_table_events();
    locationTimezonEvents();
    hocvolunteer_add_connection_page();
    fetchQRStatus();
});

function hocvolunteer_add_connection_page() {

    if ($('body.page-partner-portal-add-connection').length > 0) {
        $('.datetime-specific-connection.formBlock').show();
        $('.individual-scheduled-connection.formBlock').hide();
    }

    jQuery(document).ajaxComplete(function (event, xhr, settings) {

        if ($('body.page-partner-portal-add-connection').length > 0) {
            $('.datetime-specific-connection.formBlock').show();
            $('.individual-scheduled-connection.formBlock').hide();
        }

        if ($('body.page-partner-portal-add-connection').length > 0 &&
            $('[name="schedule_type"]').length > 0 &&
            $('.individual-scheduled-connection.formBlock').length > 0 &&
            $('.datetime-specific-connection.formBlock').length > 0
        ) {
            if ($('[name="schedule_type"]').val() == 'Individually Scheduled') {
                $('.individual-scheduled-connection.formBlock').show();
                $('.datetime-specific-connection.formBlock').hide();
            }
            else {
                $('.datetime-specific-connection.formBlock').show();
                $('.individual-scheduled-connection.formBlock').hide();
            }
        }
    });
}

function hocvolunteer_display_scheduler_forms() {
    $('.no-regular-schedule-form').hide();
    $('.regular-schedule-form').hide();
    if ($('.regular-type-selector select').length > 0) {
        $('.regular-type-selector select').on('change', function () {
            var value = $(this).val();
            $('.no-regular-schedule-form').hide();
            $('.regular-schedule-form').hide();
            if (value === 'Yes') {
                $('.regular-schedule-form').show();
            } else if (value === 'No') {
                $('.no-regular-schedule-form').show();
            }
        });
    }

    if ($('.regular-type-selector input[type="radio"]').length > 0) {
        $('.regular-type-selector input[type="radio"]').on('change', function () {
            var value = $('.regular-type-selector input[type="radio"]:checked').val();
            $('.no-regular-schedule-form').hide();
            $('.regular-schedule-form').hide();
            if (value === 'Yes') {
                $('.regular-schedule-form').show();
            } else if (value === 'No') {
                $('.no-regular-schedule-form').show();
            }
        });
    }
}


function wait_translation_resource_hoc_volunteer() {
    var timer = setInterval(function () {
        if (window.translation != null) {
            clearInterval(timer);
            after_translation_resource_load_hoc_volunteer();
        }
    }, 100);
}


function after_translation_resource_load_hoc_volunteer() {
    var languageText = {
        "lengthMenu": window.translation.datatable_length,
        "zeroRecords": window.translation.datatable_zero_records,
        "info": window.translation.datatable_info_report,
        "infoEmpty": window.translation.datatable_info_empty,
        "paginate": {
            "first": window.translation.datatable_first,
            "last": window.translation.datatable_last,
            "next": window.translation.datatable_next,
            "previous": window.translation.datatable_previous
        },
        "processing": "<span>" + window.translation.please_wait + "</span><img src='/img/default/spinner.svg' alt='loading'/>"
    };


    hocvolunteer_create_connection_form();
    hocvolunteer_datatable_widget_reporting(window.rowPerPage, languageText);

    hocvolunteer_datatable_get_reporting_data();

    hocvolunteer_event_verify_processing_reports();

    cancel_occurrence_event();
}

function hocvolunteer_export_table_to_csv($table, filename) {
    var $headers = $table.find('tr:has(th)')
        , $rows = $table.find('tr:has(td)')

        // Temporary delimiter characters unlikely to be typed by keyboard
        // This is to avoid accidentally splitting the actual contents
        , tmpColDelim = String.fromCharCode(11) // vertical tab character
        , tmpRowDelim = String.fromCharCode(0) // null character

        // actual delimiter characters for CSV format
        , colDelim = '","'
        , rowDelim = '"\r\n"';

    // Grab text from table into CSV formatted string
    var csv = '"';
    csv += formatRows($headers.map(grabRow));
    csv += rowDelim;
    csv += formatRows($rows.map(grabRow)) + '"';

    // Data URI
    var csvData = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csv);

    var ua = navigator.userAgent.toLowerCase();
    if (ua.indexOf('safari') != -1) {
        if (ua.indexOf('chrome') === -1) {
            //Safari validation
            //Add csvData to form and submit form to download file via server
            $('input[name="csvData"]').val(csv);
            $('#export-csv-safari').submit();
        }
        else {
            if (window.navigator.msSaveOrOpenBlob) {
                var blob = new Blob([decodeURIComponent(encodeURI(csv))], {
                    type: 'text/csv;charset=utf-8;'
                });
                navigator.msSaveBlob(blob, filename);
            } else {
                $(this)
                    .attr({
                        'download': filename
                        , 'href': csvData
                        , 'target': '_blank'
                    });
            }
        }
    }
    else {
        if (window.navigator.msSaveOrOpenBlob) {
            var blob = new Blob([decodeURIComponent(encodeURI(csv))], {
                type: "text/csv;charset=utf-8;"
            });
            navigator.msSaveBlob(blob, filename);
        } else {
            $(this)
                .attr({
                    'download': filename
                    , 'href': csvData
                });
        }
    }

    //------------------------------------------------------------
    // Helper Functions 
    //------------------------------------------------------------
    // Format the output so it has the appropriate delimiters
    function formatRows(rows) {
        return rows.get().join(tmpRowDelim)
            .split(tmpRowDelim).join(rowDelim)
            .split(tmpColDelim).join(colDelim);
    }
    // Grab and format a row from the table
    function grabRow(i, row) {

        var $row = $(row);
        var $cols = $row.find('td');
        if (!$cols.length) $cols = $row.find('th');

        return $cols.map(grabCol)
            .get().join(tmpColDelim);
    }
    // Grab and format a column from the table 
    function grabCol(j, col) {
        var $hasSpan = $(col).find('span').length;
        var $textResultWithSpan = '';
        var $col = $(col),
            $text = $col.text().trim();

        if ($hasSpan > 0) {
            $(col).find('span').each(function () {
                var textSpan = $(this).text();

                if ($textResultWithSpan) {
                    $textResultWithSpan = $textResultWithSpan + ' ' + textSpan;
                }
                else {
                    $textResultWithSpan = textSpan;
                }
            });

            return $textResultWithSpan.replace('"', '""'); // escape double quotes
        }

        return $text.replace('"', '""'); // escape double quotes
    }
}


function hocvolunteer_export_table_events() {
    $(".export_csv_testing").on('click', function (event) {

        if ($('#report-data-matrix-summary').length > 0) {
            //Generate clone of reportSummary when is matrix and append data
            var tableSummaryMatrix = $('#report-data-matrix-summary').clone();
            var tableContentMatrix = $('#report-data').clone();
            var countRow = 0;

            //Add td empty to 2 first columns of table
            tableSummaryMatrix.find('thead tr:nth-child(1)').append(hocvolunteer_event_th_empty_generator(2));
            tableSummaryMatrix.find('thead tr:nth-child(2)').append(hocvolunteer_event_th_empty_generator(2));

            tableSummaryMatrix.find('tbody tr').each(function () {
                var trObject = $(this);

                if (countRow === 0) {
                    //Append th
                    tableContentMatrix.find('thead th').each(function () {
                        var elementTd = $(this);
                        var valueElement = elementTd.text().trim();

                        trObject.append('<td>' + valueElement + '</td>');
                    });
                }
                else {
                    //Append th
                    var elementTr = tableContentMatrix.find('tbody tr:nth-child(' + parseInt(countRow) + ')');

                    elementTr.find('td').each(function () {
                        var elementTd = $(this);

                        trObject.append(elementTd);
                    });
                }

                countRow = countRow + 1;
            });

            // CSV
            hocvolunteer_export_table_to_csv.apply(this, [tableSummaryMatrix, 'report.csv']);

            // IF CSV, don't do event.preventDefault() or return false
            // We actually need this to be a typical hyperlink
        }
        else {
            if ($('#report-data').hasClass('table-tabular')) {
                // CSV
                hocvolunteer_export_table_to_csv.apply(this, [$('#report-data-copy'), 'report.csv']);
            }
            else {
                // CSV
                hocvolunteer_export_table_to_csv.apply(this, [$('#report-data'), 'report.csv']);
            }
            // IF CSV, don't do event.preventDefault() or return false
            // We actually need this to be a typical hyperlink
        }
    });
}


function hocvolunteer_event_verify_processing_reports() {
    var verifyProcessingRowsInterval = setInterval(function () {
        //Get if site is sharingPortalPlus
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        var countRows = $('#report-listing').find('tbody').find('tr').length;
        var countRowsCompleted = 0;

        $('#report-listing').find('tbody').find('tr').each(function () {
            var selfObject = $(this);
            var status = $(this).find('td:nth-child(2)');

            if (status.text()) {
                status = status.text().trim();

                if (status !== 'Processing') {
                    countRowsCompleted = countRowsCompleted + 1;
                }
                else {
                    //Verify status
                    var reportId = $(this).find('input[name="reportId"]').val();
                    var lastInstanceId = $(this).find('input[name="lastInstanceId"]').val();
                    $.ajax({
                        type: 'POST',
                        url: urlSite + 'partner-portal/report-data/' + reportId + '/' + lastInstanceId,
                        success: function (data) {
                            data = JSON.parse(data);

                            /*if(data.status === 'ok') {
                                //Edit row to change label and controls
                                selfObject.find('td:nth-child(2)').find('img').remove();
                                selfObject.find('td:nth-child(2)').find('span').text('Completed');
                                selfObject.find('td:nth-child(2)').removeClass('new processing completed completederror');
                                selfObject.find('td:nth-child(2)').addClass('completed');

                                //Replace columns controls
                                selfObject.find('td:nth-child(4)').find('span').fadeOut();
                                selfObject.find('td:nth-child(4)').find('.controls').fadeIn();
                            }*/
                        }
                    });
                }
            }
        });

        if (countRows === countRowsCompleted) {
            //Stop timer
            clearInterval(verifyProcessingRowsInterval);
        }
    }, 5000);
}

function hocvolunteer_event_th_empty_generator(count) {
    var tdResult = '';

    for (var i = 0; i < count; i++) {
        tdResult = tdResult + '<th></th>';
    }

    return tdResult;
}

function hocvolunteer_event_print_rows_grouping_summary(group, data, aggregateColumnInfo, aggregateColumnInfoObj, countGrouping, groupingDownJSON, countColumns, rowCountPosition) {
    var key = group.key;
    var label = group.label;
    var grouping = group.groupings;
    var groupLabel = groupingDownJSON[countGrouping].label;
    var groupLabelValue = (groupLabel.split(':').length > 1) ? groupLabel.split(':')[1] : groupLabel;
    var rowCount = (data[key + '!T'] != undefined && data[key + '!T'].aggregates[rowCountPosition] != undefined && data[key + '!T'].aggregates[rowCountPosition].label != undefined) ? data[key + '!T'].aggregates[rowCountPosition].label : '';
    var columnsInfo = $('input[name="columns"]').val();
    var objectAgreggateColumnInfo = JSON.parse(aggregateColumnInfo);

    if (objectAgreggateColumnInfo.length > 1) {
        //Search aggregates to include in row of summary
        if (columnsInfo) {
            var objectColumnsInfo = JSON.parse(columnsInfo);
            var countColumnsTotal = 0;
            var countAggregates = 0;
            var foundAggregate = false;

            //Calculate size of total record before summarized columns
            objectColumnsInfo.forEach(function (column) {
                var mname = column.mname;
                var hasAggregate = false;

                objectAgreggateColumnInfo.forEach(function (aggregateColumn) {
                    var mnameAggregate = aggregateColumn.split('!')[1];

                    if (mname === mnameAggregate) {
                        hasAggregate = true;
                        foundAggregate = true;
                    }
                });

                if (hasAggregate === false && !foundAggregate) {
                    countColumnsTotal++;
                }
            });

            //Append row summary
            var trSummary = '<tr class="rowSummary"><td class="parent parent-' + countGrouping + '" colspan="' + countColumnsTotal + '"><span class="title-parent-summary">' + groupLabelValue + ': </span><span class="label-parent-summary">' + label + ' (' + window.translation.total + ': ' + rowCount + ' ' + window.translation.records + ')</span></td>';

            objectColumnsInfo.forEach(function (column) {
                var mname = column.mname;
                var positionAggregate = 0;

                objectAgreggateColumnInfo.forEach(function (aggregateColumn) {
                    if (aggregateColumn !== 'RowCount') {
                        var mnameAggregate = aggregateColumn.split('!')[1];

                        if (mname === mnameAggregate) {
                            var valueAggregate = data[key + '!T'].aggregates[positionAggregate].label;
                            trSummary += '<td class="parent"><span class="label-parent-summary">' + valueAggregate + '</span></td>';

                            countAggregates++;
                        }
                        else {
                            positionAggregate++;
                        }
                    }
                    else {
                        positionAggregate++;
                    }
                });
            });

            //Add td empty to trSummary if are missing columns
            var missingColumns = objectColumnsInfo.length - countColumnsTotal - countAggregates;

            if (missingColumns > 0) {
                trSummary += hocvolunteer_event_td_empty_generator(missingColumns);
            }
        }

        trSummary += '</tr>';
    }
    else {
        //Append row summary
        var trSummary = '<tr><td class="parent parent-' + countGrouping + '" colspan="' + countColumns + '"><span class="title-parent-summary">' + groupLabelValue + ': </span><span class="label-parent-summary">' + label + ' (' + window.translation.total + ':' + rowCount + ' ' + window.translation.records + ')</span></td></tr>';
    }

    $('table#report-data').find('tbody').append(trSummary);

    if (grouping.length > 0) {
        countGrouping = countGrouping + 1;
        // Validate if there is more than 2 sub groups and adding aditional th
        const groupLevel = $('input#levelDeepSumary').val();
        if (groupLevel !== '') {
            const ngroupLevel = parseInt(groupLevel);
            $('input#levelDeepSumary').val(ngroupLevel + 1);
            if (ngroupLevel > 2) {
                var headerCount = $('table#report-data thead tr th').length;
                var columnRowCount = $('table#report-data tbody tr:not(.rowSummary):first td').length;
                if ($('table#report-data thead tr th.adition').length === 0 && (headerCount < columnRowCount || columnRowCount == 0)) {
                    $('table#report-data thead tr').prepend('<th class="adition center"></th>');
                }

            }
        }
        grouping.forEach(function (group) {
            hocvolunteer_event_print_rows_grouping_summary(group, data, aggregateColumnInfo, aggregateColumnInfoObj, countGrouping, groupingDownJSON, countColumns, rowCountPosition);
        });
    }
    else {
        var dataRow = data[key + '!T'];
        var rows = dataRow.rows;
        var aggregates = dataRow.aggregates;
        var countColumns = 0;

        if (rows) {
            rows.forEach(function (row) {
                var dataCells = row.dataCells;
                var trClass = ($('#report-data tbody tr:last-child td[class*=parent]').length > 0) ? $('#report-data tbody tr:last-child td[class*=parent]').attr('class') : '';
                var stringTr = '<tr>';
                var countTd = 0;

                if (countColumns === 0) {
                    countColumns = row.dataCells.length;
                }

                dataCells.forEach(function (cell) {
                    var thParent = $('table#report-data thead tr th:eq(' + countTd + ')');
                    var tdClassCenter = (thParent.hasClass('center')) ? 'center' : '';

                    if (countTd === 0) {
                        stringTr = stringTr + '<td class="' + tdClassCenter + ' ' + trClass + '">' + cell.label + '</td>';
                    }
                    else {
                        stringTr = stringTr + '<td class="' + tdClassCenter + '">' + cell.label + '</td>';
                    }

                    countTd = countTd + 1;
                });

                stringTr = stringTr + '</tr>';

                $('table#report-data').find('tbody').append(stringTr);
            });
        }
        if (aggregates) {
            // Summary
            var position = 0;
            aggregates.forEach(function (aggregate) {
                var columnInfoAggregate = objectAgreggateColumnInfo[position];

                if (columnInfoAggregate !== 'RowCount') {
                    var columnAggregateInfo = aggregateColumnInfoObj.filter(function (aggregateInfo) { return aggregateInfo.mname === columnInfoAggregate; });
                    var label = columnAggregateInfo[0].label;
                    var valueAggregate = aggregate.label;
                    var stringTr = '<tr class="rowSummary grandTotal"><td colspan="' + countColumns + '">' + label + ': ' + valueAggregate + '</td></tr>';

                    $('table#report-data').find('tbody').append(stringTr);
                }

                position = position + 1;
            });
        }
    }
}


function hocvolunteer_event_print_gran_total_row_summary(data, aggregateColumnInfo, aggregateColumnInfoObj, countColumns, rowCountPosition) {
    var objectAgreggateColumnInfo = JSON.parse(aggregateColumnInfo);
    var columnsInfo = $('input[name="columns"]').val();
    var dataRowTotal = data['T!T'];
    var aggregates = dataRowTotal.aggregates;
    var rowCount = (data['T!T'] != undefined && data['T!T'].aggregates[rowCountPosition] != undefined && data['T!T'].aggregates[rowCountPosition].label != undefined) ? data['T!T'].aggregates[rowCountPosition].label : '';

    // Add total of aggregates
    if (aggregates) {
        // Summary
        var position = 0;
        aggregates.forEach(function (aggregate) {
            var columnInfoAggregate = objectAgreggateColumnInfo[position];

            if (columnInfoAggregate !== 'RowCount') {
                var columnAggregateInfo = aggregateColumnInfoObj.filter(function (aggregateInfo) { return aggregateInfo.mname === columnInfoAggregate; });
                var label = columnAggregateInfo[0].label;
                var valueAggregate = aggregate.label;
                var stringTr = '<tr class="rowSummary grandTotal"><td colspan="' + countColumns + '"><span class="label-parent-summary">Total (' + label + '): ' + valueAggregate + '</span></td></tr>';

                $('table#report-data').find('tbody').append(stringTr);
            }

            position = position + 1;
        });
    }

    if (objectAgreggateColumnInfo.length > 1) {
        //Search aggregates to include in row of summary
        if (columnsInfo) {
            var objectColumnsInfo = JSON.parse(columnsInfo);
            var countColumnsTotal = 0;
            var countAggregates = 0;
            var foundAggregate = false;

            //Calculate size of total record before summarized columns
            objectColumnsInfo.forEach(function (column) {
                var mname = column.mname;
                var hasAggregate = false;

                objectAgreggateColumnInfo.forEach(function (aggregateColumn) {
                    var mnameAggregate = aggregateColumn.split('!')[1];

                    if (mname === mnameAggregate) {
                        hasAggregate = true;
                        foundAggregate = true;
                    }
                });

                if (hasAggregate === false && !foundAggregate) {
                    countColumnsTotal++;
                }
            });

            //Append row summary
            var trSummary = '<tr class="rowSummary grandTotal"><td class="parent" colspan="' + countColumnsTotal + '"><span class="label-parent-summary">' + window.translation.grand_total + ': ' + rowCount + ' ' + window.translation.records + '</span></td>';

            objectColumnsInfo.forEach(function (column) {
                var mname = column.mname;
                var positionAggregate = 0;

                objectAgreggateColumnInfo.forEach(function (aggregateColumn) {
                    if (aggregateColumn !== 'RowCount') {
                        var mnameAggregate = aggregateColumn.split('!')[1];

                        if (mname === mnameAggregate) {
                            var valueAggregate = data['T!T'].aggregates[positionAggregate].label;
                            trSummary += '<td class="parent"><span class="label-parent-summary">' + valueAggregate + '</span></td>';

                            countAggregates++;
                        }
                        else {
                            positionAggregate++;
                        }
                    }
                    else {
                        positionAggregate++;
                    }
                });
            });

            //Add td empty to trSummary if are missing columns
            var missingColumns = objectColumnsInfo.length - countColumnsTotal - countAggregates;

            if (missingColumns > 0) {
                trSummary += hocvolunteer_event_td_empty_generator(missingColumns);
            }

            trSummary += '</tr>';

        }
    }
    else {
        //Append row summary
        var trSummary = '<tr class="rowSummary"><td class="parent" colspan="' + countColumns + '"><span class="label-parent-summary">' + window.translation.grand_total + ': ' + rowCount + ' ' + window.translation.records + '</span></td></tr>';
    }

    $('table#report-data').find('tbody').append(trSummary);
}

function hocvolunteer_event_td_empty_generator(count) {
    var tdResult = '';

    for (var i = 0; i < count; i++) {
        tdResult = tdResult + '<td></td>';
    }

    return tdResult;
}


function hocvolunteer_event_print_gran_total_row_matrix(data, groupingsAcross, groupingsDown, aggregateColumnInfo, aggregateColumnInfoObj, countColumns, rowCountPosition) {
    var objectAgreggateColumnInfo = JSON.parse(aggregateColumnInfo);
    
    if (countColumns === undefined) {
        let columnsInfo = $('input[name="columns"]').val();

        if (columnsInfo !== undefined && columnsInfo !== '')
            countColumns = JSON.parse(columnsInfo).length;
        else
            countColumns = 0;
    }

    var trSummary = '';
    var onlyRecordCount = false;

    //Search aggregates to include in row of summary
    if (groupingsDown.length - 1 != 0) {
        trSummary = '<tr class="rowSummary total-row"><td colspan="' + (groupingsDown.length - 1) + '"></td><td>' + window.translation.grand_total + '</td>';
    }
    else {
        trSummary = '<tr class="rowSummary total-row">';
        onlyRecordCount = true;
    }

    //Include column before data of aggregates with labels of data
    trSummary += '<td class="labelsAggregate">';

    objectAgreggateColumnInfo.forEach(function (aggregateColumn) {
        var mnameAggregate = aggregateColumn;

        aggregateColumnInfoObj.forEach(function (aggregateColumnObj) {
            var mnameObj = aggregateColumnObj.mname;
            var labelObj = aggregateColumnObj.label;

            if (mnameObj === mnameAggregate && onlyRecordCount === false) {
                trSummary += '<span>' + labelObj + '</span>';
            }
            else if (mnameObj === mnameAggregate && onlyRecordCount === true) {
                trSummary += '<span>' + window.translation.grand_total + ': ' + labelObj + '</span>';
            }
        });
    });

    trSummary += '</td>';

    //Include totals of aggregate to each grouping across
    var countGroupings = 0;
    groupingsAcross.forEach(function (grouping) {
        var aggregateTotalGrouping = data['T!' + countGroupings].aggregates;

        if (aggregateTotalGrouping.length > 0) {
            trSummary += '<td>';

            aggregateTotalGrouping.forEach(function (valueAggregate) {
                trSummary += '<span>' + valueAggregate.label + '</span>';
            });

            trSummary += '</td>';
        }

        countGroupings++;
    });

    if (groupingsDown.length > 0) {
        //Include column after data of aggregates to display totals of aggregates
        var valueTotalAcross = data['T!T'].aggregates;

        if (valueTotalAcross.length > 0) {
            trSummary += '<td>';

            valueTotalAcross.forEach(function (valueAggregate) {
                trSummary += '<span>' + valueAggregate.label + '</span>';
            });

            trSummary += '</td>';
        }
    }

    //Include td empty to complete row of grandTotal
    trSummary += '<td colspan="' + countColumns + '"></td>';

    trSummary += '</tr>';

    $('table#report-data-matrix-summary').find('tbody').append(trSummary);
}


function hocvolunteer_datatable_get_reporting_data() {
    if ($('table#report-data').length > 0) {
        var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';

        //Get lastInstance and reportId
        var lastInstance = $('input[name="reportLastInstanceId"]').val();
        var reportId = $('input[name="reportId"]').val();
        var format = $('input[name="formatData"]').val();
        var object = $('table#report-data');
        var countColumns = $('input[name="columnSize"]').val();
        var reportView = ($('input[name="reportView"]').val()) ? true : false;

        var languageText = {
            "lengthMenu": window.translation.datatable_length,
            "zeroRecords": window.translation.datatable_zero_records,
            "info": window.translation.datatable_info,
            "infoEmpty": window.translation.datatable_info_empty,
            "paginate": {
                "first": window.translation.datatable_first,
                "last": window.translation.datatable_last,
                "next": window.translation.datatable_next,
                "previous": window.translation.datatable_previous
            },
            "processing": "<span>" + window.translation.please_wait + "</span><img src='/img/default/spinner.svg' alt='loading'/>"
        };
        if (lastInstance && reportId) {
            var countAttemps = 0; //Attemps to verify data
            //get the columns that are date 

            let headerCounter = 0;
            let columnIsDate = [];
            $('table#report-data thead th').each(function (column) {
                columnIsDate.push($(this).hasClass("date"));
                headerCounter++;

            })

            if (reportView) {
                $.ajax({
                    type: 'POST',
                    url: urlSite + 'partner-portal-report-data/' + reportId + '/' + lastInstance,
                    beforeSend: function () {
                        $('.processing_screen_data').show();
                    },
                    success: function (data) {
                        data = JSON.parse(data);
                        if (data.status === 'ok') {
                            //Display data of report tabular
                            var rows = data.data.rows;

                            if ((!rows && format === 'TABULAR') || (data.groupingsDown.groupings.length === 0 && format === 'SUMMARY') || (data.groupingsDown.groupings.length == 0 && data.groupingsAcross.groupings.length === 0 && format === 'MATRIX')) {
                                //Hide table and export to CSV
                                $('.processing_screen_data').fadeOut();
                                $('.matrix-container').fadeOut();
                                $('.summary-container').fadeOut();
                                $('#report-data').fadeOut();
                                $('.generate-csv').fadeOut();
                                $('.overview.data-report').fadeOut();
                                $('.overview.no-data-report').fadeIn();
                            }
                            else if ((rows && format === 'TABULAR') || format === 'SUMMARY' || format === 'MATRIX') {
                                //Clean datatable
                                $('table#report-data').find('tbody').empty();
                                //Hide message of no-data
                                $('.no-data-report').hide();

                                if (format === 'TABULAR') {
                                    //Display export button
                                    var ua = navigator.userAgent.toLowerCase();
                                    if (ua.indexOf('safari') != -1) {
                                        if (ua.indexOf('chrome') === -1) {
                                            $('a.generate-csv.export_csv_testing').fadeIn();
                                            $('span.right.export-datatable').fadeOut();
                                        }
                                        else {
                                            $('a.generate-csv.export_csv_testing').fadeOut();
                                            $('span.right.export-datatable').fadeIn();
                                        }
                                    }
                                    else {
                                        $('a.generate-csv.export_csv_testing').fadeOut();
                                        $('span.right.export-datatable').fadeIn();
                                    }

                                    rows.forEach(function (row) {
                                        var dataCells = row.dataCells;
                                        var stringTr = "<tr>";
                                        let columnNumber = 0;
                                        dataCells.forEach(function (cell) {
                                            let dataSortStructure = '';
                                            if (columnIsDate[columnNumber] === true)
                                                dataSortStructure = "data-sort=\"" + cell.value + "\"";

                                            stringTr = stringTr + "<td " + dataSortStructure + ">" + cell.label + "</td>";
                                            columnNumber++;
                                        });

                                        stringTr = stringTr + "</tr>";

                                        $('table#report-data').find('tbody').append(stringTr);
                                        $('table#report-data-copy').find('tbody').append(stringTr);
                                    });

                                    //Generate datatable
                                    hocvolunteer_event_datatable_initialize_notAjax(object, languageText, window.rowPerPage);
                                }
                                else if (format === 'SUMMARY') {
                                    //Get grouping down of report
                                    var groupingDown = $('input[name="groupingDown"]').val();
                                    var groupingDownJSON = (groupingDown) ? JSON.parse(groupingDown) : '';
                                    var countGrouping = 0; //To iterate when exists more of one grouping
                                    var rowCountPosition = (data.rowCountPosition) ? parseInt(data.rowCountPosition) : 0;
                                    rowCountPosition = parseInt(rowCountPosition);


                                    if (data.groupingsDown.groupings) {
                                        data.groupingsDown.groupings.forEach(function (group) {
                                            hocvolunteer_event_print_rows_grouping_summary(group, data.data, data.aggregateColumnInfo, data.aggregateColumnInfoObj, countGrouping, groupingDownJSON, countColumns, rowCountPosition);
                                        });
                                    }

                                    //Add row with totals
                                    hocvolunteer_event_print_gran_total_row_summary(data.data, data.aggregateColumnInfo, data.aggregateColumnInfoObj, countColumns, rowCountPosition);
                                    $('table#report-data').closest('.report-container').first().find('span.data-report .generate-csv.export_csv_testing').hide();
                                }
                                else if (format === 'MATRIX') {
                                    //Get grouping down of report
                                    var groupingDown = $('input[name="groupingDown"]').val();
                                    var groupingDownJSON = (groupingDown) ? JSON.parse(groupingDown) : '';
                                    var groupingsAcross = $('input[name="groupingsAcross"]').val();
                                    var groupingsAcrossJSON = (groupingsAcross) ? JSON.parse(groupingsAcross) : '';
                                    var countGrouping = 0; //To iterate when exists more of one grouping
                                    var rowCountPosition = (data.rowCountPosition) ? parseInt(data.rowCountPosition) : 0;

                                    if (data.groupingsDown.groupings) {
                                        //Add thead to table of record count to the left
                                        var countGroupingAcross = data.groupingsAcross.groupings.length;
                                        var groupingAcrossLabel = (groupingsAcrossJSON[0].label.split(':').length > 1) ? groupingsAcrossJSON[0].label.split(':')[1] : groupingsAcrossJSON[0].label;
                                        var trFirstGroupingAcross = '<tr><th colspan="' + (countGroupingAcross / 2) + '"></th><th colspan="' + countGroupingAcross + '">' + groupingAcrossLabel + '</th></tr>';

                                        //  Dynamic thead for multiple dimensions
                                        var trGroupingDown = '<tr>';
                                        var trGroupingAcross = '<tr>';

                                        //  Adding headers of groupung down dimensions
                                        jQuery.each(groupingDownJSON, function () {
                                            var l = (this.label.split(':').length > 1) ? this.label.split(':')[1] : this.label;
                                            trGroupingDown += '<th>' + l + '</th>';

                                            trGroupingAcross += '<th></th>';
                                        });

                                        //  Adding headers  grouping accross dimensions
                                        jQuery.each(groupingsAcrossJSON, function () {
                                            var label = this.label;

                                            //Increase size of header to 2 new columns of label aggregate and total aggregate
                                            if (data.aggregateColumnInfoObj.length > 1) {
                                                trGroupingAcross += '<th></th>';
                                            }

                                            trGroupingAcross += '<th colspan="' + countGroupingAcross + '">' + label + '</th>';

                                            if (data.aggregateColumnInfoObj.length > 1) {
                                                trGroupingAcross += '<th></th>';
                                            }
                                            else if (data.aggregateColumnInfoObj.length > 0) {
                                                trGroupingAcross += '<th></th>';
                                            }
                                        });

                                        //Add column empty if exists more of one aggregate to display labels of aggregates
                                        var aggregateColumnInfo = JSON.parse(data.aggregateColumnInfo);
                                        if (aggregateColumnInfo.length > 1) {
                                            trGroupingDown += '<th></th>';
                                        }

                                        data.groupingsAcross.groupings.forEach(function (groupA) {
                                            var label = groupA.label;

                                            trGroupingDown += '<th>' + label + '</th>';
                                        });

                                        //Add column after grouping across to include grand total values
                                        if (aggregateColumnInfo.length > 0) {
                                            trGroupingDown += '<th>' + window.translation.grand_total + '</th>';
                                        }

                                        trGroupingDown += '</tr>';
                                        trGroupingAcross += '</tr>';

                                        $('#report-data-matrix-summary').find('thead').html(trGroupingAcross + trGroupingDown);

                                        var tdata = '';
                                        data.groupingsDown.groupings.forEach(function (group) {
                                            tdata += hocvolunteer_event_print_rows_grouping_matrix(group, data.groupingsAcross.groupings, data.data, data.aggregateColumnInfo, data.aggregateColumnInfoObj, countGrouping, groupingDownJSON, groupingsAcrossJSON, countColumns, countGroupingAcross, 0, true);
                                        });

                                        $('table#report-data-matrix-summary').find('tbody').html(tdata);

                                        //Add class to apply bold to all rowSummaries and rowSubtotal
                                        $('span.label-parent-summary').parents('tr').addClass('rowSummary');
                                        $('span.subtotal-label').parents('tr').addClass('rowSummary subtotal-row');

                                        //Add row with totals
                                        hocvolunteer_event_print_gran_total_row_matrix(data.data, data.groupingsAcross.groupings, groupingDownJSON, data.aggregateColumnInfo, data.aggregateColumnInfoObj, countColumns, rowCountPosition);
                                        $('table#report-data-matrix-summary').closest('.report-container').first().find('span.data-report .generate-csv.export_csv_testing').hide();
                                    }
                                }

                                $('.processing_screen_data').fadeOut();

                                //Include time ago of date of completition
                                if (data.completitionDate) {
                                    var timeAgoReport = hocvolunteer_event_calculate_date_ago_from_string(data.completitionDate);

                                    $('.overview').find('span.notice').text(timeAgoReport);
                                }
                            }
                        }
                        else {
                            //Redirect to folder page
                            var folderId = $('input[name="folderId"]').val();
                            var isReporter = ($('a.get_report_folders_reporter').length > 0) ? true : false;

                            if (isReporter) {
                                window.location.replace(urlSite + 'partner-portal/reports/' + folderId + '?reporter=true');
                            }
                            else {
                                window.location.replace(urlSite + 'partner-portal/reports/' + folderId);
                            }
                        }
                    }
                });
            }
            else {
                //Start timer to wait for data and when data is success display datatable
                var refreshIntervalID = setInterval(function () {
                    $.ajax({
                        type: 'POST',
                        url: urlSite + 'partner-portal-report-data/' + reportId + '/' + lastInstance,
                        beforeSend: function () {
                            $('.processing_screen_data').show();
                        },
                        success: function (data) {
                            data = JSON.parse(data);

                            if (data.status === 'ok') {
                                //Stop timer to retrieve data of datatable
                                clearInterval(refreshIntervalID);

                                //Display data of report tabular
                                var rows = data.data.rows;

                                if ((!rows && format === 'TABULAR') || (data.groupingsDown.groupings.length === 0 && format === 'SUMMARY') || (data.groupingsDown.groupings.length == 0 && data.groupingsAcross.groupings.length === 0 && format === 'MATRIX')) {
                                    //Hide table and export to CSV
                                    $('.processing_screen_data').fadeOut();
                                    $('.matrix-container').fadeOut();
                                    $('.summary-container').fadeOut();
                                    $('#report-data').fadeOut();
                                    $('.generate-csv').fadeOut();
                                    $('.overview.data-report').fadeOut();
                                    $('.overview.no-data-report').fadeIn();
                                }
                                else if ((rows && format === 'TABULAR') || format === 'SUMMARY' || format === 'MATRIX') {
                                    //Clean datatable
                                    $('table#report-data').find('tbody').empty();

                                    //Hide message of no-data
                                    $('.no-data-report').hide();

                                    if (format === 'TABULAR') {
                                        //Display export button
                                        var ua = navigator.userAgent.toLowerCase();
                                        if (ua.indexOf('safari') != -1) {
                                            if (ua.indexOf('chrome') === -1) {
                                                $('a.generate-csv.export_csv_testing').fadeIn();
                                                $('span.right.export-datatable').fadeOut();
                                            }
                                            else {
                                                $('a.generate-csv.export_csv_testing').fadeOut();
                                                $('span.right.export-datatable').fadeIn();
                                            }
                                        }
                                        else {
                                            $('a.generate-csv.export_csv_testing').fadeOut();
                                            $('span.right.export-datatable').fadeIn();
                                        }

                                        rows.forEach(function (row) {
                                            var dataCells = row.dataCells;
                                            var stringTr = "<tr>";
                                            let columnNumber = 0;
                                            dataCells.forEach(function (cell) {

                                                let dataSortStructure = '';
                                                if (columnIsDate[columnNumber] === true)
                                                    dataSortStructure = "data-sort=\"" + cell.value + "\"";

                                                stringTr = stringTr + "<td " + dataSortStructure + ">" + cell.label + "</td>";
                                            });

                                            stringTr = stringTr + "</tr>";

                                            $('table#report-data').find('tbody').append(stringTr);
                                            $('table#report-data-copy').find('tbody').append(stringTr);
                                        });

                                        //Generate datatable
                                        hocvolunteer_event_datatable_initialize_notAjax(object, languageText, window.rowPerPage);
                                    }
                                    else if (format === 'SUMMARY') {
                                        //Get grouping down of report
                                        var groupingDown = $('input[name="groupingDown"]').val();
                                        var groupingDownJSON = (groupingDown) ? JSON.parse(groupingDown) : '';
                                        var countGrouping = 0; //To iterate when exists more of one grouping
                                        var rowCountPosition = (data.rowCountPosition) ? parseInt(data.rowCountPosition) : 0;
                                        rowCountPosition = parseInt(rowCountPosition);

                                        if (data.groupingsDown.groupings && groupingDownJSON != '') {
                                            data.groupingsDown.groupings.forEach(function (group) {
                                                hocvolunteer_event_print_rows_grouping_summary(group, data.data, data.aggregateColumnInfo, data.aggregateColumnInfoObj, countGrouping, groupingDownJSON, countColumns, rowCountPosition);
                                            });
                                        }

                                        //Add row with totals
                                        hocvolunteer_event_print_gran_total_row_summary(data.data, data.aggregateColumnInfo, data.aggregateColumnInfoObj, countColumns, rowCountPosition);
                                    }
                                    else if (format === 'MATRIX') {
                                        //Get grouping down of report
                                        var groupingDown = $('input[name="groupingDown"]').val();
                                        var groupingDownJSON = (groupingDown) ? JSON.parse(groupingDown) : '';
                                        var groupingsAcross = $('input[name="groupingsAcross"]').val();
                                        var groupingsAcrossJSON = (groupingsAcross) ? JSON.parse(groupingsAcross) : '';
                                        var countGrouping = 0; //To iterate when exists more of one grouping
                                        var rowCountPosition = (data.rowCountPosition) ? parseInt(data.rowCountPosition) : 0;

                                        if (data.groupingsDown.groupings && groupingsAcross != '') {
                                            //Add thead to table of record count to the left
                                            var countGroupingAcross = data.groupingsAcross.groupings.length;
                                            var groupingAcrossLabel = (groupingsAcrossJSON[0].label.split(':').length > 1) ? groupingsAcrossJSON[0].label.split(':')[1] : groupingsAcrossJSON[0].label;
                                            var trFirstGroupingAcross = '<tr><th colspan="' + (countGroupingAcross / 2) + '"></th><th colspan="' + countGroupingAcross + '">' + groupingAcrossLabel + '</th></tr>';

                                            //  Dynamic thead for multiple dimensions
                                            var trGroupingDown = '<tr>';
                                            var trGroupingAcross = '<tr>';


                                            //  Adding headers of grouping down dimensions
                                            jQuery.each(groupingDownJSON, function () {
                                                var l = (this.label.split(':').length > 1) ? this.label.split(':')[1] : this.label;
                                                trGroupingDown += '<th>' + l + '</th>';

                                                trGroupingAcross += '<th></th>';
                                            });

                                            //  Adding headers  grouping accross dimensions
                                            jQuery.each(groupingsAcrossJSON, function () {
                                                var label = this.label;

                                                //Increase size of header to 2 new columns of label aggregate and total aggregate
                                                //Include summary of aggregates and subtotal label
                                                if (data.aggregateColumnInfoObj.length > 1) {
                                                    trGroupingAcross += '<th></th><th></th>';
                                                }

                                                trGroupingAcross += '<th colspan="' + countGroupingAcross + '">' + label + '</th>';

                                                if (data.aggregateColumnInfoObj.length > 0) {
                                                    trGroupingAcross += '<th></th>';
                                                }
                                            });

                                            //Add column empty if exists more of one aggregate to display labels of aggregates
                                            var aggregateColumnInfo = JSON.parse(data.aggregateColumnInfo);
                                            if (aggregateColumnInfo.length > 1) {
                                                trGroupingDown += '<th></th><th></th>';
                                            }

                                            data.groupingsAcross.groupings.forEach(function (groupA) {
                                                var label = groupA.label;

                                                trGroupingDown += '<th>' + label + '</th>';
                                            });

                                            //Add column after grouping across to include grand total values
                                            if (aggregateColumnInfo.length > 0) {
                                                trGroupingDown += '<th>' + window.translation.grand_total + '</th>';
                                            }

                                            trGroupingDown += '</tr>';
                                            trGroupingAcross += '</tr>';

                                            $('#report-data-matrix-summary').find('thead').html(trGroupingAcross + trGroupingDown);

                                            var tdata = '';
                                            data.groupingsDown.groupings.forEach(function (group) {
                                                tdata += hocvolunteer_event_print_rows_grouping_matrix(group, data.groupingsAcross.groupings, data.data, data.aggregateColumnInfo, data.aggregateColumnInfoObj, countGrouping, groupingDownJSON, groupingsAcrossJSON, countColumns, countGroupingAcross, 0, true);
                                            });

                                            $('table#report-data-matrix-summary').find('tbody').html(tdata);

                                            //Add class to apply bold to all rowSummaries and rowSubtotal
                                            $('span.label-parent-summary').parents('tr').addClass('rowSummary');
                                            $('span.subtotal-label').parents('tr').addClass('rowSummary subtotal-row');

                                            //Add row with totals
                                            hocvolunteer_event_print_gran_total_row_matrix(data.data, data.groupingsAcross.groupings, groupingDownJSON, data.aggregateColumnInfo, data.aggregateColumnInfoObj, countColumns, rowCountPosition);
                                        }
                                    }

                                    $('.processing_screen_data').fadeOut();

                                    //Include time ago of date of completition
                                    if (data.completitionDate) {
                                        var timeAgoReport = hocvolunteer_event_calculate_date_ago_from_string(data.completitionDate);

                                        $('.overview').find('span.notice').text(timeAgoReport);
                                    }
                                }
                            }
                            else {
                                countAttemps = countAttemps + 1;

                                if (countAttemps > 0) {
                                    //Change message
                                    $('.processing_screen_data').find('span:last-child').text(window.translation.this_report_taking_a_litle_bit + '...');

                                    if ($('.processing_screen_data').find('span').length > 1) {
                                        $('.processing_screen_data').find('span').first().remove();
                                    }

                                    if (countAttemps > 1) {
                                        //Redirect to folder page
                                        var folderId = $('input[name="folderId"]').val();
                                        var isReporter = ($('a.get_report_folders_reporter').length > 0) ? true : false;

                                        if (isReporter) {
                                            window.location.replace(urlSite + 'partner-portal/reports/' + folderId + '?reporter=true');
                                        }
                                        else {
                                            window.location.replace(urlSite + 'partner-portal/reports/' + folderId);
                                        }
                                    }
                                }
                            }
                        }
                    });
                }, 5000);
            }
        }
        else {
            $('.processing_screen_data').addClass('hide');
        }

    }
}

function hocvolunteer_event_add_events_draw(table) {
    //Input Text
    $('.search-container').find('input[type="text"]').keyup(function (e) {
        if ($(this).val()) {
            var columnNumber = $(this).parents('.search-container').data('column-number');
            $('.dataTables_scrollHead').find('thead tr').find('th:eq(' + columnNumber + ')').addClass('filter-added');

            $(this).attr('data-empty', 'Not Empty');
            table.draw();
        }
        else {
            if ($(this).attr('data-empty') === 'Not Empty') {
                var columnNumber = $(this).parents('.search-container').data('column-number');
                $('.dataTables_scrollHead').find('thead tr').find('th:eq(' + columnNumber + ')').removeClass('filter-added');

                $(this).attr('data-empty', 'Empty');
                table.draw();
            }
        }
    });

    //Input Text Change event
    $('.search-container').find('input[type="text"]').change(function (e) {
        if ($(this).val()) {
            var columnNumber = $(this).parents('.search-container').data('column-number');
            $('.dataTables_scrollHead').find('thead tr').find('th:eq(' + columnNumber + ')').addClass('filter-added');

            $(this).attr('data-empty', 'Not Empty');
            table.draw();
        }
        else {
            if ($(this).attr('data-empty') === 'Not Empty') {
                var columnNumber = $(this).parents('.search-container').data('column-number');
                $('.dataTables_scrollHead').find('thead tr').find('th:eq(' + columnNumber + ')').removeClass('filter-added');

                $(this).attr('data-empty', 'Empty');
                table.draw();
            }
        }
    });

    //Input checkbox
    $('.search-container').find('input[type="checkbox"]').change(function () {
        var parent = $(this).parents('.search-container');

        if (parent.find('input[type="checkbox"]:not(:checked)').length > 0) {
            $(this).parents('th').addClass('filter-added');
        }
        else {
            $(this).parents('th').removeClass('filter-added');
        }

        table.draw();
    });
}


function hocvolunteer_event_print_rows_grouping_matrix(group, groupingsAcross, data, aggregateColumnInfo, aggregateColumnInfoObj, countGrouping, groupingDownJSON, groupingsAcrossJSON, countColumns, countGroupingAcross, level, isFirstParam) {
    var key = group.key;
    var label = group.label;
    var grouping = group.groupings;
    var groupLabel = groupingDownJSON[countGrouping].label;
    var groupLabelValue = (groupLabel.split(':').length > 1) ? groupLabel.split(':')[1] : groupLabel;
    var objectAgreggateColumnInfo = JSON.parse(aggregateColumnInfo);
    var isSubTotal = false;

    //Generate tr to table summary
    if (level > 0) {
        var trSummary = '';

        if (!isFirstParam) {
            for (var i = 0; i < (groupingDownJSON.length - level); i++) {
                trSummary += '<td></td>';
            }
        }
        trSummary += '<td class="align-left"><span class="label-parent-summary">' + label + '</span></td>';
    } else {
        var trSummary = '<tr class="rowSummary"><td class="align-left"><span class="label-parent-summary">' + label + '</span></td>';
    }

    var trSummaryTotalContent = '';

    //  Recursion
    var isFirst = true;
    grouping.forEach(function (g) {
        trSummary += hocvolunteer_event_print_rows_grouping_matrix(g, groupingsAcross, data, aggregateColumnInfo, aggregateColumnInfoObj, countGrouping, groupingDownJSON, groupingsAcrossJSON, countColumns, countGroupingAcross, level + 1, isFirst);
        isFirst = false;
    });

    if (level == 0 && objectAgreggateColumnInfo.length > 1) {
        for (var i = 0; i < (groupingDownJSON.length - level - 1); i++) {
            trSummary += '<td></td>';
        }

        isSubTotal = true;

        //Add td with subtotal label
        trSummary += '<td><span class="subtotal-label">' + window.translation.subtotal + '</span></td>';
    }

    //Include column before data of aggregates with labels of data
    if (objectAgreggateColumnInfo.length > 1) {
        trSummary += '<td class="labelsAggregate">';

        objectAgreggateColumnInfo.forEach(function (aggregateColumn) {
            var mnameAggregate = aggregateColumn;

            aggregateColumnInfoObj.forEach(function (aggregateColumnObj) {
                var mnameObj = aggregateColumnObj.mname;
                var labelObj = aggregateColumnObj.label;

                if (mnameObj === mnameAggregate) {
                    trSummary += '<span>' + labelObj + '</span>';
                }
            });
        });

        trSummary += '</td>';
    }

    groupingsAcross.forEach(function (groupAcrossItem) {
        var keyAcross = groupAcrossItem.key;
        var label = groupAcrossItem.label;
        var valueTotalAcross = data[key + '!' + keyAcross].aggregates;

        if (trSummary.substr(-5) === '</tr>') {
            for (var i = 0; i < (groupingDownJSON.length - level); i++) {
                trSummary += '<td></td>';
            }
        }

        if (valueTotalAcross.length > 1) {
            trSummary += '<td>';

            valueTotalAcross.forEach(function (valueAggregate) {
                trSummary += '<span>' + valueAggregate.label + '</span>';
            });

            trSummary += '</td>';
        }
        else {
            var valueTotalAcrossField = data[key + '!' + keyAcross].aggregates[0].label;

            trSummary += '<td>' + valueTotalAcrossField + '</td>';
        }

        //Generate tr to table content
        var dataRow = data[key + '!' + keyAcross];
        var rows = dataRow.rows;

        if (rows) {
            rows.forEach(function (row) {
                var dataCells = row.dataCells;
                var stringTr = '<tr>';
                var trContent = '';
                var countTd = 0;

                //Append tr to trsummary
                var countColumnsBefore = parseInt(keyAcross) + 1;
                var countColumnsAfter = countGroupingAcross - parseInt(keyAcross) + 1; //Removing the first column (Name) and itself

                if (objectAgreggateColumnInfo.length > 1) {
                    countColumnsAfter = countColumnsAfter - 2;
                }
                else if (objectAgreggateColumnInfo.length > 0) {
                    countColumnsBefore = countColumnsBefore - 1;
                    countColumnsAfter = countColumnsAfter - 1;
                }

                trContent = '<tr>';

                for (var i = 0; i < groupingDownJSON.length; i++) {
                    trContent += '<td></td>';
                }

                //Include column before data of aggregates with labels of data
                if (objectAgreggateColumnInfo.length > 1) {
                    trContent += '<td></td>';
                }

                trContent += hocvolunteer_event_td_empty_generator(countColumnsBefore) + '<td>1</td>' + hocvolunteer_event_td_empty_generator(countColumnsAfter);

                //Include column after data of aggregates to display totals of aggregates
                if (objectAgreggateColumnInfo.length > 1) {
                    trContent += '<td></td>';
                }

                dataCells.forEach(function (cell) {
                    trContent += '<td>' + cell.label + '</td>';
                });

                trContent += '</tr>';

                trSummaryTotalContent = trSummaryTotalContent + trContent;
            });
        }
    });

    //Include column after data of aggregates to display totals of aggregates
    if (objectAgreggateColumnInfo.length > 0) {
        var valueTotalAcross = data[key + '!T'].aggregates;

        if (valueTotalAcross.length > 0) {
            trSummary += '<td class="subtotal-cell">';

            valueTotalAcross.forEach(function (valueAggregate) {
                trSummary += '<span>' + valueAggregate.label + '</span>';
            });

            trSummary += '</td>';
        }
    }

    //Add empty row to report-data
    var trEmpty = '<tr class="rowSummary"><td><span></span></td>' + hocvolunteer_event_td_empty_generator(countColumns - 1) + '</tr>';
    $('table#report-data').find('tbody').append(trEmpty);

    //  Adding headers
    var cols = $('input[name="columns"]').val();
    var dataHeaders;

    try {
        dataHeaders = JSON.parse(cols);
    } catch (e) {
        dataHeaders = {};
    }

    if ((!isSubTotal && objectAgreggateColumnInfo.length > 0) || (isSubTotal && objectAgreggateColumnInfo.length > 1)) {
        jQuery.each(dataHeaders, function () {
            var labelHeader = (this.labelHeader.split(':').length > 1) ? this.labelHeader.split(':')[1] : this.labelHeader;
            trSummary += '<td>' + labelHeader + '</td>';
        });
    }
    else {
        jQuery.each(dataHeaders, function () {
            trSummary += '<td></td>';
        });
    }

    trSummary += '</tr>';

    return trSummary + trSummaryTotalContent;
}


function hocvolunteer_event_datatable_initialize_notAjax(objectTable, language, rowPerPage) {
    var columnSort = objectTable.data('column-sort');
    var columnNotSort = (objectTable.data('columns-not-sort')) ? objectTable.data('columns-not-sort').toString().split(',') : '';
    var paging = (objectTable.data('paging') === true) ? true : false;
    var searchField = (objectTable.data('searching') === true) ? true : false;
    var exportcsv = (objectTable.data('exportcsv') === true) ? true : false;
    var customFiltering = (objectTable.data('custom-filtering') === true) ? true : false;
    var scrollX = (objectTable.data('scrollX') === true) ? true : false;

    var fieldSeparatorValue = ',';
    if ($('input[name="customSeparatorCSV"]').length > 0) {
        var configuredSeparator = $('input[name="customSeparatorCSV"]').val();

        switch (configuredSeparator) {
            case 'semicolon': fieldSeparatorValue = ';';
                break;
            case 'tab': fieldSeparatorValue = '\t';
                break;
            case 'space': fieldSeparatorValue = ' ';
                break;
            case 'comma': fieldSeparatorValue = ',';
                break;
            case '': fieldSeparatorValue = ',';
                break;
        }
    }
    var buttonsExport = (exportcsv === true) ? [{
        extend: 'csv',
        charset: 'UTF-8',
        bom: true,
        fieldSeparator: fieldSeparatorValue,
        title: 'report',
        exportOptions: {
            orthogonal: "myExport",
            columns: ':visible'
        }
    }] : [];
    var countColumn = 2;

    //Including validation to apply width to each column dinamically
    if ($('input[name="columnSize"]').length > 0) {
        countColumn = parseInt($('input[name="columnSize"]').val());
    }

    var arrayColumnsWidth = hocvolunteer_event_generate_array_columns_datatable(countColumn);

    var defaultParams = {
        'bFilter': searchField,
        'bLengthChange': true,
        'pageLength': parseInt(rowPerPage),
        'language': language,
        'paging': paging,
        'scrollX': true,
        'destroy': true,
        dom: 'Blfrtip',
        buttons: buttonsExport,
        autoWidth: false,
        'columns': arrayColumnsWidth,
        fnDrawCallback: function () {
            //Removing paging when exists only one page
            if ($('.dataTables_paginate a.paginate_button').length < 4) {
                $('.dataTables_paginate').addClass('hide-forced');
            }
            else {
                $('.dataTables_paginate').removeClass('hide-forced');
            }

            $('.dataTables_scrollBody').find('.search-container').remove();

            hocvolunteer_event_move_custom_filters();
        },
        fnInitComplete: function () {
            $('.dt-buttons').find("button.buttons-html5").addClass('button');

        }
    };

    if (columnSort) {
        defaultParams['order'] = [[parseInt(columnSort), "asc"]];
    }
    if (columnNotSort) {
        var columnNotSortArray = [];

        columnNotSort.forEach(function (column) {
            columnNotSortArray.push({ "targets": [parseInt(column)], "orderable": false });
        });

        defaultParams['columnDefs'] = columnNotSortArray;
    }

    //Events to generate popups of custom filters
    if (customFiltering === true) {
        hocvolunteer_event_generate_containers_custom_search(objectTable);

        hocvolunteer_event_generate_custom_filters_behaviors();
    }

    //Initialize table
    var table = objectTable.on('draw.dt', function () {
        $('.processing_screen').fadeOut();
    }).DataTable(defaultParams);

    table.columns.adjust().draw();

    /******************************************/

    if (customFiltering === true) {
        hocvolunteer_event_add_events_draw(table);

        //Events to sort columns by custom link
        $('a.sort').click(function () {
            var columnNumber = parseInt($(this).parent().data('column-number'));
            var currentOrdering = ($(this).parent().hasClass('sorting_asc') === true) ? 'desc' : 'asc';

            table.order([columnNumber, currentOrdering]).draw();
        });

        //Hide popup of custom filter
        $('a.close').click(function () {
            $(this).parent().css('display', 'none');

            return false;
        });

        //Event to open dialog with custom filter
        $('a.filter').click(function () {
            var columnNumber = parseInt($(this).parent().data('column-number'));

            if ($('.dataTables_wrapper').find('.container-filters .search-container:eq(' + columnNumber + ')').css('display') == 'block') {
                $('.dataTables_wrapper').find('.container-filters .search-container:eq(' + columnNumber + ')').css('display', 'none');
            }
            else {
                $('.dataTables_wrapper').find('.container-filters .search-container').css('display', 'none');
                $('.dataTables_wrapper').find('.container-filters .search-container:eq(' + columnNumber + ')').css('display', 'block');

                //Move left and top of search container
                var positionLink = $(this).offset();
                var leftContainer = positionLink.left - 530;

                //Validation to mobile versions
                if ($(window).width() < 639) {
                    leftContainer = positionLink.left - 126;
                }
                else if ($(window).width() < 980) {
                    //Ipad validation
                    leftContainer = positionLink.left - 186;
                }

                $('.dataTables_wrapper').find('.container-filters .search-container:eq(' + columnNumber + ')').css('top', '-30px');
                $('.dataTables_wrapper').find('.container-filters .search-container:eq(' + columnNumber + ')').css('left', leftContainer + 'px');
            }

            return false;
        });

        //Remove event click of th
        $('.dataTables_scrollHead').find('th').unbind('click');
    }

    //Validation to move CVS button in datatables with CSV
    if (exportcsv === true) {
        var buttonsCSV = $('.dt-buttons');
        var textButton = $('span.right').data('textbutton');

        $('span.right').append(buttonsCSV);
        $('span.right').find('a').addClass('button generate-csv');
        $('span.right').find('a').text(textButton);
    }

    //Translate search label of datatable
    if ($('.dataTables_filter label').length > 0) {
        var labelSearch = '<label>' + window.translation.search_button + ':</label>';

        $('.dataTables_filter label').prepend(labelSearch);
    }

    //Event to redraw table in resize
    $(window).resize(function () {
        //Hide all custom filters
        $('.dataTables_wrapper').find('.container-filters .search-container').css('display', 'none');

        table.columns.adjust().draw();
    });
}


function hocvolunteer_event_move_custom_filters() {
    if ($('.container-filters').length === 0) {
        $('.dataTables_scrollBody').before('<div class="container-filters"></div>');

        //Move all search container to new container
        $('.dataTables_wrapper').find('.search-container').each(function () {
            var item = $(this);

            $('.dataTables_wrapper').find('.container-filters').append(item);
        });
    }
}

function hocvolunteer_event_generate_custom_filters_behaviors() {
    $.fn.dataTable.ext.search.push(
        function (settings, data, dataIndex) {
            var objectTable_custom = $('.datatable-custom-reporting').first();
            var filtersByTextInputs = objectTable_custom.find('thead').find('th.filter-text');
            var filtersByCategories = objectTable_custom.find('thead').find('th.filter-category');
            var countFiltersTable = filtersByCategories.length + filtersByTextInputs.length;
            var countFilters = 0;

            filtersByTextInputs.each(function () {
                var name = $(this).data('name');
                var column = parseInt($(this).data('column-number'));
                var valueInput = $('input[name="search-text-' + name + '"]').val();
                var valueColumn = data[column] !== undefined ? data[column].toString() : '';

                if (!valueInput) {
                    countFilters++;
                }
                else {
                    if (valueColumn.toLowerCase().indexOf(valueInput.toLowerCase()) !== -1) {
                        countFilters++;
                    }
                }
            });

            filtersByCategories.each(function () {
                var name = $(this).data('name');
                var column = parseInt($(this).data('column-number'));
                var options = $(this).data('categories');
                var optionsCount = options.length;
                var meetAlmostOne = false;
                var valueColumn = (column) ? data[column].toString() : '';
                var noneIsSelected = false;
                var allIsSelected = false;

                if (options.length === 0) {
                    countFilters++;
                }
                else {
                    //Generate array of strings
                    var optionsArray = options.split(";;");

                    //Apply tolowercase to each option
                    optionsArray.forEach(function (option) {
                        if (!noneIsSelected && !allIsSelected) {
                            var specialCharacters = [' ', '/', '\\', '.', '(', ')', ',', '[', ']', '{', '}', '|', ';', ':', '<', '>', '$', '#', '&', '*', '!', '?'];
                            var optionName = option.toString();
                            var optionNameFiltered = optionName;

                            //Replace special characters by '-'
                            specialCharacters.forEach(function (character) {
                                optionNameFiltered = optionNameFiltered.replaceAll(character.toString(), '-');
                            });

                            optionName = optionNameFiltered;

                            if (($('#search-category-' + optionName).prop('checked') === true) && (valueColumn.toString().indexOf(option.toString()) != -1)) {
                                meetAlmostOne = true;
                            }

                            //If none is selected validate if column is empty and none is selected
                            var parentSearchCategory = $('#search-category-' + optionName).parents('.search-by-categories').first();
                            if (parentSearchCategory.find('input[type="checkbox"]:checked').length === 0) {
                                noneIsSelected = true;

                                if (valueColumn.toString() == '' || valueColumn.toString() == '-') {
                                    meetAlmostOne = true;
                                }
                            }

                            //If all is selected validate if column is empty
                            if (parentSearchCategory.find('input[type="checkbox"]:checked').length === parentSearchCategory.find('input[type="checkbox"]').length) {
                                allIsSelected = true;
                                meetAlmostOne = true;
                            }
                        }
                    });

                    if (meetAlmostOne === true) {
                        countFilters++;
                    }
                }
            });

            if (countFiltersTable === countFilters) {
                return true;
            }

            return false;
        }
    );
}

function hocvolunteer_event_generate_containers_custom_search(objectTable) {
    var filtersByTextInputs = objectTable.find('thead').find('th.filter-text');
    var filtersByCategories = objectTable.find('thead').find('th.filter-category');

    filtersByTextInputs.each(function () {
        var name = $(this).data('name');
        var columnNumber = $(this).data('column-number');
        var labelTitle = '<label>' + window.translation.filter_by + ' <a class="clean" href="#">' + window.translation.clear + '</a></label>';
        var closeLink = '<a href="#" class="close"></a>';
        var input = '<input type="text" id="search-text-' + name + '" name="search-text-' + name + '" placeholder="' + window.translation.enter_some_text + '..."/>';
        var container = '<div class="search-container" data-column-number="' + columnNumber + '">' + closeLink + labelTitle + input + '</div>';

        $(this).append(container);
    });

    filtersByCategories.each(function () {
        var name = $(this).data('name');
        var options = $(this).data('categories');
        var columnNumber = $(this).data('column-number');

        if (options) {
            //Generate array of strings
            var optionsArray = options.split(";;");

            var selectAllLink = '<a class="select-all" href="#">' + window.translation.all + '</a>';
            var clearLink = '<a class="select-none" href="#">' + window.translation.none + '</a>';
            var labelTitle = '<div class="container-header"><label>' + window.translation.filter_by + ' <span>' + selectAllLink + clearLink + ' </span></label></div>';
            var closeLink = '<a href="#" class="close"></a>';
            var objBody = '';

            optionsArray.forEach(function (option) {
                var specialCharacters = [' ', '/', '\\', '.', '(', ')', ',', '[', ']', '{', '}', '|', ';', ':', '<', '>', '$', '#', '&', '*', '!', '?'];
                var optionName = option.toString();
                var optionNameFiltered = optionName;

                //Replace special characters by '-'
                specialCharacters.forEach(function (character) {
                    optionNameFiltered = optionNameFiltered.replaceAll(character.toString(), '-');
                });

                optionName = optionNameFiltered;

                var input = '<input id="search-category-' + optionName + '" type="checkbox" value="' + option + '" checked="true"/>';
                var label = '<label for="search-category-' + optionName + '">' + option + '</label>';
                var line = '<div class="line input-group-checkbox">' + input + label + '</div>';

                objBody = objBody + line;
            });

            var container = '<div class="search-container search-by-categories" data-column-number="' + columnNumber + '">' + closeLink + labelTitle + objBody + '</div>';

            $(this).append(container);
        }
    });

    //All / None events
    $('.search-container').on('click', 'a.select-all', function () {
        var parent = $(this).parents('.search-container');

        parent.find('input[type="checkbox"]').prop('checked', true);
        parent.find('input[type="checkbox"]').first().change();
    });
    $('.search-container').on('click', 'a.select-none', function () {
        var parent = $(this).parents('.search-container');

        parent.find('input[type="checkbox"]').prop('checked', false);
        parent.find('input[type="checkbox"]').first().change();
    });
    $('.search-container').on('click', 'a.clean', function () {
        var parent = $(this).parents('.search-container');

        parent.find('input[type="text"]').val('').change();
    });
}

function hocvolunteer_event_generate_array_columns_datatable(countColumns) {
    var arrayColumns = [];

    for (var i = 0; i < countColumns; i++) {
        var elementColumn = { "width": "250px" }
        arrayColumns.push(elementColumn);
    };

    return arrayColumns;
}

function hocvolunteer_event_calculate_date_ago_from_string(dateToCalculate) {
    let currentMomentLocale = moment.locale();

    if (currentMomentLocale != 'en' &&  currentMomentLocale !='en-US' )
        moment.locale('en');

    var momentDate = moment(moment.utc(dateToCalculate)).fromNow();

    if (window.translation.language_iso == 'en-US') {
        return momentDate;
    }
    else if (window.translation.language_iso == 'es-ES') {
        //Return date with translation

        if (momentDate === 'a few seconds ago') {
            return window.translation.a_few_seconds_ago;
        }
        else if (momentDate === 'a minute ago') {
            return window.translation.a_minute_ago;
        }
        else if (momentDate.indexOf('minutes ago') != -1) {
            var numberMinutes = momentDate.split(' ')[0];
            var minutesAgo = window.translation.minutes_ago.split(' ');

            return minutesAgo[0] + ' ' + numberMinutes + ' ' + minutesAgo[1];
        }
        else if (momentDate === 'an hour ago') {
            return window.translation.an_hour_ago;
        }
        else if (momentDate.indexOf('hours ago') != -1) {
            var numberHours = momentDate.split(' ')[0];
            var hoursAgo = window.translation.hours_ago.split(' ');

            return hoursAgo[0] + ' ' + numberHours + ' ' + hoursAgo[1];
        }
        else {
            return window.translation.a_day_ago;
        }
    }
    else {
        //Return date with translation

        if (momentDate === 'a few seconds ago') {
            return window.translation.a_few_seconds_ago;
        }
        else if (momentDate === 'a minute ago') {
            return window.translation.a_minute_ago;
        }
        else if (momentDate.indexOf('minutes ago') != -1) {
            var numberMinutes = momentDate.split(' ')[0];
            return numberMinutes + ' ' + window.translation.minutes_ago;
        }
        else if (momentDate === 'an hour ago') {
            return window.translation.an_hour_ago;
        }
        else if (momentDate.indexOf('hours ago') != -1) {
            var numberHours = momentDate.split(' ')[0];
            return numberHours + ' ' + window.translation.hours_ago;
        }
        else {
            return window.translation.a_day_ago;
        }
    }
}


function hocvolunteer_datatable_widget_reporting(rowPerPage, languageText) {
    if ($('table.datatable-custom-reporting').length > 0) {
        $('table.datatable-custom-reporting').each(function (index) {
            var table = $(this);
            if (table.attr('id') !== 'report-data') {
                hocvolunteer_event_datatable_initialize_notAjax(table, languageText, rowPerPage);
            }
        });
    }
}


function get_day_of_the_week_translation(dayofweek) {
    var dow = "";
    switch (dayofweek) {
        case "Monday":
            dow = window.translation.monday;
            break;
        case "Tuesday":
            dow = window.translation.tuesday;
            break;
        case "Wednesday":
            dow = window.translation.wednesday;
            break;
        case "Thursday":
            dow = window.translation.thursday;
            break;
        case "Friday":
            dow = window.translation.friday;
            break;
        case "Saturday":
            dow = window.translation.saturday;
            break;
        case "Sunday":
            dow = window.translation.sunday;
            break;
    }
    return dow;
}



function hocvolunteer_create_connection_form() {
    if ($('body').find('#create-connection-form').length > 0) {
        if ($('body').find('#create-connection-form select.contact-auto-suggest').length > 0)
            $('select.contact-auto-suggest').select2();
        if ($('body').find('#create-connection-form select.occ-auto-suggest').length > 0)
            $('select.occ-auto-suggest').select2();

        var action = '';
        var datatable = $('#connection-recurrent-scheduler-days').DataTable({
            "bFilter": false,
            "bPaginate": false,
            "bLengthChange": false,
            "bProcessing": false,
            "order": [[1, 'asc']],
            "oLanguage": {
                "oPaginate": {
                    "sPrevious": window.translation.sPrevious,
                    "sNext": window.translation.sNext
                },
                "sZeroRecords": window.translation.sZeroRecords,
                "sInfoFiltered": window.translation.sInfoFiltered,
                "sInfo": window.translation.sInfo,
                "sLoadingRecords": window.translation.sLoadingRecords
            },
            "columnDefs": [
                {
                    "orderable": false,
                    "searchable": false,
                    mRender: function (data, type, row) {
                        return '<a class="table-delete">' + window.translation.remove + '</a>';
                    },
                    "targets": 0
                },
                {
                    "type": "weekday",
                    mRender: function (data, type, row) {
                        return get_day_of_the_week_translation(row[1]);
                    },
                    "targets": 1
                }
            ],
            drawCallback: function (settings) {
                datatable_add_cells_data_for_mobile_headers(this);
            }
        });


        if ($('body').find('#create-connection-form button#add-scheduler-day').length > 0) {
            $('body').find('#create-connection-form button#add-scheduler-day').on('click', function (e) {
                e.preventDefault();
                $('#scheduler-day-errors').hide();
                var DayOfTheWeek = $('#SchedulerDay_DayOfTheWeek').val();
                var StartTime = $('#SchedulerDay_StartTime').val().toUpperCase();
                var EndTime = $('#SchedulerDay_EndTime').val().toUpperCase();
                var valid = true;
                if (DayOfTheWeek === '' || StartTime === '' || EndTime === '')
                    valid = false;
                //var valid = $('#SchedulerDay_DayOfTheWeek, #SchedulerDay_StartTime, #SchedulerDay_EndTime').valid();
                if (valid) {
                    moment.locale(window.translation.language_iso);
                    var st = moment(StartTime, window.MomentTimeFormat);
                    var et = moment(EndTime, window.MomentTimeFormat);
                    if (st.isAfter(et)) {
                        var text = window.translation.error_start_time_greater;
                        Swal.fire({
                            title: "",
                            icon: "error",
                            text: text,
                            confirmButtonText: "Ok",
                        });

                        return false;
                    }
                    var duplicated = false;
                    var data_array = datatable.rows().data().toArray();
                    duplicated = data_array.some(function (item, index) {
                        row_data = item;
                        if (DayOfTheWeek.toLowerCase() == row_data[1].toLowerCase() &&
                            StartTime.toLowerCase() == row_data[2].toLowerCase() &&
                            EndTime.toLowerCase() == row_data[3].toLowerCase()) {
                            return true;
                        }
                    });
                    if (duplicated) {
                        var text = "<ul><li>" +
                            window.translation.error_duplicated_scheduler_day
                                .replace("{0}", get_day_of_the_week_translation(DayOfTheWeek))
                                .replace("{1}", StartTime)
                                .replace("{2}", EndTime)
                            + "</li></ul>";
                        Swal.fire({
                            title: "",
                            icon: "error",
                            html: text,
                            confirmButtonText: "Ok",
                        });
                        return false;
                    }

                    var new_row = [
                        '',
                        DayOfTheWeek,
                        StartTime,
                        EndTime
                    ];
                    datatable.row.add(new_row).draw();
                    $("#SchedulerDay_DayOfTheWeek, #SchedulerDay_StartTime, #SchedulerDay_EndTime").val('');

                } else {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: 'There are some fields empty',
                        confirmButtonText: "Ok",
                    });
                }
                return false;
            });

            $('#connection-recurrent-scheduler-days').on('click', '.table-delete', function (e) {
                e.preventDefault();
                datatable
                    .row($(this).parents('tr'))
                    .remove()
                    .draw();
            });

            $('#save').on('click', function () {
                var data_array = datatable.rows().data().toArray();
                var registration_type = $("input[name='Opportunity_Registration_Type']").val();
                if ((data_array.length == 0 && registration_type != "Express Interest Only") || (registration_type == "Express Interest Only" && ($("#StartDate").val() != "" || $("#EndDate").val() != "") && data_array.length == 0)) {
                    var text = window.translation.error_days_of_the_week_needed;
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: text,
                        confirmButtonText: "Ok",
                    });
                    return false;
                }


                var ContactId = $("#ContactId").val();
                var StartDate = $("#StartDate").val();
                var EndDate = $("#EndDate").val();
                var valid = true;
                if (ContactId === '' || StartDate === '' || EndDate === '')
                    valid = false;
                //var valid = $('#ContactId, #StartDate, #EndDate').valid();


                if (registration_type == "Express Interest Only") {
                    valid = true;
                    if (ContactId === '')
                        valid = false;
                }

                if (valid) {
                    /*if (registration_type == "Express Interest Only") {
                        $("#create-connection-form").validate().settings.ignore = "#SchedulerDay_DayOfTheWeek, #SchedulerDay_StartTime, #SchedulerDay_EndTime, #StartDate, #EndDate";
                    } else {
                        $("#create-connection-form").validate().settings.ignore = "#SchedulerDay_DayOfTheWeek, #SchedulerDay_StartTime, #SchedulerDay_EndTime";
                    }*/
                } else {
                    Swal.fire({
                        title: "",
                        icon: "error",
                        text: "Some fields are empty",
                        confirmButtonText: "Ok",
                    });
                    return false;
                }

                var count = 0
                data_array.forEach(function (item, index) {
                    var DayOfWeek = item[1];
                    var StartTime = item[2];
                    var EndTime = item[3];
                    $('form').append(
                        '<input type="hidden" value="' + DayOfWeek + '" id="SchedulerDays[' + count + '].DayOfWeek" name="SchedulerDays[' + count + '].DayOfWeek" />'
                        + '<input type="hidden" value="' + StartTime + '" id="SchedulerDays[' + count + '].StartTime" name="SchedulerDays[' + count + '].StartTime" />'
                        + '<input type="hidden" value="' + EndTime + '" id="SchedulerDays[' + count + '].EndTime" name="SchedulerDays[' + count + '].EndTime" />'
                    );
                    count++;
                });

                return true;
            });


        }

    }
}

$(document).ajaxComplete(function () {
    hocvolunteer_scheduler_days_logic();
    hocvolunteer_skills();
    hocvolunteer_handle_modal_location();
    hocvolunteer_handle_grant_ps_modal();
    hocvolunteer_publish_action();
    hocvolunteer_copytooptions();
    validateQRStatus();
});

function hocvolunteer_handle_modal_location() {
    if ($('.add-location-field .button.open-form-modal').length > 0 && $('.add-location-modal').length > 0) {
        var formModalId = $('.add-location-modal').attr('data-form-id');
        $('.add-location-field .button.open-form-modal').attr('data-form-id', formModalId);
    }
}

function hocvolunteer_publish_action() {
    if ($('a.open-modal-publish').length > 0 && (!sessionStorage.getItem('User Profile') || sessionStorage.getItem('User Profile') != 'System Administrator' || $('a.open-modal-publish').attr('data-status') == 'Active')) {
        $('a.open-modal-publish').remove();
    }

    if ($('a.open-modal-publish').length > 0 && $('.modal-to-publish').length > 0) {
        var formModalId = $('.modal-to-publish').attr('data-form-id');
        $('a.open-modal-publish').attr('data-form-id', formModalId);
    }
}

function hocvolunteer_handle_grant_ps_modal() {
    if ($('a.button.open-form-modal').length > 0) {
        $('a.button.open-form-modal').each(function () {
            $(this).attr('href', '#');
        });
    }

    if ($('.button.open-form-modal.button-for-grant-ps').length > 0) {
        var formIdModal = '';
        if ($('.grant-ps-modal').length > 0) {
            formIdModal = $('.grant-ps-modal').attr('data-form-id');
        }
        if (formIdModal != '') {
            $('.button.open-form-modal.button-for-grant-ps').each(function () {
                $(this).attr('data-form-id', formIdModal);
                $(this).attr('data-element-reveal', 'form-user-modal-' + formIdModal);
            });
        }
    }
}


function hocvolunteer_create_team_member_behavior() {
    if ($('.create-new-member-form').length > 0) {
        if ($('.age-field-calculator').length > 0) {
            $('.create-new-member-form .age-field-calculator input[type="text"]').on('change', function () {
                var value = $(this).val();
                let currentAge = parseInt(value);
                var date = new Date();
                let years = date.getFullYear() - currentAge;
                let birthdate = years.toString() + "-01-01";
                $('.create-new-member-form .birthdate-hidden-field input[data-type="hidden"]').val(birthdate);
            });
        }
    }
}

function hocvolunteer_special_behaviors() {
    $('.no-regular-schedule-form').hide();
    $('.regular-schedule-form').hide();
}

function hocvolunteer_manage_checkbox_in_table(self) {
    if (!$('body').hasClass('hoc-volunteer-system')) {
        return;
    }
    if (self.find('thead th a.items-selected-all').length > 0) {
        self.find('thead th a.items-selected-all').on('click', function () {
            var selectClass = $(this).hasClass('all-selected');
            self.find('tbody td input[type="checkbox"]').each(function () {
                if (selectClass == true)
                    $(this).prop('checked', false);
                else
                    $(this).prop('checked', true);
            });
            if (selectClass == true)
                $(this).removeClass('all-selected');
            else
                $(this).addClass('all-selected');
            return false;
        });
    }
}


function hocvolunteer_create_volunteer_behaviors() {
    $('.formBlock').each(function () {
        var self = $(this);
        if (self.find('.schedule-type-create-vopp').length > 0) {
            let item = self.find('.schedule-type-create-vopp .input-group-select select option[value="To Be Scheduled"]');
            if (item !== null && item !== undefined && item.length > 0)  {
                item.remove();
            }

            //radio button
            item = self.find('.schedule-type-create-vopp .input-group-radiobutton input[type="radio"][value="To Be Scheduled"]');
            if (item !== null && item !== undefined && item.length > 0) {
                //let's try to determine if the radio button are displayed inline
                let parent = item.closest('.radio-input-inline');
                if (parent == null || parent == undefined || parent.length == 0)
                    parent = item.closest('.row');

                if (parent !== null && parent !== undefined) {
                    parent.remove();
                }
            }

            //scale rating
            item = self.find('.schedule-type-create-vopp .rating-class-section-scale input[type="radio"][value="To Be Scheduled"]');
            if (item !== null && item !== undefined && item.length > 0) {
                var id = item.attr('id');
                var label = self.find('.schedule-type-create-vopp .rating-class-section-scale label[for="' + id + '"]');
                if (label !== null && label !== undefined) {
                    label.remove();
                }

                item.remove();
            }
        }

    });
}

function hocvolunteer_load_data_from_storage(formBlock) {
    var nextToken = formBlock.find('input[name="token_next_page"]').val();

    if (nextToken !== undefined && nextToken !== null && nextToken !== '') {
        var formData = sessionStorage.getItem(nextToken);
        var hiddenFields = formBlock.find('input[type="hidden"]');
        var textFields = formBlock.find('input[type="hidden"]');

        if (formData !== null && formData !== undefined && hiddenFields !== null && hiddenFields !== undefined) {
            var formObj = JSON.parse(formData);
            let trySetNormalFields = false;
            if (formObj.PopulateFieldsWithTheseValues !== null && formObj.PopulateFieldsWithTheseValues !== undefined && formObj.PopulateFieldsWithTheseValues === true) {
                trySetNormalFields = true;
            } 

            var data = Object.values(formObj);
            hiddenFields.each(function () {
                var value = $(this).val();
                var field = $(this);

                if (value.startsWith('ls:')) {
                    var token = value.replace('ls:', '');
                    if (token !== '') {
                        const filteredRecord = data.find(item => (item.sf_field && item.sf_field.toLowerCase() === token.toLowerCase()));
                        if (filteredRecord) {
                            field.val(filteredRecord.value);
                            var name = field.attr('name');
                            if (name.startsWith('default-value-token-')) {
                                name = name.replaceAll('default-value-token-', '');
                                formBlock.find('input[name="' + name + '"]').val(filteredRecord.value);
                            }
                            else if (name.indexOf('[timezone]') != -1) {
                                formBlock.find('input[name="' + name + '"]').val(filteredRecord.value);
                                getTimezoneFromLocation(filteredRecord.value, name)
                            }
                        }
                    }
                } else if (trySetNormalFields === true && value != '' && $(this).hasClass("sf_field")) {
                    const filteredRecord = data.find(item => item.sf_field === value);
                    if (filteredRecord) {
                        let nameField = $(this).prop("name");

                        if (nameField !== null && nameField !== undefined) {
                            nameField = nameField.replace('[sf_field]', '');
                            let typeField = $('input[name="' + nameField + '[type]"]').val();
                            let selectorField = '[name="' + nameField + '[value]"]';

                            if (typeField == 'select') {
                                selectorField = 'select' + selectorField;
                                $(selectorField).val(filteredRecord.value).trigger('change');
                            } else {
                                selectorField = 'input' + selectorField;
                                $(selectorField).val(filteredRecord.value);
                            }
                        }
                    }
                }
            });

            
        }
    }
}

function get_token_next_page() {
    var date = new Date();
    return date.getFullYear().toString() + "" + date.getMonth().toString() + "" + date.getDay().toString() + "" + date.getHours().toString() + "" + date.getMinutes().toString() + "" + date.getSeconds().toString();

}

function hocvolunteer_save_data_in_local_storage(formValues) {
    try {
        var stringValues = JSON.stringify(formValues);
        var date = new Date();
        var key = get_token_next_page();
        sessionStorage.setItem(key, stringValues);
        return key;
    } catch (err) {
        console.log(err);
    }
}

function hocvolunteer_set_managing_org_name() {
    try {
        if ($('.pp-managing-org').length > 0) {
            var item = localStorage.getItem('llama-sp-current-org');
            if (item !== null && item !== undefined && item !== '') {
                var objectValue = JSON.parse(item);
                $('.pp-managing-org span.org-name').text(objectValue.name);
                $('.pp-managing-org-logo').html('<img width="50%" src="' + objectValue.urlImage + '" />');
            }
        }

    } catch (err) {
        console.log(err);
    }
}



function hocvolunteer_scheduler_days_logic() {
    
    if ($('a.remove-scheduler-day').length > 0) {
        if (!$('a.remove-scheduler-day').hasClass('event-included')) {
            $('a.remove-scheduler-day').addClass('event-included')
            $(' a.remove-scheduler-day').on('click', function () {
                var objectData = [];
                objectData.push($(this).data('record-id'));
                $.ajax({
                    url: '/remove-scheduler-day',
                    method: 'POST',
                    data: { schedulerDayIds: JSON.stringify(objectData) },
                    dataType: "json",
                }).done(function (data) {
                    if (data != undefined) {
                        swal.fire({
                            title: data.message,
                            icon: (data.code == 500) ? "error" : "info"
                        });
                        window.location.reload();
                    }
                });

            });
        }
    }

    if ($('input[name="scheduler_id"]').length > 0 && $(' input[name="scheduler_id"]').val() != '') {
        $('form.button.submit-button.custom-button').attr('disabled', 'disabled');
        if ($('.fields-section .sf_field[value="LLSHOC__Scheduler__c"]').length > 0) {
            var idField = $('.fields-section .sf_field[value="LLSHOC__Scheduler__c"]').prop('name');
            idField = idField.replace('[sf_field]', '');
            $('.fields-section input[name="'+idField+'[value]"]').val($('input[name="scheduler_id"]').val());
            $('form.button.submit-button.custom-button').removeAttr('disabled', 'disabled');
        }
    }
}

function hocvolunteer_skills() {

    if ($('body.page-partner-portal-view-opportunity a.delete-skill').length > 0) {
        if (!$('body.page-partner-portal-view-opportunity a.delete-skill').hasClass('event-included')) {
            $('body.page-partner-portal-view-opportunity a.delete-skill').addClass('event-included')
            $('body.page-partner-portal-view-opportunity a.delete-skill').on('click', function () {

                var skillID = $(this).data('skill-id');
                Swal.fire({
                    title: window.translation.are_you_sure,
                    text: window.translation.delete_ask_message_skill,
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonClass: 'btn-danger',
                    confirmButtonText: window.translation.delete,
                    cancelButtonText: window.translation.cancel,
                    closeOnConfirm: false,
                    showLoaderOnConfirm: true,
                    closeOnCancel: true

                }).then(function (result) {
                    if (result.isConfirmed) {
                        $.ajax('/hocv-remove-skillrating/' + skillID)
                            .done(function (resp) {
                                var response = jQuery.parseJSON(resp);
                                if (response.code != null && response.code == "200") {
                                    Swal.fire({
                                        title: window.translation.deleted,
                                        text: window.translation.delete_success_message_skill,
                                        icon: 'success',
                                    });
                                    window.location.reload(true);
                                } else {
                                    Swal.fire({
                                        title: 'Error',
                                        text: response.message,
                                        icon: 'error'
                                    });
                                }
                            });

                    }
                });
            });
        }
    }

}

function hocvolunteer_emailvolunteer(parameters) {
}
function hocvolunteer_markdeclined(parameters) {

    var decline_reason_dropdown = null;
    
        $.ajax({
            type: 'GET',
            url: '/hocv-get-decline-reason-options',
            dataType: "json",
            beforeSend: function () {
                $('.grid-connections-editable button.change-status').prop('disabled', true);
            },
            success: function (response) {
                decline_reason_array = ["<select>", "<option value=''>" + window.translation.select + "</option>"];
                var option = "";
                for (var i = 0; i < response.length; i++) {
                    option = "<option value='" + response[i].value + "'>" + response[i].label + "</option>";
                    decline_reason_array.push(option);
                }
                decline_reason_array.push("</select>");
                decline_reason_dropdown = decline_reason_array.join('');
                $('.grid-connections-editable button.change-status').prop('disabled', false);

                var parametersTokens = parameters.split('~');
                var fieldToUse = parametersTokens[0].split(',');
                var listingId = parametersTokens[1];
                var datatableId = 'dataTable' + listingId;
                var datatable = $('#' + datatableId).DataTable();
                special_action_status(listingId, datatable, fieldToUse[0], "Declined", "", decline_reason_dropdown)
            },
            error: function (jqXHR, textStatus, errorThrown) {
                Swal.fire({
                    title: textStatus,
                    icon: "error",
                    text: errorThrown
                });
            }
        });
    

}
function hocvolunteer_markconfirmed(parameters) {
    var parametersTokens = parameters.split('~');
    var fieldToUse = parametersTokens[0].split(',');
    var listingId = parametersTokens[1];
    var datatableId = 'dataTable' + listingId;
    var datatable = $('#' + datatableId).DataTable();
    special_action_status(listingId, datatable, fieldToUse[0], "Confirmed", "")
}

function hocvolunteer_markattended(parameters) {
    var parametersTokens = parameters.split('~');
    var fieldToUse = parametersTokens[0].split(',');
    var listingId = parametersTokens[1];
    var datatableId = 'dataTable' + listingId;
    var datatable = $('#' + datatableId).DataTable();
    special_action_status(listingId, datatable, fieldToUse[0], "Confirmed", "Attended (and Hours Verified)")
}

function hocvolunteer_marknotattended(parameters) {
    var parametersTokens = parameters.split('~');
    var fieldToUse = parametersTokens[0].split(',');
    var listingId = parametersTokens[1];
    var datatableId = 'dataTable' + listingId;
    var datatable = $('#' + datatableId).DataTable();
    special_action_status(listingId, datatable, fieldToUse[0], "Confirmed", "Not Attended")
}


function hocvolunteer_reset_password(parameters) {
    
    var parametersTokens = parameters.split('~');
    var fieldToUse = parametersTokens[0].split(',');
    var listingId = parametersTokens[1];
    var datatableId = 'dataTable' + listingId;
    var datatable = $('#' + datatableId).DataTable();
    var urlSite = '';
    var checked = [];
    var emails = [];
    var profiles = [];
    var checkedCount;
    datatable.$('input.check-record[type="checkbox"]:checked').each(function () {
        var valueId = $(this).attr('data-' + fieldToUse[0]);
        checked.push(valueId);
        var emailId = $(this).attr('data-' + fieldToUse[1]);
        emails.push(emailId);
        var profileId = $(this).attr('data-' + fieldToUse[2]);
        profiles.push(profileId);
    });
    var emailValues = emails.join(',');
    var profileValues = profiles.join(',');
    $.ajax({
        type: 'POST',
        data: { emailValues: emailValues, profileValues: profileValues},
        url: urlSite + '/partner-portal-reset-password',
        dataType: "json",
        beforeSend: function () {
            var processing_element = $('#' + datatableId).parents('.listingcmsblock ').find('.processing_screen');
            if (processing_element.length > 0) {
                processing_element.removeClass('is-hidden');
            }
        },
        success: function (response) {
            
            if (response.code != null && response.code == "200") {

                Swal.fire({
                    title: '',
                    text: response.message,
                    icon: 'success'
                }).then(function (result) {
                    window.location.reload();
                });
                if (processing_element.length > 0) {
                    processing_element.addClass('hide');
                }

            }
            else {
                Swal.fire({
                    title: 'Error',
                    text: response.message,
                    icon: 'error'
                });
            }

            var processing_element = $('#' + datatableId).parents('.listingcmsblock ').find('.processing_screen');
            if (processing_element.length > 0) {
                processing_element.addClass('is-hidden');
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            Swal.fire({
                title: textStatus,
                icon: "error",
                text: errorThrown
            });

            var processing_element = $('#' + datatableId).parents('.listingcmsblock ').find('.processing_screen');
            if (processing_element.length > 0) {
                processing_element.addClass('is-hidden');
            }
        }
    });

}

function hocvolunteer_grant_cms(parameters) {
    hocvolunteer_asign_access_cms(parameters,true);
}

function hocvolunteer_revoke_cms(parameters) {
    hocvolunteer_asign_access_cms(parameters,false);
}

function hocvolunteer_asign_access_cms(parameters,CMSEditMode){
    var parametersTokens = parameters.split('~');
    var fieldToUse = parametersTokens[0].split(',');
    var listingId = parametersTokens[1];
    var datatableId = 'dataTable' + listingId;
    var datatable = $('#' + datatableId).DataTable();
    var urlSite = '';
    var checked = [];
    var names = [];
    var emails = [];
    var usernames = [];
    var profiles = [];
    var checkedCount;
    datatable.$('input.check-record[type="checkbox"]:checked').each(function () {
        var valueId = $(this).attr('data-' + fieldToUse[0]);
        checked.push(valueId);
        var nameId = $(this).attr('data-' + fieldToUse[1]);
        names.push(nameId);
        var emailId = $(this).attr('data-' + fieldToUse[2]);
        emails.push(emailId);
        var usernameId = $(this).attr('data-' + fieldToUse[3]);
        usernames.push(usernameId);
        var profileId = $(this).attr('data-' + fieldToUse[4]);
        profiles.push(profileId);
    });

    if (checked.length == 0) {
        Swal.fire({
            title: 'Error',
            text: window.translation.please_select_a_valid_email_contact,
            icon: 'error'
        });
    }
    else if (checked.length > 1) {
        Swal.fire({
            title: 'Error',
            text: window.translation.please_select_only_a_contact,
            icon: 'error'
        });
    }
    else {
        var data = {};
        data.idsValue = checked;
        data.namesValue = names;
        data.emailCMSValues = emails;
        data.usernamesValues = usernames;
        data.profilesValues = profiles;
        data.CMSEditMode = CMSEditMode;
        let title = (!CMSEditMode)?"Revoke CMS Editor Access to " + names[0] + "?":"Assign CMS Editor Access to " + names[0] + "?";
        let text = (!CMSEditMode)?'CMS Access Revoke':'CMS Access granted';
        Swal.fire({
            title:title,
            icon: "warning",
            showCancelButton: true,
            confirmButtonClass: 'btn-danger',
            confirmButtonText: "Confirm",
            cancelButtonText: window.translation.cancel,
            closeOnConfirm: false,
            showLoaderOnConfirm: true,
            closeOnCancel: true
        }).then(function (result) {
            if (result.isConfirmed) {
                $.ajax({
                    type: 'POST',
                    url: urlSite + "llama-grant-cms-access",
                    data: data,
                    beforeSend: function () {
                        $('.processing_screen').show();
                    },
                    success: function (data) {
                        data = JSON.parse(data);
                        if (data.code == "200") {
                           Swal.fire({
                                title: window.translation.success,
                                text: text,
                                icon: "success",
                                showCancelButton: false,
                                confirmButtonText: "Ok",
                                closeOnConfirm: true
                            }).then(function (result) {
                                location.reload();
                            });
                        } else {
                            Swal.fire({
                                icon: "error",
                                title: data.message,
                                confirmButtonText: "Ok",
                            });
                        }

                    },
                    complete: function (jqXHR, textStatus) {
                        $('.processing_screen').hide();
                    }
                });
            }



        });
    }
}

function hocvolunteer_grant_partner_staff(parameters) {
    var parametersTokens = parameters.split('~');
    var fieldToUse = parametersTokens[0].split(',');
    var listingId = parametersTokens[1];
    var datatableId = 'dataTable' + listingId;
    var datatable = $('#' + datatableId).DataTable();
    var urlSite = '';
    var checked = [];
    var names = [];
    var profiles = [];
    var firstNames = [];
    var lastNames = [];
    var emails = [];
    var useNewGrantmodal = '';
    datatable.$('input.check-record[type="checkbox"]:checked').each(function () {
        var valueId = $(this).attr('data-' + fieldToUse[0]);    
        checked.push(valueId);
        var valueName = $(this).attr('data-name');
        names.push(valueName);
        if (fieldToUse.length > 1) {
            var profileId = $(this).attr('data-' + fieldToUse[1]);
            profiles.push(profileId);
            if (fieldToUse[2]) {
                var tokenInfo = $(this).attr('data-' + fieldToUse[2]);
                firstNames.push(tokenInfo);
            }
            if (fieldToUse[3]) {
                var tokenInfo = $(this).attr('data-' + fieldToUse[3]);
                lastNames.push(tokenInfo);
            }
            if (fieldToUse[4]) {
                var tokenInfo = $(this).attr('data-' + fieldToUse[4]);
                emails.push(tokenInfo);
            }
        }
        useCustomFeature = $('#grant-ps-' + checked[0]).attr('data-use-custom-function');
        useOldGrantmodal = $('#grant-ps-' + checked[0]).attr('data-use-old-function');
    });

    if (checked.length == 0) {
        Swal.fire({
            title: 'Error',
            text: window.translation.please_select_a_valid_email_contact,
            icon: 'error'
        });
    }
    else if (checked.length > 1) {
        Swal.fire({
            title: 'Error',
            text: window.translation.please_select_only_a_contact,
            icon: 'error'
        });
    }
    else {
        if ($('#grant-ps-' + checked[0]).length > 0) {

            if (useOldGrantmodal) {
                $('#grant-ps-' + checked[0]).trigger('click');
            }
            else if (useCustomFeature) {
                // find object
                var fn = window[useCustomFeature];

                // is object a function?
                if (typeof fn === "function") {
                    $('input[name="listingcmsid"][value="' + listingId + '"]').parents('.blockContainer').find('.processing_screen').removeClass('is-hidden');
                    var fnparams = [];
                    fnparams.push(checked[0]);
                    fnparams.push(names[0]);
                    
                    fn.apply(null, fnparams);
                }
            }
            else {
                hoc_volunteer_specialmodalforgrantPS(checked[0], names[0], profiles, firstNames, lastNames, emails);
            }
        }
    }
}


function hoc_volunteer_specialmodalforgrantPS(recordId, name, profiles, firstNames, lastNames, emails) {

    var profile = profiles && profiles.length > 0 ? profiles[0] : '';
    var firstName = firstNames && firstNames.length > 0 ? firstNames[0] : '';
    var lastName = lastNames && lastNames.length > 0 ? lastNames[0] : '';
    var email = emails && emails.length > 0 ? emails[0] : '';
    $.ajax({
        type: 'GET',
        url: '/hocv-get-ps-options?contactId='+recordId,
        dataType: "json",
        beforeSend: function () {
            
        },
        success: function (response) {
            $('.processing_screen').addClass('is-hidden');
            if (response.code == "200") {
                var contactName = response.contactName ? response.contactName : name;
                var organizationsWithAccess = response.organizationsWithAccess;
                var organizations = response.organizations;
                var options = '';
                organizations.forEach(function (item) {
                    options += '<option value='+item.Id+'>' + item.Name +'</option>';
                });

                var email_html = '<div class="html-for-grant-ps" style="min-height: 300px;">' +
                    '<div class="row" >' +
                    '<div class="small-3 columns text-left" style="margin-top:10px; height: 40px; padding-right: 0px;">' +
                    '<strong> Contact:</strong >' + 
                    '</div > <div class="small-9 columns text-left" style="height:50px;">' +
                    '<label> '+ contactName +'</label>' +
                    '</div>' +
                    '</div >' +
                    '<div class="row">' +
                    '<div class="small-3 columns text-left"  style="margin-top:10px; height: 40px; padding-right: 0px;">' +
                    '<strong>Organizations:</strong>' +
                    '</div>' +
                    '<div class="small-9 columns text-left" style="">' +
                    '<select id="orgSelection"  class="no-custom-multiple" multiple>' +
                    options +
                    '</select>' +
                    '</div>' +
                    '</div>' +
                    '</div > ';

                var email_html_w_values = email_html;

                Swal.fire({
                    title: window.translation.assign_partner_staff_access,
                    showCancelButton: true,
                    confirmButtonClass: 'btn-danger',
                    confirmButtonText: window.translation.grant_access,
                    cancelButtonText: window.translation.cancel,
                    closeOnConfirm: false,
                    showLoaderOnConfirm: true,
                    closeOnCancel: true,
                    html: email_html_w_values,
                    customClass: 'swal-wide modal-email-volunteers'

                }).then(function (result) {
                    if (result.isConfirmed) {
                        var accountId = $('#orgSelection').val();
                        $.ajax({
                            type: "POST",
                            url: '/hocv-update-ps/',
                            data: "contatid=" + recordId + "&accountId=" + accountId + '&profile=' + encodeURIComponent(profile) + '&firstName=' + encodeURIComponent(firstName) + '&lastName=' + encodeURIComponent(lastName) + '&email=' + encodeURIComponent(email),
                        }).done(function (resp) {
                            var response = jQuery.parseJSON(resp);
                            if (response.code != null && response.code == 200) {
                                var messageToDisplay = response.message;
                                Swal.fire({
                                    title: messageToDisplay,
                                    text: '',
                                    icon: 'success'
                                });
                                window.location.reload();
                            } else {
                                var html = "<ul>";
                                for (key in response.connections) {
                                    table.find("input[value='" + key + "']").closest("tr").addClass('error');
                                    var index = table.find('thead th.contact-name').index();
                                    var conn_name = table.find("input[value='" + key + "']").closest("tr").find("td").eq(index).html();
                                    var error_array = response.connections[key];
                                    for (var i = 0; i < error_array.length; i++) {
                                        html += "<li>" + conn_name + ": " + error_array[i] + "</li>";
                                    }
                                }
                                html += "</ul>";
                                $(".validation-summary-errors").html(html);
                                $(".validation-summary-errors").show();
                                Swal.fire({
                                    title: 'Error',
                                    text: response.message,
                                    icon: 'error'
                                });
                            }
                        });

                    }
                });
                initSlimSelect('#orgSelection', organizationsWithAccess, $('.html-for-grant-ps'));
                
            }
            else {

                $('.processing_screen').addClass('is-hidden');
                Swal.fire({
                    title: "error",
                    icon: "error",
                    text: response.message
                });
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {

            $('.processing_screen').addClass('is-hidden');
            Swal.fire({
                title: textStatus,
                icon: "error",
                text: errorThrown
            });
        }
    });


    /*selectDynamiFilterModal = new SlimSelect({
                select: 'select[id="orgSelection"]',
                placeholder: 'Picklist to Display',
                showSearch: true
            });
    */
}

function initSlimSelect(selectorInput, currentValue, self) {
    try {
        selectDynamiFilterModal = new SlimSelect({
            select: selectorInput,
            placeholder: 'Organization to Manage',
            showSearch: true
        });
        if (currentValue) {
            selectDynamiFilterModal.set(currentValue);
        }
    } catch (error) {
        try {
            if (self.find('.ss-main.no-custom-multiple').length > 0) {
                self.find('.ss-main.no-custom-multiple').remove();
                self.find(selectorInput).removeAttr('data-ssid');
                self.find(selectorInput).removeAttr('aria-hidden');
                self.find(selectorInput).removeAttr('style');
                selectDynamiFilterModal = new SlimSelect({
                    select: selectorInput,
                    placeholder: 'Organization to Manage',
                    showSearch: true
                });
                if (currentValue && currentValue != '') {
                    selectDynamiFilterModal.set(currentValue);
                }
            }
        } catch (errorInner) {
            console.log('initSlimSelect: ' + errorInner)
        }
    }
}
function hocvolunteer_prepare_emailvolunteer(listingcmsId) {
    var urlSite = '';
    var listingBlock = $('input[type="hidden"][name="listingcmsid"][value="' + listingcmsId + '"]').parent('.listingcmsblock.blockContainer');
    var emailTemplatesData = null;
    $.ajax({
        type: 'GET',
        url: '/hocv-email-templates',
        dataType: "json",
        beforeSend: function () {
            $('#email-volunteers-button').prop('disabled', true);
        },
        success: function (response) {
            if (response.code == "200") {
                emailTemplatesData = response.emailTemplatesData;

                for (var i = 0; i < emailTemplatesData.length; i++) {
                    emailTemplatesData[emailTemplatesData[i].Id] = emailTemplatesData[i];
                }

                var templateOptions = '';
                var templateOptionsArray = JSON.parse(response.emailTemplatesDropdown);
                for (i = 0; i < templateOptionsArray.length; i++) {
                    if (templateOptionsArray[i].attribute == null)
                        templateOptionsArray[i].attribute = '';
                    templateOptions += '<option data-CC="' + templateOptionsArray[i].attribute + '" value="' + templateOptionsArray[i].value + '">' + templateOptionsArray[i].label + '</option>';
                }
                var email_html = '<div class="html-for-email-volunteers">\
							<div class="row">\
								<div class="small-12 columns text-left">\
									<p>\
										' + window.translation.email_selected_message + '\
									</p>\
								</div>\
							</div>\
							<div class="row">\
								<div class="small-2 columns text-left">\
									<strong>' + window.translation.email_to + '</strong>\
								</div>\
								<div class="small-10 columns text-left" style="overflow-y: scroll; height:50px">\
									<span id="to-email-volunteers">{0}</span>\
								</div>\
							</div>\
                            <div class="row">\
								<div class="small-2 columns text-left" style="margin-top:10px; height: 40px;">\
									<strong>' + window.translation.email_cc + '</strong>\
								</div>\
								<div class="small-10 columns text-left" style="height:50px">\
                                    <input id="cc-email-volunteers" type="test" value=""  />\
								</div>\
							</div>\
							<div class="row">\
								<div class="small-2 columns text-left">\
									<strong>' + 'Email template:' + '</strong>\
								</div>\
								<div class="small-10 columns text-left" style="">\
									<select id="emailTemplate">\
									'+ templateOptions + '\
									</select>\
								</div>\
							</div>\
							<div class="row">\
								<div class="small-2 columns text-left" style="margin-top:10px; height: 40px;">\
									<strong>' + window.translation.email_subject + '</strong>\
								</div>\
								<div class="small-10 columns text-left" style="height:50px">\
									<input id="subject-email-volunteers" value="' + response.Subject + '" />\
								</div>\
							</div>\
							<div class="row">\
								<div class="small-2 columns text-left">\
									<strong>' + window.translation.email_message + '</strong>\
								</div>\
								<div class="small-10 columns text-left">\
									<textarea id="message-email-volunteers" cols="50" rows="10">' + response.Body + '</textarea>\
								</div>\
							</div>\
						</div>';
                listingBlock.find('button.special-action-listing[data-action="hocvolunteer_emailvolunteer"]').click(function () {
                    var checked = [];
                    var contactsName = [];
                    var contactsEmails = [];
                    var checkedCount;
                    var status = $(this).prop("id");
                    var isThereError = false;

                    var datatable_connections = $('#dataTable' + listingcmsId).dataTable();
                    datatable_connections.$('input[type="checkbox"].check-record:checked').each(function () {
                        var connID = $(this).data('id');
                        var connEmail = $(this).data('llshoc__contact_email__c');
                        var conn_name = $(this).data('llshoc__contact_name__c');
                        checked.push(connID);
                        if (contactsName.indexOf(conn_name) == -1) contactsName.push(conn_name);
                        if (connEmail != null && connEmail != undefined && connEmail != '') {
                            if (contactsEmails.indexOf(connEmail) == -1) {
                                contactsEmails.push(connEmail);
                            }

                        }
                    });
                    checkedCount = checked.length;
                    if (checkedCount > 0) {
                        if (isThereError == true) {
                            Swal.fire({
                                title: 'Error',
                                text: window.translation.error_message_email_volunteers,
                                icon: 'error'
                            });
                        } else {
                            var email_html_w_values = email_html.replace('{0}', contactsName.join(", ") + ".");

                            Swal.fire({
                                title: window.translation.email_selected_contacts,
                                showCancelButton: true,
                                confirmButtonClass: 'btn-danger',
                                confirmButtonText: window.translation.email_send,
                                cancelButtonText: window.translation.cancel,
                                closeOnConfirm: false,
                                showLoaderOnConfirm: true,
                                closeOnCancel: true,
                                html: email_html_w_values,
                                customClass: 'swal-wide modal-email-volunteers'

                            }).then(function (result) {
                                if (result.isConfirmed) {
                                    var subject = encodeURIComponent($('<div/>').text($(".swal2-container #subject-email-volunteers").val()).html());
                                    var cc = encodeURIComponent($('<div/>').text($(".swal2-container #cc-email-volunteers").val()).html());
                                    var message = encodeURIComponent($('<div/>').text($(".swal2-container #message-email-volunteers").val()).html());
                                    $.ajax({
                                        type: "POST",
                                        url: urlSite + '/hocv-send-email/',
                                        data: "conns=" + checked + "&email_subject=" + subject + "&email_message=" + message + "&cc=" + cc,
                                    }).done(function (resp) {
                                        var response = jQuery.parseJSON(resp);
                                        if (response.code != null && response.code == 200) {
                                            var messageToDisplay = response.message;
                                            Swal.fire({
                                                title: messageToDisplay,
                                                text: '',
                                                icon: 'success'
                                            });
                                            datatable_connections.ajax.reload();
                                        } else {
                                            var html = "<ul>";
                                            for (key in response.connections) {
                                                table.find("input[value='" + key + "']").closest("tr").addClass('error');
                                                var index = table.find('thead th.contact-name').index();
                                                var conn_name = table.find("input[value='" + key + "']").closest("tr").find("td").eq(index).html();
                                                var error_array = response.connections[key];
                                                for (var i = 0; i < error_array.length; i++) {
                                                    html += "<li>" + conn_name + ": " + error_array[i] + "</li>";
                                                }
                                            }
                                            html += "</ul>";
                                            $(".validation-summary-errors").html(html);
                                            $(".validation-summary-errors").show();
                                            Swal.fire({
                                                title: 'Error',
                                                text: response.message,
                                                icon: 'error'
                                            });
                                        }
                                    });

                                }
                            });

                        }

                    } else {
                        Swal.fire({
                            title: window.translation.please_select_at_least_one_connection,
                            icon: "info"
                        });
                    }
                    
                });
                $('#email-volunteers-button').prop('disabled', false);
            }
            else{
                Swal.fire({
                    title: "error",
                    icon: "error",
                    text: response.message
                });
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            Swal.fire({
                title: textStatus,
                icon: "error",
                text: errorThrown
            });
        }
    });
    
}
function special_action_status(listingId, datatable, fieldToUse, status, attendance_status, decline_reason_dropdown) {
    var urlSite = '';
    var checked = [];
    var checkedCount;
    var datatableId = 'dataTable' + listingId;
    var table = $('#' + datatableId);
    datatable.$('input.check-record[type="checkbox"]:checked').each(function () {
        var valueId = $(this).attr('data-' + fieldToUse);
        checked.push(valueId);
    });
    checkedCount = checked.length;
    if (checkedCount > 0) {
        var title = window.translation.set_confirmed_title;
        if (status == "Declined") {
            title = window.translation.set_declined_title;
        }
        else if (attendance_status == "Not Attended") {
            title = window.translation.set_not_attended_title;
        }
        else if (attendance_status == "Attended (and Hours Verified)") {
            title = window.translation.set_attended_title;
        }

        title = title.replace("{0}", checkedCount);
        var options = {
            title: title,
            icon: "warning",
            showCancelButton: true,
            confirmButtonClass: 'btn-danger',
            confirmButtonText: window.translation.yes,
            cancelButtonText: window.translation.no,
            closeOnConfirm: false,
            showLoaderOnConfirm: false,
            closeOnCancel: true,
            showLoaderOnConfirm: true,
            allowOutsideClick: () => false,
            preConfirm: () => {

                var decline_reason = $('.swal2-popup.swal2-modal .decline-reason-field select').val();
                if (status == "Declined" && decline_reason == '') {
                    $('.swal2-popup.swal2-modal .decline-reason-field select').next('label.error').show().css("visibility", "visible");
                    return false;
                }

                return $.ajax({
                    type: 'POST',
                    data: { conns: checked, status: status, decline_reason: decline_reason, attendance_status: attendance_status },
                    url: urlSite + '/hocv-update-connections-status',
                    dataType: "json",
                    success: function (response) {

                        var datatable = table.DataTable();
                        if (response.code != null && response.code == "200") {

                            var processing_element = $('#' + datatableId).parents().find('.processing_screen_table');
                            if (processing_element.length > 0) {
                                processing_element.removeClass('hide');
                            }
                            Swal.fire({
                                    title: '',
                                    text: window.translation.connections_updated,
                                    icon: 'success'
                            });
                            window.location.reload();
                            if (processing_element.length > 0) {
                                processing_element.addClass('hide');
                            }

                        }
                        else {
                            Swal.fire({
                                title: 'Error',
                                text: response.message,
                                icon: 'error'
                            });
                        }
                    },
                    error: function (jqXHR, textStatus, errorThrown) {
                        Swal.fire({
                            title: textStatus,
                            icon: "error",
                            text: errorThrown
                        });
                    }
                });
            }
        };
        if (status == "Declined" && decline_reason_dropdown == null) {
            return false;
        }
        if (status == "Declined") {
            options.html = "<div class='decline-reason-field'><label class='required'>" + window.translation.decline_reason + "</label>" + decline_reason_dropdown + "<label class='error hidden'>" + window.translation.decline_reason + " " + window.translation.is_required + "</label></div>";
        }

        Swal.fire(options).then(function (result) {
            if (result.isConfirmed) {
            }
        });

    } else {
        Swal.fire({
            title: window.translation.please_select_at_least_one_connection,
            icon: "info"
        });
    }
}


function hocvolunteer_organizationcoordinator() {
    $('.coordinator-fields input[type="text"],.coordinator-fields select').on('change', function () {
        var nameField = $('.coordinator-source input[type="hidden"].sf_field').attr('name');
        var idField = nameField.replace('[sf_field]', '');
        var currentValue = $('input[name="' + idField + '[value]"]').val();
        if ($(this).val() != '') {
            $('input[name="' + idField + '[value]"]').val('PublicSite-Organization-Registration-Form');
        }
        else {
            var isBlank = true;
            $('.coordinator-fields input[type="text"],.coordinator-fields select').each(function () {
                isBlank = isBlank && $(this).val() == '';
            });
            if (isBlank) {
                $('input[name="' + idField + '[value]"]').val('');
            }
        }
    })
}

function hocvolunteer_copytooptions() {
    
    $('.internal-field-content input[type="hidden"]').each(function () {
        
        if ($(this).attr('name') && $(this).attr('name').indexOf('[type]') != -1 && $(this).val() == 'hidden') {

            var fieldId = $(this).attr('name').replace('[type]', '');
            if ($('input[name="' + fieldId + '[sf_field]"]').length > 0 && $('input[name="' + fieldId + '[sf_field]"]').val() != ''
                && $('input[name="' + fieldId + '[value]"][data-dontretsf="False"]').length > 0) {
                
                var fieldValue = $('input[name="' + fieldId + '[value]"]').val();
                if (fieldValue && fieldValue != '') {
                    var fieldOriginal = $('[data-copy-to-field="' + fieldId + '"]');
                    fieldOriginal.each(function () {
                        var cfield = $(this);
                        var nameField = cfield.attr('name');
                        var typeField = cfield.attr('type');
                        if (typeField === 'radio') {
                            cfield.val([fieldValue]);
                        } else {
                            cfield.val(fieldValue);
                        }
                        
                    })
                    //$('[data-copy-to-field="' + fieldId + '"]').val(fieldValue);

                }
            }
        }
    });
}

function cancel_occurrence_event() {
    $('body.hoc-volunteer-system-hybrid .listingcmsblock.occs-by-volunteer-opportunity-sp').on('click', "a.cancel-occurrence", function () {
        let today = moment();
        let isNotCancelable = calculate_occurrence_is_not_cancelable($(this), today);

        if (isNotCancelable === false) {
            let occurrenceId = $(this).attr('data-id');
            let urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
            urlSite = urlSite.substring(0, urlSite.length - 1);
            Swal.fire({
                title: window.translation.are_you_sure,
                text: window.translation.cancel_oc_ask_message,
                icon: "warning",
                showCancelButton: true,
                confirmButtonClass: 'btn-danger',
                confirmButtonText: window.translation.yes,
                cancelButtonText: window.translation.no,
                closeOnConfirm: false,
                showLoaderOnConfirm: true,
                closeOnCancel: true,
                allowOutsideClick: () => false,
                preConfirm: () => {
                    return $.ajax(urlSite + '/cancel-occ/' + occurrenceId)
                        .done(function (resp) {
                            var response = jQuery.parseJSON(resp);
                            if (response.code != null && response.code == "200") {
                                Swal.fire({
                                    icon: 'success',
                                    text: window.translation.occ_canceled,
                                    title: window.translation.canceled
                                });

                                location.reload()
                            } else {

                                Swal.fire({
                                    title: 'Error',
                                    text: response.message,
                                    icon: 'error'
                                });
                            }
                        });
                }


            }).then(function (result) {
                if (result.isConfirmed) {
                    /*
                    $.ajax(urlSite + '/cancel-occ/' + occurrenceId)
                        .done(function (resp) {
                            var response = jQuery.parseJSON(resp);
                            if (response.code != null && response.code == "200") {
                                Swal.fire({
                                    icon: 'success',
                                    text: window.translation.occ_canceled,
                                    title: window.translation.canceled
                                });

                                location.reload()
                            } else {

                                Swal.fire({
                                    title: 'Error',
                                    text: response.message,
                                    icon: 'error'
                                });
                            }
                        });
                    */
                }
            });
        }
    });
}

function ObjectLength(object) {
    var length = 0;
    for (var key in object) {
        if (object.hasOwnProperty(key)) {
            ++length;
        }
    }
    return length;
};

String.prototype.replaceAll = function (target, replacement) {
    return this.split(target).join(replacement);
};

function getTimezoneFromLocation(id, machineName, value) {
    
    const apiUrl = '/HOCVolunteers/GetTimezoneFromLocation';

    $.ajax({
        url: apiUrl,
        type: 'POST',
        contentType: 'application/json', 
        data: JSON.stringify({ id: id }),
        success: function (data) {
            var response = JSON.parse(data);
            if (response.code == '200') {                

                let fieldToUpdate = $('input[name="' + machineName + '"]');                
                fieldToUpdate.val(response.value);
                let labelToUpdate = $('p[name="' + machineName + '"]');
                labelToUpdate.html(response.value);

                if (value) {
                    var fieldSection = $('input[name="' + machineName + '"]').parent();
                    var dontPull = fieldSection.find('input[type="text"][data-dontretsf="True"]').length>0;
                    if (!dontPull) {
                        populateDateTimeFields(fieldSection, value, fieldSection.find('input.inclusive-dates__input').length > 0);
                    }
                }


            } else {
                console.error('Error:', response.message || 'Unexpected error occurred.');
            }
        },
        error: function (xhr, status, error) {
            console.error('AJAX Error:', error);
        }
    });
}



function locationTimezonEvents() {
    $('select[data-daterelated]').on('change', function () {
        const selectedValue = $(this).val();
        const dataRelatedValue = $(this).data('daterelated');
        $('.' + dataRelatedValue + ' input[name$="[timezone]"]').each(function () {
            if ($(this).closest('form').closest('.formwrapper').length > 0) {
                populateFromUrlTimezone(undefined, $(this).closest('form').closest('.formwrapper'), undefined, selectedValue, $(this).attr('name'))
            }
        });

    });
}

function fetchQRStatus() {

    // Get the current URL
    var currentUrl = window.location.pathname;

    // Check if the URL contains one of the specified strings
    if (currentUrl.includes("/partner-portal-location") || currentUrl.includes("/partner-portal-view-opportunity")) {
        // Make an AJAX call to the server-side method "get-qrstatus"
        $.ajax({
            url: '/get-qrstatus', 
            method: 'GET', // HTTP method
            success: function (data) {
                var response = JSON.parse(data);
                // Check if the response code is 200
                if (response.code === "200") {
                    // Check if the hidden input with id "qrstatus" exists
                    var qrStatusInput = $('#qrstatus');
                    if (qrStatusInput.length) {
                        // Update the value of the hidden input
                        qrStatusInput.val(response.value);
                    } else {
                        // If the hidden input does not exist, create it and append it to the body
                        $('<input>', {
                            type: 'hidden',
                            id: 'qrstatus',
                            value: response.value
                        }).appendTo('body');
                    }
                } else {
                    console.error('Error: Server returned code ' + response.code + ' with message: ' + response.message);
                }
            },
            error: function (xhr, status, error) {
                console.error('AJAX error: ' + status + ', ' + error);
            }
        });
    }
}

function validateQRStatus() {
    var currentUrl = window.location.pathname;
    var $qrStatusInput = $('#qrstatus');
    if ($qrStatusInput.length > 0) {
        var generalDisabled = $qrStatusInput.length > 0 && $qrStatusInput.val() == "false";
        var ocDisabled = generalDisabled || $qrStatusInput.val().indexOf('oc') == -1;
        var opDisabled = generalDisabled || $qrStatusInput.val().indexOf('op') == -1;
        var loDisabled = generalDisabled || $qrStatusInput.val().indexOf('lo') == -1;
        if (ocDisabled || opDisabled || loDisabled) {

            if (currentUrl.includes("/partner-portal-location") || currentUrl.includes("/partner-portal-view-opportunity")) {
                var dataTableSelector = '';
                if (loDisabled && currentUrl.includes("/partner-portal-location")) {
                    if ($('a[href^="/qr-location/p/"]').length > 0) {
                        dataTableSelector = $('a[href^="/qr-location/p/"]').first().closest('table').attr('id');
                        cleanupPageElements('#' + dataTableSelector, "/qr-location/p/");
                    }
                }
                if (currentUrl.includes("/partner-portal-view-opportunity")) {
                    if (ocDisabled && $('a[href^="/qr-occurrence/p/"]').length > 0) {
                        dataTableSelector = $('a[href^="/qr-occurrence/p/"]').first().closest('table').attr('id');
                        cleanupPageElements('#' + dataTableSelector, "/qr-occurrence/p/");
                    }
                    if (opDisabled) {
                        $('a[href^="/qr-opportunity/p/"]').remove();
                    }
                }
            }
        }
    }
}

function cleanupPageElements(dataTableSelector, hrefSelector) {
    if ($('a[href^="' + hrefSelector + '"]').length > 0 && $.fn.DataTable && $.fn.DataTable.isDataTable(dataTableSelector)) {
        var table = $(dataTableSelector).DataTable();

        table.cells().every(function () {
            var cellNode = this.node();
            var $cell = $(cellNode);
            var modifiedInCell = false;

            $cell.find('a[href^="' + hrefSelector + '"]').each(function () {
                $(this).remove();
                modifiedInCell = true;
            });

            if (modifiedInCell) {
                var htmlContent = $cell.html();
                var lastPipeIndex = htmlContent.lastIndexOf('|');

                if (lastPipeIndex !== -1) {
                    var partBeforePipe = htmlContent.substring(0, lastPipeIndex);
                    var partAfterPipe = htmlContent.substring(lastPipeIndex + 1);

                    if (partBeforePipe.endsWith(' ')) {
                        partBeforePipe = partBeforePipe.slice(0, -1);
                    }
                    if (partAfterPipe.startsWith(' ')) {
                        partAfterPipe = partAfterPipe.substring(1);
                    }

                    if (partBeforePipe.length > 0 && partAfterPipe.length > 0) {
                        $cell.html(partBeforePipe + ' ' + partAfterPipe);
                    } else {
                        $cell.html(partBeforePipe + partAfterPipe);
                    }
                }
            }
        });
    }
}

;
$(document).ready(function () {
    $('.qr-button-scan').on('click', function (e) {
        e.preventDefault();
        var currenBlock = $(this).closest('.qrblock');
        if (!$(this).hasClass('check-in-manually')) {
            startQRBlockScan(currenBlock);
        }
        return false;
    });

    $(document).on('click','.qr-button-check', function () {
        var currenBlock = $(this).closest('.qrblock');
        var action = $(this).attr('data-action');
        var connectionId = $(this).attr('data-connectionId');
        var opportunityName = $(this).attr('data-opportunityName');
        var timeRange = $(this).attr('data-timeRange');
        processCheck(action, connectionId, opportunityName, timeRange, currenBlock);
    });

    $('.qr-button-back').on('click', function () {
        var currenBlock = $(this).closest('.qrblock');
        ApplyScreenBack(currenBlock);
    });
});

jQuery(document).ajaxComplete(function (event, xhr, settings) {
    generateQRCode();
});

function ApplyScreenChangesOnceChecked(currenBlock) {
    currenBlock.find('.qr-block-initial').addClass('hide');
    currenBlock.find('.qr-block-grid-results').addClass('hide');
    currenBlock.find('.qr-block-scaning').addClass('hide')
    currenBlock.find('.qr-block-message-container').removeClass('hide');

}

function ApplyScreenChangesOnceScanned(currenBlock) {
    currenBlock.find('.qr-block-initial').addClass('hide');
    currenBlock.find('.qr-block-scaning').addClass('hide')
    currenBlock.find('.qr-block-grid-results').removeClass('hide');
    currenBlock.find('.qr-block-message-container').addClass('hide');
}

function ApplyScreenBack(currenBlock) {
    currenBlock.find('.qr-block-initial').removeClass('hide');
    currenBlock.find('.qr-block-scaning').addClass('hide')
    currenBlock.find('.qr-block-grid-results').addClass('hide');
    currenBlock.find('.qr-block-message-container').addClass('hide');
}
function startQRBlockScan(currenBlock) {
    var qrBlockId = currenBlock.find('input[name="QRBlockId"]').val();
    var blockId = currenBlock.find('input[name="BlockId"]').val();
    let selectedDeviceId = -1;
    const codeReader = new ZXing.BrowserQRCodeReader();

    let sourceSelect = document.getElementById('camera-select-' + qrBlockId);
    let scannedValueInput = document.getElementById('scannedValue-' + qrBlockId);
    codeReader.getVideoInputDevices().then(function (videoInputDevices) {
        scannedValueInput.value = '';
        let canContinue = false;
        if (videoInputDevices[0] !== null && videoInputDevices[0] !== undefined) {
            selectedDeviceId = videoInputDevices[0].deviceId;
            canContinue = true;
        } else {
            Swal.fire({
                title: window.translation.error,
                text: window.translation.sorry_camera_cannot_be_loaded,
                icon: "error",
                showCancelButton: false,
                confirmButtonText: "Ok",
            });
        }

        if (canContinue === false) {
            return;
        }


        if (videoInputDevices.length >= 1) {
            videoInputDevices.forEach(function (element) {
                var sourceOption = document.createElement('option');
                sourceOption.text = element.label;
                sourceOption.value = element.deviceId;
                sourceSelect.appendChild(sourceOption);
            });

            sourceSelect.onchange = function () {
                codeReader.reset();
                selectedDeviceId = sourceSelect.value;
                decodeOnceQR(codeReader, selectedDeviceId, scannedValueInput, qrBlockId, blockId);
            };

        }

        document.getElementById('new-qr-back-button').addEventListener('click', function () {
            codeReader.reset();
            scannedValueInput.value = '';
            currenBlock.find('.qr-block-scaning').addClass('hide');
            currenBlock.find('.qr-block-initial').removeClass('hide');

        });

        currenBlock.find('.qr-block-scaning').removeClass('hide');
        currenBlock.find('.qr-block-initial').addClass('hide');
        currenBlock.find('.qr-block-grid-results').addClass('hide');
        currenBlock.find('.qr-block-message-container').addClass('hide');
        decodeOnceQR(codeReader, selectedDeviceId, scannedValueInput, qrBlockId, blockId);
    }).catch(function (err) {
        currenBlock.find('.qr-block-scaning').addClass('hide');
        currenBlock.find('.qr-block-initial').removeClass('hide');
        currenBlock.find('.qr-block-grid-results').addClass('hide');
        currenBlock.find('.qr-block-message-container').addClass('hide');
        currenBlock.find('[name="scannedValue-' + qrBlockId + '"]').val('');
        console.error(err);
    });
}


function decodeOnceQR(codeReader, selectedDeviceId, connectionIdInput, qrBlockId, blockId) {
    codeReader.decodeFromInputVideoDevice(selectedDeviceId, 'video-canvas-qr').then(function (result) {
        connectionIdInput.value = result.text;
        processValueReader(codeReader, result.text, qrBlockId, blockId);
    }).catch(function (err) {
        console.log(err);
        let errMsg = String(err);
        if (!errMsg.includes('N: Video stream has ended before any code could be detected.')) {
            Swal.fire({
                title: window.translation.error,
                text: err,
                icon: "error",
                showCancelButton: false,
                confirmButtonText: "Ok",
            });

        }
    });
}

function processValueReader(codeReader, result, qrId, blockId) {
    var qrBlock = $('[name="QRBlockId-' + qrId + '"]');
    // Perform an AJAX POST request
    $.ajax({
        url: '/process-scan', // Server-side method endpoint
        type: 'POST',
        beforeSend: function () {
            showProcessingSpinner(qrBlock);
        },
        data: {
            QRBlockId: qrId,
            ScanValue: result,
            BlockId: blockId
        },
        success: function (response) {

            response = JSON.parse(response);
            // Check if the response code is 200
            if (response.code === 200) {
                // Check if the action is "quick-check"
                if (response.action === "quick-check") {
                    // Process the array of connections
                    const connections = response.connections;
                    qrBlock.find('.event-grid').empty();
                    if (connections && connections.length > 0) {
                        var htmlArray = convertEventDataToHtml(connections);
                        htmlArray.forEach(htmlItem => {
                            qrBlock.find('.event-grid').append(htmlItem);
                        });
                        ApplyScreenChangesOnceScanned(qrBlock);
                        if (connections.length == 1) {
                            qrBlock.find('.event-grid button.qr-button-check').trigger('click');
                        }
                    } else {
                        updateScreemMessage(qrBlock, window.translation.no_check_in_options_at_this_time, 'warning');
                        ApplyScreenChangesOnceChecked(qrBlock);
                    }
                    codeReader.reset();
                } else {
                    // Handle case of redirect
                    codeReader.reset();
                    window.location.href = response.action;
                }
            } else {
                // Handle non-200 response codes
                updateScreemMessage(qrBlock, response.message, response.code == 500 ? 'error' : 'warning');
                ApplyScreenChangesOnceChecked(qrBlock);
            }
            codeReader.reset();
            hideProcessingSpinner(qrBlock);
        },
        error: function (xhr, status, error) {
            Swal.fire({
                title: window.translation.error,
                text: error,
                icon: "error",
                showCancelButton: false,
                confirmButtonText: "Ok",
            });
            codeReader.reset();
            hideProcessingSpinner(qrBlock);
        }
    });
}

/**
* Formats a time string from "HH:MM:SS AM/PM" to "HH:MM AM/PM".
* Example: "6:30:00 AM" -> "6:30 AM"
* @param {string} timeStr The time string to format.
* @returns {string} The formatted time string.
*/
function formatTime(timeStr) {
    if (typeof timeStr === 'string' && timeStr.includes(':')) {
        const parts = timeStr.split(':');
        if (parts.length === 3) { // Expected format HH:MM:SS AM/PM
            // Reconstructs as HH:MM AM/PM by taking HH, MM, and the AM/PM part from the SS field.
            return parts[0] + ':' + parts[1] + parts[2].substring(parts[2].indexOf(' '));
        }
        return timeStr; // Return as is if not in the expected HH:MM:SS format
    }
    return ''; // Return empty if input is not a string or invalid
}

/**
 * Converts an array of event data objects into HTML card representations.
 * @param {Array<Object>} dataArray Array of event objects.
 *        Each object should have: connectionId, opportunityName, action, startTime, endTime.
 * @returns {Array<string>} An array of HTML strings, one for each event card.
 */
function convertEventDataToHtml(dataArray) {
    const htmlBlocks = [];

    if (!dataArray || !Array.isArray(dataArray)) {
        console.error("Input data must be an array.");
        return htmlBlocks;
    }

    $.each(dataArray, function (index, item) {
        // Validate essential item properties
        if (!item || typeof item.connectionId === 'undefined' || typeof item.opportunityName === 'undefined' || typeof item.action === 'undefined') {
            console.warn("Skipping item due to missing essential properties:", item);
            return; // continue to next item
        }

        const uniqueIdSuffix = index + 1; // To make IDs 1-based like event-title-1
        const eventTitleId = `event-title-${uniqueIdSuffix}`;

        const connectionId = item.connectionId;
        const opportunityName = item.opportunityName;
        const action = item.action; // e.g., "Check-In"

        const formattedStartTime = formatTime(item.startTime || '');
        const formattedEndTime = formatTime(item.endTime || '');
        const timeRange = (formattedStartTime && formattedEndTime) ? `${formattedStartTime} - ${formattedEndTime}` : window.translation.time_not_specified;

        // Determine button text and class based on action
        let buttonText = action;
        // Example: "Check-In" -> "Check-in"; "Sign Up" -> "Sign up"
        const actionWords = action.split(/[\s-]+/);
        buttonText = actionWords.map((word, idx) => {
            if (idx === 0) return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
            return word.toLowerCase();
        }).join(action.includes('-') ? '-' : ' ');

        buttonText = buttonText == 'Check-in' ? window.translation.check_in : (buttonText == 'Check-out' ? window.translation.check_out : buttonText);
        // Example: "Check-In" -> "check-in"; "Sign Up" -> "sign-up"
        const buttonClassSuffix = action.toLowerCase().replace(/\s+/g, '-');

        const ariaLabelButton = `${buttonText} for ${opportunityName}`;

        // --- Create HTML elements using jQuery ---

        const $article = $('<article>')
            .addClass('slds-card event-grid-item')
            .attr('aria-labelledby', eventTitleId)
            .attr('data-connectionId', connectionId);


        // Card Header
        const $cardHeader = $('<div>').addClass('slds-card__header slds-grid');
        const $headerMedia = $('<header>').addClass('slds-media slds-media_center slds-has-flexi-truncate');
        const $headerMediaBody = $('<div>').addClass('slds-media__body');
        const $headerTitle = $('<h3>')
            .addClass('slds-card__header-title opportunityName') // Added 'opportunityName' class as in example
            .attr('id', eventTitleId);
        const $headerTitleSpan = $('<span>')
            .addClass('slds-text-heading_small slds-truncate')
            .attr('title', opportunityName)
            .text(opportunityName);

        $headerTitle.append($headerTitleSpan);
        $headerMediaBody.append($headerTitle);
        $headerMedia.append($headerMediaBody);
        $cardHeader.append($headerMedia);
        $article.append($cardHeader);

        // Card Body (Time information)
        const $cardBody = $('<div>').addClass('slds-card__body slds-card__body_inner');
        const $bodyMedia = $('<div>').addClass('slds-media slds-media_center slds-m-bottom_small');
        const $bodyMediaFigure = $('<div>').addClass('slds-media__figure');
        const $timeIcon = $('<i>')
            .addClass('fa fa-regular fa-clock fa-lg event-time-icon') // Font Awesome icon
            .attr('aria-hidden', 'true')
            .attr('title', window.translation.time_label);

        $bodyMediaFigure.append($timeIcon);

        const $bodyMediaBody = $('<div>').addClass('slds-media__body');
        const $timeTextP = $('<p>')
            .addClass('slds-text-body_regular')
            .attr('title', timeRange);
        const $assistiveTextSpan = $('<span>')
            .addClass('slds-assistive-text')
            .text(window.translation.time_label+ ': ');

        $timeTextP.append($assistiveTextSpan).append(timeRange); // Appending text directly
        $bodyMediaBody.append($timeTextP);

        $bodyMedia.append($bodyMediaFigure).append($bodyMediaBody);
        $cardBody.append($bodyMedia);
        $article.append($cardBody);

        // Card Footer (Action Button)
        const $cardFooter = $('<footer>').addClass('slds-card__footer');
        const $actionButton = $('<button>')
            // Added 'qr-button-check' and 'slds-button' base classes as in example
            .addClass(`qr-button-check slds-button slds-button_${buttonClassSuffix}`)
            .attr('data-connectionId', connectionId)
            .attr('data-opportunityName', opportunityName)
            .attr('data-timeRange', timeRange) 
            .attr('data-action', buttonClassSuffix)
            .attr('aria-label', ariaLabelButton);

        const buttonIconClass = buttonText.toLowerCase().indexOf('check-in') != -1 ? 'fa fa-solid fa-arrow-right-to-bracket fa-fw slds-button__icon_left' : 'fa fa-solid fa-arrow-right-from-bracket fa-fw slds-button__icon_left';
        const $buttonIcon = $('<i>')
            .addClass(buttonIconClass) // Font Awesome icon
            .attr('aria-hidden', 'true');

        // Appending icon and then text (with a leading space for separation)
        $actionButton.append($buttonIcon).append(" " + buttonText);
        $cardFooter.append($actionButton);
        $article.append($cardFooter);

        htmlBlocks.push($article.prop('outerHTML'));
    });

    return htmlBlocks;
}

function processCheck(action, connectionId, opportunityName, opportunityShedule, currenBlock) {

    var actionText = action == "check-in" ? (window.translation.you_are_checking_in_to + ':') : (window.translation.you_are_checking_out_of + ':');

    actionText = actionText + '\n' + opportunityName + '\n' + opportunityShedule;
    Swal.fire({
        title: window.translation.are_you_sure,
        text: actionText,
        icon: "warning",
        showCancelButton: true,
        confirmButtonColor: "#ff0000",
        confirmButtonText: 'OK',
        cancelButtonText: window.translation.cancel,
        closeOnConfirm: false

    }).then(function (result) {
        if (result.isConfirmed) {


            $.ajax({
                url: '/quick-check', // Server-side method endpoint
                type: 'POST',
                data: {
                    action: action,
                    connectionId: connectionId
                },
                beforeSend: function () {
                    showProcessingSpinner(currenBlock);
                },
                success: function (response) {
                    response = JSON.parse(response);
                    // Check if the response code is 200
                    if (response.code === 200) {
                        var resultMessage = (action == "check-in" ? window.translation.check_in_successful_for : window.translation.check_out_successful_for) + ' ' + opportunityName + '!';
                        updateScreemMessage(currenBlock, resultMessage, 'success');
                        ApplyScreenChangesOnceChecked(currenBlock);
                    } else {
                        var responseMessage = response.message;
                        var messageType = 'error';
                        if (response.code === 400 && response.StatusForCheck && response.StatusForCheck != '') {
                            var messageType = 'warning';
                            switch (response.StatusForCheck) {
                                case 'TooLateForCheckOut':
                                    responseMessage = window.translation.check_out_closed_no_longer_available + ': ' + opportunityName + ' ' + opportunityShedule;
                                    break;
                                case 'AfterConnOver':
                                    responseMessage = window.translation.check_in_closed_no_longer_available + ': ' + opportunityName + ' ' + opportunityShedule;
                                    break;
                                case 'TooEarlyForCheckin':
                                    responseMessage = window.translation.check_in_not_yet_open_for + ': ' + opportunityName + ' ' + opportunityShedule;
                                    break;
                            }
                        }
                        updateScreemMessage(currenBlock, responseMessage, messageType);
                        ApplyScreenChangesOnceChecked(currenBlock);
                    }
                    hideProcessingSpinner(currenBlock);
                },
                error: function (xhr, status, error) {
                    updateScreemMessage(currenBlock, error, 'error');
                    ApplyScreenChangesOnceChecked(currenBlock);
                    hideProcessingSpinner(currenBlock);
                }
            });
            Swal.close();
        }
    });
}


function updateScreemMessage(currenBlock, message, messageType) {
    // Update the result-message h2 text
    currenBlock.find('.result-message').text(message);

    // Hide all icons by adding the 'hide' class
    currenBlock.find('.qr-block-message-container .slds-m-bottom_large').addClass('hide');

    // Show the appropriate icon based on the messageType
    if (messageType === 'success') {
        currenBlock.find('.qr-block-message-container .check-icon').removeClass('hide');
    } else if (messageType === 'warning') {
        currenBlock.find('.qr-block-message-container .warning-icon').removeClass('hide');
    } else if (messageType === 'error') {
        currenBlock.find('.qr-block-message-container .error-icon').removeClass('hide');
    }
}


// Function to show the processing spinner
function showProcessingSpinner(currenBlock) {
    var processingOverlay = currenBlock.find('#processing-overlay');
    if (processingOverlay) {
        processingOverlay.removeClass('hide');
        // Optional: Add slds-show if you prefer explicit show class
        // processingOverlay.classList.add('slds-show');
    }
}

// Function to hide the processing spinner
function hideProcessingSpinner(currenBlock) {
    var processingOverlay = currenBlock.find('#processing-overlay');
    if (processingOverlay) {
        processingOverlay.addClass('hide');
        // Optional: Remove slds-show if you used it
        // processingOverlay.classList.remove('slds-show');
    }
}


function generateQRCode() {
    $('.custom-qr[data-code-text]:not(.processed)').each(function () {
        var $div = $(this); // The current div jQuery object
        var textToEncode = $div.data('code-text'); // Get text from data attribute
        var element = this; // The raw DOM element (needed for QRCode library)

        // Clear any previous content (like placeholders)
        $div.empty();

        // Check if there's actually text to encode
        if (textToEncode) {
            try {
                // Create the QR Code instance
                // The library attaches the QR code (usually as an img or canvas)
                // directly inside the provided DOM element.
                new QRCode(element, {
                    text: textToEncode,
                    width: 128, // Adjust size as needed
                    height: 128, // Adjust size as needed
                    colorDark: "#000000",
                    colorLight: "#ffffff",
                    // Match ECCLevel.Q (Quartile) ~ High
                    correctLevel: QRCode.CorrectLevel.H
                });
            } catch (error) {
                console.error("Failed to generate QR code", error);
                $div.text('Error generating QR code.'); // Display error in the div
            }
        } else {
            // Handle cases where data-code-text is empty or missing
            console.warn("No text found to encode QR code in element:", element);
            $div.text('No data for QR code.'); // Optional: display a message
        }
        $div.addClass('processed');
    });
};
$(document).ready(function () {

    $.urlParamGet = function (name) {
        var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
        if (results === null) {
            return null;
        }
        else {
            return decodeURI(results[1]) || 0;
        }
    }

    window.allow_reload = true;
    apply_menu_tablet_and_mobile();
    fix_second_level_menu();
    fix_third_level_menu();
    fix_rss_latest_news();
    apply_top_for_fixed_regions();
    apply_floating_event_to_regions();
    validateRssBlock();
    validate_resize_for_responsive();
    fix_image_opp_detail();
    fix_horizontal_menu();

    fix_sidebar_ut0();
    validate_message_in_savedsearches();
    page_space_validation();

    return_desktop_event();

    accesibility_for_dropdown_menu();

    fix_cms_table_for_mobile();

    displayingForMac();

    tab_behaviors_in_menu();
    validateSpecialTables();
    skipPageBehaviors();
});

function skipPageBehaviors() {
    $('.skip-to-main-content').on('click', function (event) {
        event.preventDefault(); 
        var target = $(this).attr('href'); 
        if (target) {
            var targetElement = $(target); 
            if (targetElement.length) {
                if ($('body').find('.region-container.fixed').length > 0) {
                    const offset = $('body').find('.region-container.fixed').height();
                    const elementPosition = targetElement.offset().top;
                    const offsetPosition = elementPosition - offset;
                    window.scrollTo({
                        top: offsetPosition,
                        behavior: 'smooth'
                    });
                } else {
                    targetElement[0].scrollIntoView({ behavior: 'smooth', block: 'start' });
                }
                targetElement.attr('tabindex', '-1');
                targetElement.focus();
            }
        }
        return false;
    });
    $('.region-footer-content').on('click', function (event) {
        event.preventDefault();
        var target = $(this).attr('href');
        if (target) {
            var targetElement = $(target);
            if (targetElement.length) {
                if ($('body').find('.region-container.fixed').length > 0) {
                 
                    const offset = $('body').find('.region-container.fixed').height();
                    const elementPosition = targetElement.offset().top;
                    const offsetPosition = elementPosition - offset;
                    window.scrollTo({
                        top: offsetPosition,
                        behavior: 'smooth'
                    });

                } else {
                    targetElement[0].scrollIntoView({ behavior: 'smooth', block: 'start' });
                }
                targetElement.attr('tabindex', '-1');
                targetElement.focus();
            }
        }
        return false;
    });

}

function validateSpecialTables() {
    if ($('body').find('table.special-table-lightning').length > 0) {
        $('body').find('table.special-table-lightning tbody tr').hover(
            function () {
                $(this).css('background-color', '#F3F3F3');
            }, 
            function () {
                $(this).css('background-color', '');
            }
        );
    }

    if ($('body').find('.section-as-table-lightning').length > 0) {
        $('body').find('.section-as-table-lightning ul.list-items-lightning li').hover(
            function () {
                $(this).css('background-color', '#F3F3F3');
            },
            function () {
                $(this).css('background-color', '');
            }
        );

        $(document).on('mouseover', '.section-as-table-lightning.special-behavior-lightning ul.list-items-lightning li', function () {
            $(this).css('background-color', '#F3F3F3');
        });
        $(document).on('mouseout', '.section-as-table-lightning.special-behavior-lightning ul.list-items-lightning li', function () {
            $(this).css('background-color', '');
        });
    }
}


function displayingForMac() {
    const plataformS = navigator.platform.toLowerCase();
    const isMac = plataformS.includes('mac');

    if (isMac) {

        $('body').addClass('render-in-mac');

    }
}

function fix_cms_table_for_mobile() {
    if ($('body').find('table.cms-table-fixed').length>0) {
        $('body').find('table.cms-table-fixed').each(function () {
            var table = $(this);
            if (table.find("thead th").length > 0) {
                var labelHeader = [];
                table.find("thead th").each(function () {
                    labelHeader.push($(this).text());
                })
                table.find("tbody tr").each(function(){
                    var row = $(this);
                    var count = 0;
                    row.find("td").each(function () {
                        if (count < labelHeader.length) {
                            var label = labelHeader[count];
                            count++;
                            $(this).attr('data-th', label);
                        }
                        
                    });

                });
            }
        });
    }
}
    
function accesibility_for_dropdown_menu() {
    if ($('body').hasClass('desktop')) {
        $('.dropdown-menu, .mixed-menu').each(function () {
            var currentMenu = $(this).find('ul.level-1');
            if (currentMenu !== undefined && currentMenu !== null) {
                currentMenu.find('li').on('keyup', function (e) {
                    if (e.which === 9 || e.which === 39 || e.which === 37) {
                        var ariaExpanded = $(e.target).attr('aria-expanded');
                        if (ariaExpanded !== null && ariaExpanded !== undefined) {
                            $(e.target).attr('aria-expanded', true);
                        }

                        $(this).trigger('mouseover');
                    }

                });
                currentMenu.find('li').on('keydown', function (e) {
                    if (e.which === 13) {
                        if (e.target !== undefined && e.target !== null) {
                            var href = $(e.target).attr('href');
                            if (href !== undefined && href !== null && href !== '#') {
                                
                                window.location.href = href;
                            }
                        }
                        
                    } else if (e.which === 32) {
                        if (e.target !== undefined && e.target !== null) {
                            var href = $(e.target).attr('href');
                            if (href !== undefined && href !== null && href !== '#') {
                                window.location.href = href;
                            }
                        }
                    }
                });
            }
        });
        $(document).on('hide.zf.dropdownMenu', function (ev, $el) {

            if ($el !== undefined && $el !== null && $el[0] !== null && $($el[0]) !== null && $($el[0]) !== undefined) {
                $($el[0]).find('a:first').attr('aria-expanded', false);
            }
        });
    }
}


function return_desktop_event() {
    $('body.backend-page').on('click', 'a.return_desktop_view', function () {
        sessionStorage.removeItem("lastDisplayViewMode");
    });
}
function fix_sidebar_ut0() {
    if ($('body').hasClass('default-type') && $('body').hasClass('desktop') && $('body').hasClass('new-template-system') && $('body').hasClass('internal-page')) {
        if ($('.third-level-menu').length > 0 && $('.third-level-menu').hasClass('hide-custom')) {

            var parentMenu = $('.third-level-menu').parents('.region-selectable');

            var thereisBlock = false;
            if (parentMenu.find('.container-block-section').length > 1) {
                thereisBlock = true;
            }

            if (thereisBlock === false) {
                var parentContent = $('.content-page').parents('.region-container');
                var parentContentR = $('.content-page').parents('.region-selectable');
                if (parentContentR.attr('id') != parentMenu.attr('id')) {
                    parentMenu.addClass('hide-custom');
                    parentContent.css('width', '100%');
                }

            }
        }
    }
}

function apply_top_for_fixed_regions() {
    // Calculate height of regions with class "fixed"
    var initialTop = 0;
    var iterator = 0;
    var nextTop = 0;
    var height = 0;
    var sumheight = 0;
    var backgroundBody = $("body").css("background-color");
    var backgroundBlock = "";


    if ($("body.backend-page").length > 0)
        return;

    var hasLanguages = false;
    if ($("body section#regions-container .region-container.fixed").length > 0) {

        if ($("body .languages ul.dropdown.menu li.is-dropdown-submenu-parent ul.submenu li").length > 0) {
            hasLanguages = true;
        }
        if (hasLanguages === true) {
            initialTop = 30;
            $("body .languages").css("position", "fixed");
            $("body .languages").css("top", "0");
            $("body .languages").css("left", "0");
            $("body .languages").css("right", "0");
            $("body .languages").css("z-index", "999999");
            //if (background !== undefined && background !== null && background !== "") {
            //    $("body .languages").css("background-color", background);
            //}
        }



        $("body section#regions-container .region-container.fixed").each(function () {
            if (iterator > 0) {
                nextTop = initialTop + height;
                initialTop = height - 1;
                $(this).css("top", nextTop + "px");
            } else {
                if (initialTop > 0) {
                    $(this).css("top", initialTop + "px");
                    backgroundBlock = $(this).find('.fixed-height').css("background-color");
                }
            }
            height = $(this).height();
            sumheight += height;
            iterator++;
        });
        if (sumheight > 0) {
            if (hasLanguages === true) {
                $("body section#regions-container").css("margin-top", sumheight + 30 + "px");
            } else {
                $("body section#regions-container").css("margin-top", sumheight + "px");
            }
        }
    }

    if (hasLanguages === true) {
        if (backgroundBlock !== undefined && backgroundBlock !== null && backgroundBlock !== "") {
            $("body .languages").css("background-color", backgroundBlock);
        } else if (backgroundBody !== undefined && backgroundBody !== null && backgroundBody !== "") {
            $("body .languages").css("background-color", backgroundBody);
        }
    }
}

function apply_fix_for_regions_tablet_and_mobile() {
    if ($(window).width() < 1024 || $("body").hasClass('tablet') || $("body").hasClass('mobile')) {

        let isBackend = $('body').hasClass('backend-page') ? true : false;

        $('body').find('.main-container .regions-row .region-container .container').each(function () {
            let region = $(this);
            if (region.hasClass('region-selectable')) {
                if (!region.hasClass('multimedia-video')) {
                    if (region.find('.container-block-section:visible').length === 0) {
                        if (isBackend === false)
                            region.css('display', 'none');
                    }
                }
            } else {
                if (!region.hasClass('multimedia-video')) {
                    if (region.find('.region-selectable .container-block-section:visible').length === 0) {
                        if (isBackend === false)
                            region.css('display', 'none');
                    }
                }
            }
        });
    }
}

function apply_menu_tablet_and_mobile() {
    if ($(window).width() < 1024 || $("body").hasClass('tablet') || $("body").hasClass('mobile')) {

        // Apply mmenu effect in mobile and tablet
        var has_items = false;
        if ($("body .main-menu nav > ul").first().length !== 0) {
            var menu_mobile = $("body .main-menu nav > ul").first().clone();
            //cleaning menu styles
            menu_mobile.removeClass("dropdown");
            menu_mobile.find("ul").removeClass();
            menu_mobile.find("li").removeClass("is-dropdown-submenu-parent");
            menu_mobile.find("li").removeClass("opens-right");
            $("#mobile_menu").append(menu_mobile);
            has_items = true;
            //verifying other menus 
            var min_order = 9999999;
            var max_order = -1;
            $('.include-mobile').each(function () {
                var mobile_order = $(this).attr('data-mobile-order');
                if (mobile_order < min_order)
                    min_order = mobile_order;
                if (mobile_order > max_order)
                    max_order = mobile_order;
            });
            var itemTitle = '';
            for (var i = min_order; i <= max_order; i++) {
                var selector = '.include-mobile.order-menu-' + i;
                if ($(selector).length > 0) {

                    $(selector).each(function () {

                        var menuItem = $(this).find('ul.level-1').clone();
                        menuItem.removeClass("dropdown");
                        menuItem.find("ul").removeClass();
                        menuItem.find("li").removeClass("is-dropdown-submenu-parent");
                        menuItem.find("li").removeClass("opens-right");

                        menuTitle = ' ';
                        itemTitle = '<li><span class="title"><strong>' + menuTitle + '</strong></span></li>';
                        $("#mobile_menu").find('ul.level-1').append(itemTitle);


                        if ($(this).find('.title-cms-block-menu').length > 0) {

                            //Add the menu
                            var menuTitle = $(this).find('.title-cms-block-menu').text();

                            itemTitle = '<li><span class="title"><strong>' + menuTitle + '</strong></span></li>';
                            $("#mobile_menu").find('ul.level-1').append(itemTitle);
                        }

                        if ($(this).hasClass('vertical-menu') || $(this).hasClass('horizontal-menu')) {
                            $("#mobile_menu").find('ul.level-1').append(menuItem.find('li'));
                        } else if ($(this).hasClass('mixed-menu') || $(this).hasClass('dropdown-menu')) {
                            $("#mobile_menu").find('ul.level-1').append(menuItem.find('>li'));
                        }


                        var id = $(this).attr('data-block-id');
                        $('#container-block-' + id).hide();
                        has_items = true;




                    });
                }
            }
            //review if is logged 
            menuTitle = ' ';
            itemTitle = '<li><span class="title"><strong>' + menuTitle + '</strong></span></li>';
            $("#mobile_menu").find('ul.level-1').append(itemTitle);
            if ($("body.logged").length > 0) {
                if ($("body.logged p.login-info a.my-account-link").length > 0) {
                    var account_link = $('<li/>').append($("body.logged p.login-info a.my-account-link").clone());
                    $("#mobile_menu").find('ul.level-1').append(account_link);
                }
                if ($("body.logged p.login-info a.return_to_partner_portal").length > 0) {
                    var sp_link = $('<li/>').append($("body.logged p.login-info a.return_to_partner_portal").clone());
                    $("#mobile_menu").find('ul.level-1').append(sp_link);
                }
                if ($("body.logged p.login-info a.logout-link").length > 0) {
                    var logout_link = $('<li/>').append($("body.logged p.login-info a.logout-link").clone());
                    $("#mobile_menu").find('ul.level-1').append(logout_link);
                }
            } else {
                if ($("body .login-block.login-section a.register-item").length > 0) {
                    var register_link = $('<li/>').append($("body .login-block.login-section a.register-item").clone());
                    $("#mobile_menu").find('ul.level-1').append(register_link);
                }

                if ($("body .login-block.login-section a.login_button").length > 0) {
                    var login_button = $('<li/>').append($("body .login-block.login-section a.login_button").clone());
                    $("#mobile_menu").find('ul.level-1').append(login_button);
                }
            }
        }


        if (has_items === true) {
            $("#mobile_menu").mmenu({
                searchfield: false,
                counters: false,
                navbar: {
                    title: 'Menu'
                },

                navbars: [
                    {
                        position: 'top',
                        content: ['searchfield']
                    }, {
                        position: 'top',
                        content: [
                            'prev',
                            'title',
                            'close'
                        ]
                    }
                ]

            });
            $('.hamburguer').removeClass('is-hidden');
            var API = $("#mobile_menu").data("mmenu");

            $(".hamburguer").on("click", function () {
                API.open();
            });
            $("#mobile_menu").find("a.login_button").on('click', function () {
                API.close();
            });




            var contentRegions = $("#regions-container");
            $("#mm-0").append(contentRegions);
            setTimeout(function () {
                //Close modal
                $(".mm-close").trigger("click");
                fix_mobile_links();
            }, 1000);

            //Add validation to jump slide to current slide
            // open_slide_active_mmenu();
        }
        else {
            $('.hamburguer').addClass('is-hidden');
        }
        if ($("body").hasClass('tablet')) {
            $('.hamburguer').show();
            $("div.main-menu").addClass('is-hidden');
        }

        apply_fix_for_regions_tablet_and_mobile();

    } else {
        $("body").append('<div id="#mobile_menu" class="hide"></div>');
    }

    $(window).resize(function () {
        if ($(window).width() < 1024) {
            if ($(".mm-menu").length === 0 && has_items === true) {
                $("#mobile_menu").mmenu({
                    searchfield: true,
                    counters: false,
                    navbar: {
                        title: 'Menu'
                    },

                    navbars: [
                        {
                            position: 'top',
                            content: ['searchfield']
                        }, {
                            position: 'top',
                            content: [
                                'prev',
                                'title',
                                'close'
                            ]
                        }
                    ]

                });
                $('.hamburguer').removeClass('is-hidden');
                var API = $("#mobile_menu").data("mmenu");
                $(".hamburguer").on("click", function () {
                    API.open();
                });
                var contentRegions = $("#regions-container");
                $("#mm-0").append(contentRegions);
            }
        } else {
            $(".mm-close").trigger("click");
        }
    });



}



function fix_second_level_menu() {

    var pathname = window.location.pathname;
    var specialCharacters = [';', '?', ':', '@', '=', '&'];
    //Fix to specialCharacters
    specialCharacters.forEach(function (character) {
        pathname = pathname.replaceAll(character, '');
    });

    pathname = pathname.toLowerCase();

    if ($("body.new-template-system.desktop").length > 0) {
        if ($(".menu-block").length > 0) {
            $(".menu-block ul li a").each(function () {
                var chunks = pathname.split('/');
                if ($(this).attr('href') !== null && $(this).attr('href') !== undefined) {
                    var pathlink = $(this).attr('href').toLowerCase();
                    for (var i = 2; i <= chunks.length; i++) {
                        var tmpPath = chunks.slice(0, i).join('/');
                        if (pathlink !== '?requiredlogin=1') {
                            if (tmpPath.match('^' + pathlink + '$') !== null) {
                                $(this).parents("li").addClass("active");
                            }

                        }
                    }

                }

            });
        }

    }
}

function fix_third_level_menu() {
    if ($(".horizontal-menu").length > 0) {
        var horizontalMenu = $(".horizontal-menu").first();
        var item_active = horizontalMenu.find("ul.level-1 > li.active");
        if (item_active.length > 0) {
            if (item_active.find("ul").length === 0) {
                item_active.addClass("no-after");
            }
            var sub_menu = item_active.children("ul").first().clone();
            if (sub_menu.length > 0) {
                $(".visible_zone").html(sub_menu);
            }
        }
        if (horizontalMenu.find("ul li.active ul.level-2 li.active ul.level-3").length > 0) {
            var internal_menu = horizontalMenu.find("ul li.active ul.level-2 li.active ul.level-3").html();
            if ($(".third-level-menu").length > 0) {
                $(".third-level-menu").find('ul.level-1').empty();
                $(".third-level-menu").find('ul.level-1').append(internal_menu);
                $(".third-level-menu").removeClass('hide-custom');
                $(".third-level-menu").removeClass('placeholder');
            }
        } else if ($('body').hasClass('backend-page')) {
            $(".third-level-menu").addClass('placeholder');
            $(".third-level-menu").removeClass('hide-custom');
        } else {
            $(".third-level-menu").hide();
        }
    }
    else if ($('body').hasClass('backend-page')) {
        $(".third-level-menu").addClass('placeholder');
        $(".third-level-menu").removeClass('hide-custom');
    }
    else {
        $(".third-level-menu").hide();
    }
}

function fix_rss_latest_news() {
    if ($('.latest-news.rssblock').length > 0) {
        var countStories = $('.latest-news.rssblock').find('.content').find('.story').length;

        if (countStories === 3) {
            $('.latest-news.rssblock').find('.container-stories').addClass('less-items');
        }
    }
}

function apply_floating_event_to_regions() {
    if ($('.region-container').find('.container.floatable-region').length > 0) {
        $('.region-container').find('.container.floatable-region').each(function () {
            var self = $(this);
            var parent = self.parents('.region-container').first();
            var percentageFloatable = self.data('value-floatable');

            if (parseInt(percentageFloatable)) {
                parent.css('margin-top', (-parseInt(percentageFloatable)) + 'px');
                self.css("background-color", "transparent");

            }

        });
    }
}

function validateRssBlock() {
    if ($('body.desktop').length > 0 && $('body.default-type').length === 0) {
        if ($('.rssblock').length > 0) {
            var maxheight = 0;
            //procesing titles
            $('.rssblock').each(function () {
                maxheight = 0;
                $(this).find('.content .container-stories .story .title').each(function () {
                    var currentHeight = $(this).innerHeight();
                    if (currentHeight > maxheight)
                        maxheight = currentHeight;

                });
                $(this).find('.content .container-stories .story .title').innerHeight(maxheight + 10);
            })
            maxheight = 0;
            //procesing body

            $('.rssblock').each(function () {
                maxheight = 0;
                $(this).find('.content .container-stories .story .story-body').each(function () {
                    var currentHeight = $(this).innerHeight();
                    if (currentHeight > maxheight)
                        maxheight = currentHeight;

                });
                $(this).find('.content .container-stories .story .story-body').innerHeight(maxheight + 10);
            });
        }
    }
}

function validate_resize_for_responsive() {
    if (window.allow_reload === false)
        return;
    if ($("body.real-device").length > 0) {
        $('#cms_mode_options').hide();
        return;
    }
    //Verify the reload in the current 
    var current_width = $(window).width();
    recalculate_template(current_width, false);

    $(window).resize(function () {
        var current_width = $(window).width();
        recalculate_template(current_width, true);
    });

}

function recalculate_template(current_width, fromResize) {
    if ($('body').hasClass('partner-portal')) {
        return;
    }
    var items = window.location.href.split('?');
    if (items[1] !== null && items[1] !== undefined && items[1] !== '') {
        var items2 = items[1].split('&');
        if (items2[1] !== null && items2[1] !== undefined && items2[1] !== '') {
            if (items2[1] === 'force=true' && fromResize === false) {
                return;
            }
        }
    } else if ($('body.layout-preview').length > 0) {
        return;
    }

    //var urlParams = new URLSearchParams(window.location.search);
    let applyResize = false;
    var hasParameter = false;
    if ($.urlParamGet('layoutViewMode')) {
        hasParameter = true;
    }


    var currentparameters = document.location.search;
    if (currentparameters === null || currentparameters === '' || currentparameters === undefined) {
        currentparameters = "?";

    } else if (hasParameter === false) {
        currentparameters = currentparameters + '&';
    }

    if (current_width < 1024) {
        $("#cms_mode_options").hide();
    } else {
        $("#cms_mode_options").show();
    }

    if (hasParameter === false) {
        if (current_width < 1024 && current_width > 641 && ($('body.desktop').length > 0 || $('body.mobile').length > 0)) {
            applyResize = true;
            //window.location = items[0] + currentparameters + "layoutViewMode=tablet";
            currentparameters += "layoutViewMode=tablet";
        } else if (current_width <= 641 && ($('body.desktop').length > 0 || $('body.tablet').length > 0)) {
            applyResize = true;
            //window.location = items[0] + currentparameters + "layoutViewMode=mobile";
            currentparameters += "layoutViewMode=mobile";
        } else if (current_width >= 1024 && ($('body.mobile').length > 0 || $('body.tablet').length > 0)) {
            applyResize = true;
            //window.location = items[0] + currentparameters;
        }

    } else {
        var currentValue = $.urlParamGet('layoutViewMode');
        var currentToken = "layoutViewMode=" + currentValue;
        var newValue = '';
        if (current_width < 1024 && current_width > 641 && ($('body.desktop').length > 0 || $('body.mobile').length > 0)) {
            newValue = "tablet";
        } else if (current_width <= 641 && ($('body.desktop').length > 0 || $('body.tablet').length > 0)) {
            newValue = "mobile";
        } else if (current_width >= 1024 && ($('body.mobile').length > 0 || $('body.tablet').length > 0)) {
            newValue = "desktop";
        }

        if (currentValue === newValue) 
            return;
        else {
            if (newValue === 'desktop') {
                if (currentparameters.indexOf(currentToken + '&') === -1) {
                    currentparameters = currentparameters.replace(currentToken, '');
                    applyResize = true;
                    //window.location = items[0] + currentparameters;
                } else {
                    currentparameters = currentparameters.replace(currentToken + '&', '');
                    //window.location = items[0] + currentparameters;
                }
            } else if (newValue !== '') {
                var newToken = "layoutViewMode=" + newValue;
                currentparameters = currentparameters.replace(currentToken, newToken);
                applyResize = true;
                //window.location = items[0] + currentparameters;
            }

            
        }
    }

    if (applyResize === true) {
        // review if in the current page there are custom forms
        if ($($('body form[id^="form-custom-"].form-component').length > 0)) {

            backup_form_builders();
            
            window.location = items[0] + currentparameters;
        } else
            window.location = items[0] + currentparameters;
    }

    validate_links_mobile_tablet();
}

function backup_form_builders() {
    try {
        $('body form[id^="form-custom-"].form-component').each(function () {
            let formId = $(this).prop("id");
            let formData = $('#' + formId + ' :not("input[type=hidden]:not(.native-hidden-field)")').serialize()
            let sessionKey = 'resize-' + formId;
            let object = { id: formId, data: formData, created: Date.now() };
            let value = JSON.stringify(object);

            sessionStorage.setItem(sessionKey, value);

        });
    } catch (e) {
        window.console && console.error(e)
    }
}


function fix_image_opp_detail() {
    var region = null;
    var image = null;
    var html = null;
    if ($('body.volunteer-opportunity-detail-page').length > 0) {
        if ($('#regionSelectedImageMobile').length > 0 && $('#opportunityImageMobile').length > 0 && $('body.mobile').length > 0) {
            region = $('#regionSelectedImageMobile').val();
            image = $('#opportunityImageMobile').val();
            if (region.trim() !== '' && image.trim() !== '' && region.trim() !== '0') {
                html = createMarkupForImage(image.trim());
                $('body').find('.region-container-' + region.trim()).append(html);
                $('body').find('.region-container-' + region.trim()).addClass('opportunity-detail-background');

            }

        }
        if ($('#regionSelectedImageTablet').length > 0 && $('#opportunityImageTablet').length > 0 && $('body.tablet').length > 0) {
            region = $('#regionSelectedImageTablet').val();
            image = $('#opportunityImageTablet').val();
            if (region.trim() !== '' && image.trim() !== '' && region.trim() !== '0') {
                html = createMarkupForImage(image.trim());
                $('body').find('.region-container-' + region.trim()).append(html);
                $('body').find('.region-container-' + region.trim()).addClass('opportunity-detail-background');

            }

        }
        if ($('#regionSelectedForImage').length > 0 && $('#opportunityImage').length > 0 && $('body.desktop').length > 0) {
            region = $('#regionSelectedForImage').val();
            image = $('#opportunityImage').val();
            if (region.trim() !== '' && image.trim() !== '' && region.trim() !== '0') {
                html = createMarkupForImage(image.trim());
                $('body').find('.region-container-' + region.trim()).append(html);
                $('body').find('.region-container-' + region.trim()).addClass('opportunity-detail-background');
            } else if (region.trim() !== '') {
                if ($('body').find('.region-container-' + region.trim() + ' .blockContainer').length === 0) {
                    $('body').find('.region-container-' + region.trim()).css('height', 'initial');
                }
            }
        }
    }
}

function createMarkupForImage(imageSrc) {
    var html = '<div class="image-block blockContainer">' +
        '<div class="image_placeholder">' +
        '<img src="' + imageSrc + '" width="100%" class="loaded" />' +
        '</div>' +
        '</div>';
    return html;
}

function fix_horizontal_menu() {
    if ($('.menu-block-wrapper.horizontal-menu').length > 0) {
        $('.menu-block-wrapper.horizontal-menu').each(function () {
            if ($(this).find('ul.level-1>li.active').length > 0) {
                if ($(this).find('ul.level-1>li.active ul.level-2').length == 0) {
                    $(this).addClass('menu-has-no-children');
                }
            }
        });
    }
}

function fix_mobile_links() {
    if ($('body.mobile').length > 0 || $('body.tablet').length > 0) {
        $('#mobile_menu').find('a').each(function () {
            var href = $(this).attr('href')
            if (href === '#') {
                $(this).removeAttr('href');
            }
        });
    }
}

function validate_message_in_savedsearches() {
    if (($('body.mobile').length > 0 || $('body.tablet').length > 0) && $('body.saved-searches-page').length > 0) {
        if ($('.tablet-saved-search table.mobile-styles tbody tr').length > 0) {
            $('p.message_savedsearches').addClass('hide');
        } else {
            $('p.message_savedsearches').removeClass('hide');
        }
    }
}

function validate_links_mobile_tablet() {
    if ($('body.backend-page').length > 0) {
        $('a.view_tablet_order').on('click', function () {
            sessionStorage.setItem("lastDisplayViewMode", "?layoutViewMode=tablet&force=true");
        });
        $('a.view_mobile_order').on('click', function () {
            sessionStorage.setItem("lastDisplayViewMode", "?layoutViewMode=mobile&force=true");
        });
        
        var lastDisplayMode = sessionStorage.getItem("lastDisplayViewMode");
        if (lastDisplayMode !== null && lastDisplayMode !== undefined && lastDisplayMode !== '') {
            hasParameter = false;
            if ($.urlParamGet('layoutViewMode')) {
                hasParameter = true;
            }

            if (hasParameter === false) {
                var items = window.location.href.split('?');
                if (items[0] !== null && items[0] !== undefined && items[0] !== '') {
                    window.location.href = items[0] + lastDisplayMode;
                }
            }
        }
    }
    else {
        sessionStorage.removeItem("lastDisplayViewMode");
    }
}

function page_space_validation() {
    $(window).resize(function (event) {
        calculate_content_h();
    });
    setTimeout(function () {
        calculate_content_h();
    }, 3000);

}

function calculate_content_h() {
    var w_h = $(window).height();

    var h_1 = $('#regions-container').height();

    if (w_h > h_1) {
        var cont_h = w_h - h_1;
        $('html body div#main_content').css('min-height', cont_h);
    }
}

function tab_behaviors_in_menu() {
    $('ul.dropdown.menu').on('keydown', 'a[role="menuitem"]', function (e) {
        const $currentItem = $(this); 
        const $submenuParent = $currentItem.closest('.is-dropdown-submenu-parent'); 
        const $level1Menu = $currentItem.parents('li.item-parent-level-1').find('a[role="menuitem"]').first(); 
        switch (e.key) {
            case 'Escape': 
                if ($submenuParent.length) {
                    const $currentLevel = $currentItem.closest('ul'); 
                    if ($currentLevel.hasClass('level-3') || $currentLevel.hasClass('level-2')) {
                        $level1Menu.focus();
                    } else {
                         $submenuParent.children('a[role="menuitem"]').focus();
                    }
                    e.preventDefault();
                }
                break;

            default:
                break;
        }
    });
}

function handleEscapeKey($currentItem) {
    const $currentMenu = $currentItem.closest('ul');
    const currentLevel = getMenuLevel($currentMenu);
    if (currentLevel > 1) {
        const $parentMenu = $currentMenu.closest('li.is-dropdown-submenu-parent').closest('ul');
        const $parentItem = $currentMenu.closest('li.is-dropdown-submenu-parent').children('a[role="menuitem"]');
        console.log($parentItem);
        if ($parentItem.length) {
            $parentItem.focus(); 
        }
    }
}

function getMenuLevel($menu) {
    if ($menu.hasClass('level-1')) {
        return 1;
    } else if ($menu.hasClass('level-2')) {
        return 2;
    } else if ($menu.hasClass('level-3')) {
        return 3;
    } else if ($menu.hasClass('level-4')) {
        return 4;
    }
    return 0; 
}
;
var dataPerRegionList = [];


$(document).ready(function () {
    dataPerRegionList = [];
    set_info_sharing_portal_plus_page();
    master_order_load_modal();
});

function populate_regions_from_layout(regions, selector) {

    var bodySelector = $(selector).find('.content-blocks-section .block-content-list');
    bodySelector.empty();

    dataPerRegionList = [];

    regions.forEach(function (value, index) {
        var itemHtml = '<div class="region-section" data-region-id="' + value.id + '" data-stack-content="vertical">';
        itemHtml += '<h3 class="region-title">Region: ' + value.name + '</h3>';
        itemHtml += '<div class="region-container region-selectable" data-status-region="none">';

        value.regionBlocks.forEach(function (rb, index) {
            var classBlock = 'normal-block';
            if (rb.isARS === true)
                classBlock = 'ars-block';
            else if (rb.blockType === "CONTENTPAGE")
                classBlock = 'contentpage-block';
            var itemRow = '<div class="block-section block-container ' + classBlock + '" data-block-id="' + rb.blockID + '" data-block-type="' + rb.blockType + '" data-region-block-id="' + rb.regionblockID + '" data-block-weight="' + rb.blockWeight + '">';
            itemRow += '<h4 class="block-title">' + rb.blockName + '- (' + rb.blockTypeDisplay + ')</h4>';
            itemRow += '<span class="move"></span>';
            itemRow += '</div >';

            itemHtml += itemRow;

            var regionInfo = {
                originalRegionID: value.id,
                currentRegionID: value.id,
                blockID: rb.blockID,
                blockType: rb.blockType,
                regionBlockID: rb.regionblockID,
                originalWeigth: rb.blockWeight,
                currentWeigth: rb.blockWeight,
            };

            dataPerRegionList.push(regionInfo);
        });

        itemHtml += '</div>';
        itemHtml += '</div>';

        bodySelector.append(itemHtml);
        
    });
    initialize_dragula_for_order(bodySelector);
}

function initialize_dragula_for_order(selector) {
    var containers = [];
    selector.find('.region-section .region-container').each(function () {
        containers.push($(this)[0]);
    });

    var block_id = 0;
    var source_region_id = 0;
    var target_region_id = 0;
    var region_block_id = 0;

    var drake_order = dragula({
        containers: containers,
        revertOnSpill: true,
        moves: function (el, container, handle) {
            var containsMoves = handle.classList.contains('move');
            return containsMoves;
        },
        accepts: function (el, target, source, sibling) {
            var valid = true;
            /*var status = $(target).attr("data-status-region");
            if ($(target).hasClass('region-selectable') && status !== "full") {
                valid = true;
            }*/
            return valid;
        }
    }).on('drag', function (el) {
        source_region_id = $(el).attr('data-region-block-id');

    }).on('drop', function (el) {
        block_id = $(el).attr('data-block-id');
        region_block_id = $(el).attr('data-region-block-id');
        target_region_id = $(el).parents('.region-section').attr('data-region-id');
        update_region_blocks(target_region_id, block_id, region_block_id);
    }).on('dragend', function (el) {

    });

    var scroll = autoScroll([window], {
        margin: 50,
        autoScroll: function () {
            return this.down && drake_order.dragging;
        },
        maxSpeed: 15,
    })
}

function update_region_blocks(regionID, blockID, regionBlockID) {
    var isThereChanges = false;
    var indexToUpdate = -1;
    $('.processing_screen').removeClass('hide-custom');
    dataPerRegionList.forEach(function (value, index) {
        if (value.blockID == blockID && value.regionBlockID == regionBlockID) {
            indexToUpdate = index;
        }
    });

    if (indexToUpdate !== -1) {
        dataPerRegionList[indexToUpdate].currentRegionID = regionID;
    }

    var countOrder = 0;
    dataPerRegionList.forEach(function (value, index) {
        if (value.currentRegionID == regionID) {
            dataPerRegionList[index].currentWeigth = countOrder;
            countOrder++;
        }
    });
    $('.processing_screen').addClass('hide-custom');
    $('#master-order-form').find('a.button-save-order').addClass('pending_changes');
}

function master_order_load_modal() {
    if ($('body.page-open-master-order-module').length > 0) {
        var selector = "#master-order-form";
        $(document).ready(function () {
            var urlSite = (typeof window.sharingPortalPlusPath !== 'undefined') ? window.sharingPortalPlusPath : '/';
            var layoutId = 0;
            $(selector).find('select[name="select_layout"]').on('change', function () {
                var value = $(this).val();
                if (value !== undefined && value !== null && value !== '') {
                    layoutId = value;

                    $.ajax({
                        url: urlSite + "AdvancedCMS/GetBlocksPerLayout",
                        data: { layoutid: layoutId },
                        method: "POST",
                        beforeSend: function () {
                            $('.processing_screen').removeClass('hide-custom');
                        }
                    }).done(function (data) {
                        var jsonResult = JSON.parse(data);
                        if (jsonResult.code === 200 || jsonResult.code === '200') {
                            if (jsonResult.regions !== null && jsonResult.regions !== undefined) {
                                populate_regions_from_layout(jsonResult.regions, selector);
                            }
                        } else {
                            Swal.fire({
                                text: jsonResult.message,
                                icon: "error",
                                showCancelButton: true,
                                confirmButtonColor: "#ff0000",
                                confirmButtonText: window.translation.ok,
                                cancelButtonText: window.translation.cancel,
                                closeOnConfirm: true

                            });
                        }
                        $('.processing_screen').addClass('hide-custom');
                    });
                }
            });

            $(selector).find('a.button-save-order').on('click', function (e) {
                e.preventDefault();

                if ($(this).hasClass('pending_changes')) {
                    Swal.fire({
                        text: 'Are you sure that save the Order of these Blocks? This change will be applied for all pages of this Layout',
                        icon: "warning",
                        showCancelButton: true,
                        confirmButtonColor: "#ff0000",
                        confirmButtonText: 'Yes',
                        cancelButtonText: 'No',
                        closeOnConfirm: false

                    }).then(function (result) {
                        if (result.isConfirmed) {

                            var dataToSend = {
                                layoutid: layoutId,
                                regionData: dataPerRegionList
                            };


                            $.ajax({
                                url: urlSite + "AdvancedCMS/ProcessMasterOrder",
                                data: dataToSend,
                                method: "POST",
                            }).done(function (data) {
                                var jsonResult = JSON.parse(data);
                                if (jsonResult.code === '200' || jsonResult.code === 200) {

                                } else {
                                    Swal.fire({
                                        text: jsonResult.message,
                                        icon: "error",
                                        showCancelButton: true,
                                        confirmButtonColor: "#ff0000",
                                        confirmButtonText: window.translation.ok,
                                        cancelButtonText: window.translation.cancel,
                                        closeOnConfirm: true

                                    })
                                }
                            });
                        }
                    });

                }


                return false;
            });
        });


    }
};
